首页 > 解决方案 > 使用 go 客户端修补 pvc

问题描述

我正在尝试使用此界面中的 go library 的 patch 选项更新 pvc 标签。

有没有关于如何使用它的例子?另外如果标签不存在,补丁也会添加标签吗?

我希望在下面的对象中更新/添加 my_label:

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

标签: gokubernetes

解决方案


可以通过以下方式完成:

    persVolC := client.CoreV1().PersistentVolumeClaims("default")

    data := `
    [
      { "op": "add", "path": "/metadata/labels/mylabel", "value": "myvalue" }
    ]
    `
    updatedPvc, err := persVolC.Patch(ctx, "name-of-pvc", types.JSONPatchType, []byte(data), meta_v1.PatchOptions{})
    if err != nil {
        log.Fatal(err)
    }

去游乐场的完整例子。

在这里您可以阅读有关 JSON 补丁标准的信息。


推荐阅读