簡體   English   中英

如何使用“kubectl patch --type='json'”更新機密

[英]How to update secret with "kubectl patch --type='json'"

我創建了一個這樣的秘密:

kubectl create secret generic test --from-literal=username=testuser --from-literal=password=12345

我想將用戶名更新為testuser2 ,但我只想使用kubectl patch --type='json'完成。

這就是我嘗試這樣做的方式:

kubectl patch secret test --type='json' -p='[{"data":{"username": "testuser 2"}}]' -v=1  

但我收到了:

“”無效

請記住,我想使用--type='json'選項來完成它,沒有其他解決方法。

在我閱讀這篇文章后,我發現了如何做到這一點。
這是 JSON 的秘密:

{
    "apiVersion": "v1",
    "data": {
        "password": "aWx1dnRlc3Rz",
        "username": "dGVzdHVzZXI="
    },
    "kind": "Secret",
    "metadata": {
        "creationTimestamp": "2019-04-18T11:37:09Z",
        "name": "test",
        "namespace": "default",
        "resourceVersion": "3017",
        "selfLink": "/api/v1/namespaces/default/secrets/test",
        "uid": "4d0a763e-61ce-11e9-92b6-0242ac110015"
    },
    "type": "Opaque"
}

因此,要更新用戶的字段,我需要創建 JSON Patch 格式:

[
    {
        "op" : "replace" ,
        "path" : "/data/username" ,
        "value" : "dGVzdHVzZXIy" # testuser2 in base64
    }
]

請注意,該值應為 base64。

結果是:

kubectl patch secret test --type='json' -p='[{"op" : "replace" ,"path" : "/data/username" ,"value" : "dGVzdHVzZXIy"}]'

這是我為了替換秘密所做的,希望它有所幫助

kubectl patch secret my-secret  --patch="{\"data\": { \"NEW_PASSWORD\": \"$(echo -n mypassword |base64)\" }}" -oyaml

此命令解決了我在 1.24.x 版上的問題:

kubectl patch secret app-sec  --patch="{\"data\": { \"license-id\": \"TEST\" }}" -oyaml

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM