【问题标题】:How to update secret with "kubectl patch --type='json'"如何使用“kubectl patch --type='json'”更新机密
【发布时间】:2019-09-08 16:56:16
【问题描述】:

我创建了一个这样的秘密:

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' 选项来执行此操作,没有其他解决方法。

【问题讨论】:

    标签: kubernetes kubectl kubernetes-secrets


    【解决方案1】:

    我在阅读 here 后发现了如何做到这一点,该文章将我推荐给 this 很棒的文章。
    这是 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"}]'
    

    【讨论】:

    • 谢谢它有效。注意:如果你通过直接 http 请求 PATCH 秘密,则必须设置 Content-Type: application/json-patch+json。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多