Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用go客户端修补pvc_Go_Kubernetes - Fatal编程技术网

使用go客户端修补pvc

使用go客户端修补pvc,go,kubernetes,Go,Kubernetes,我正在尝试使用go library的补丁选项从更新pvc标签 有没有关于如何使用这个的例子?如果标签不存在,补丁还会添加标签吗 我希望在以下对象中更新/添加我的_标签: kind: PersistentVolumeClaim metadata: annotations: pv.kubernetes.io/bind-completed: "yes" pv.kubernetes.io/bound-by-controller: "yes"

我正在尝试使用go library的补丁选项从更新pvc标签

有没有关于如何使用这个的例子?如果标签不存在,补丁还会添加标签吗

我希望在以下对象中更新/添加我的_标签:

kind: PersistentVolumeClaim
metadata:
  annotations:
    pv.kubernetes.io/bind-completed: "yes"
    pv.kubernetes.io/bound-by-controller: "yes"
    volume.beta.kubernetes.io/storage-class: ""
  creationTimestamp: "2021-01-25T18:53:02Z"
  finalizers:
  - kubernetes.io/pvc-protection
  labels:
      my_label: my_value

在这个示例中,我们将迭代默认名称空间中PersistentVolumeClaims的列表,并将特定标签
my\u label:label\u test
设置为所有这些。您可以使用func
get(ctx-context.context,name-string,opts-metav1.GetOptions)获取特定的PVC,而不是列出所有PVC

如果要检查标签是否存在并对其进行更新,可以使用替换
vol.ObjectMeta.Labels=label

if _, ok := vol.ObjectMeta.Labels["my_label"]; ok {
    vol.ObjectMeta.Labels["my_label"] = "my_new_label"
}

可以通过以下方式进行:

pervolc:=client.CoreV1().PersistentVolumeClaims(“默认”)
数据:=`
[
{“op”:“add”,“path”:“/metadata/labels/mylabel”,“value”:“myvalue”}
]
`
updatedPvc,err:=persVolC.Patch(ctx,“pvc名称”,types.JSONPatchType,[]字节(数据),meta_v1.PatchOptions{})
如果出错!=零{
log.Fatal(错误)
}
完整示例见


您可以阅读有关JSON修补程序标准的信息。

谢谢。我们现在已经在使用更新。我希望使用
补丁
,这样就不必更新整个pvc对象。
if _, ok := vol.ObjectMeta.Labels["my_label"]; ok {
    vol.ObjectMeta.Labels["my_label"] = "my_new_label"
}