Как обновить секрет с помощью "kubectl patch --type = 'json'" - PullRequest
1 голос
/ 18 апреля 2019

Я создал секрет вроде этого:

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', без других обходных путей.

1 Ответ

1 голос
/ 18 апреля 2019

Я нашел, как это сделать после того, как прочитал здесь , который направил меня к этой замечательной статье.
Это секрет 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"}]'
...