亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 go 客戶端修補 pvc

使用 go 客戶端修補 pvc

Go
呼如林 2022-08-01 18:45:44
我正在嘗試使用此界面中的go庫的補丁選項更新pvc標簽。有沒有關于如何使用它的例子?另外如果標簽沒有,補丁也會加上標簽嗎?我希望在下面的對象中更新/添加my_label:kind: PersistentVolumeClaimmetadata:  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
查看完整描述

2 回答

?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

可以通過以下方式完成:


    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補丁標準的信息。


查看完整回答
反對 回復 2022-08-01
?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

這是一個示例,我們將在其中循環訪問默認命名空間中的持久卷聲明列表,并且我們將為所有這些項目設置一個特定的標簽。您可以獲得特定的PVC,而不是使用func列出所有my_label: label_testGet(ctx context.Context, name string, opts metav1.GetOptions)


package main


import (

    "context"

    "fmt"

    "log"


    meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"

    "k8s.io/client-go/kubernetes"

    "k8s.io/client-go/tools/clientcmd"

)


func newClient(contextName string) (kubernetes.Interface, error) {

    configOverrides := &clientcmd.ConfigOverrides{CurrentContext: contextName}


    loadingRules := clientcmd.NewDefaultClientConfigLoadingRules()

    config, err := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(loadingRules, configOverrides).ClientConfig()

    if err != nil {

        return nil, err

    }


    return kubernetes.NewForConfig(config)

}


func main() {

    ctx, cancel := context.WithCancel(context.Background())

    defer cancel()


    client, err := newClient("")

    if err != nil {

        log.Fatal(err)

    }


    label := make(map[string]string)

    label["my_label"] = "label_test"

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


    pvcs, err := persVolC.List(ctx, meta_v1.ListOptions{})

    for _, pvc := range pvcs.Items {

        vol := pvc.DeepCopy()

        vol.ObjectMeta.Labels = label

        upd, err := persVolC.Update(ctx, vol, meta_v1.UpdateOptions{})

        if err != nil {

            log.Fatal(err)

        }

        fmt.Println(upd)

    }

}

如果要檢查標簽是否存在并更新它,則可以替換為vol.ObjectMeta.Labels = label


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

    vol.ObjectMeta.Labels["my_label"] = "my_new_label"

}


查看完整回答
反對 回復 2022-08-01
  • 2 回答
  • 0 關注
  • 199 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號