api - 从golang中持久卷的OpenShift API获取和修改yaml文件

标签 api go kubernetes openshift

我正在尝试通过 Go(lang)< 中的 API 修改 OpenShift持久卷yaml 文件,我有以下内容

    pv, err := clientset.CoreV1().PersistentVolumes().List(metav1.ListOptions{})


    for _, persV := range pv.Items {
        // Check status persistent volume
        pvStatus, err := clientset.CoreV1().PersistentVolumes().Get(persV.Name, metav1.GetOptions{})
        if err != nil {
            panic(err.Error())
        }

        patch := []byte(`{"spec":{"template":{"spec":{"containers":[{"persistentVolumeReclaimPolicy":"Retain"}]}}}}`)
        a := fmt.Sprintf("%s", patch)
        fmt.Println(a)
        _, err = clientset.CoreV1().PersistentVolumes().Patch(persV.Name, types.StrategicMergePatchType, patch)
}

我的持久卷 yaml

apiVersion: v1
kind: PersistentVolume
metadata:
...
...
...
persistentVolumeReclaimPolicy: Retain
status:
  phase: Released

如何获取 yaml 文件并根据实际的 pvStatus 修改它? 我想将 persistentVolumeReclaimPolicy: Retain 更改为 persistentVolumeReclaimPolicy: Delete

最佳答案

基本上我的错误是构造 patch []byte 值,脚本应该如下所示

 pv, err := clientset.CoreV1().PersistentVolumes().List(metav1.ListOptions{})


    for _, persV := range pv.Items {
        // Check status persistent volume
        pvStatus, err := clientset.CoreV1().PersistentVolumes().Get(persV.Name, metav1.GetOptions{})
        if err != nil {
            panic(err.Error())
        }

        patch := []byte(`{"spec": {"persistentVolumeReclaimPolicy": "Delete"}}`)
        _, err = clientset.CoreV1().PersistentVolumes().Patch(persV.Name, types.StrategicMergePatchType, patch)

关于api - 从golang中持久卷的OpenShift API获取和修改yaml文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55222830/

相关文章:

javascript - API:使构造函数在 JavaScript 中无需括号即可链接

api - Shopify API : Get Orders In Shopify by Date

api - 休息API : What HTTP return code for no data found?

go - 为什么这些 goroutines 不阻塞?

go - 在Kubernetes中自定义自动缩放策略

api - dart-如何使用http.post实时获取数据?

go - 使用 url 包更新 ThingSpeak 上的 channel

string - 将基本数据类型值转换为字符串的推荐方法

elasticsearch - 如何使用 FluentD 和 ELK ElasticStack 配置证书授权

bash - 列出kubernetes节点的内存和cpu