使用go客户端修补pvc
我正在尝试使用go library的补丁选项从更新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"
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
设置为所有这些项。您可以使用funcget(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"
}