kubernetes обновляет секреты с помощью императивных команд

Я создаю секреты кубернетов, используя следующую команду

kubectl create secret generic test-secret --save-config --dry-run=client --from-literal=a=data1 --from-literal=a=data2 -o yaml | kubectl apply -f -

Теперь мне нужно добавить новые литералы с помощью императивной команды kubectl, как это сделать ?? скажите, например:

kubectl apply secret generic test-secret  --from-literal=c=data3 -o yaml | kubectl apply -f - 

но дал ошибку ниже

Ошибка: неизвестный флаг: --from-literal См. 'Kubectl apply --help' для использования. ошибка: объекты не переданы для применения

Любая быстрая помощь приветствуется


person magic    schedule 28.03.2021    source источник


Ответы (2)


добавить новые литералы с помощью императивной команды kubectl

При работе с императивными командами это обычно означает, что вы не сохраняете изменение за пределами кластера. Вы можете редактировать секрет прямо в кластере:

kubectl edit secret test-secret

Но если вы хотите автоматизировать добавление, вы, скорее всего, сохраните свой секрет в другом месте, прежде чем применять его к кластеру. Как это сделать, зависит от того, как вы управляете Секретами. Один из способов сделать это - добавить его, например, в Vault, а затем его автоматическая инъекция. При работе в автоматическом режиме легче применять неизменяемые секреты и создавать новые, а не изменять, потому что вам обычно необходимо повторно развернуть приложение, чтобы убедиться, что оно использует новые. Использование Kustomize с secretGenerator может быть хорошим вариантом. если вы работаете с неизменными Секретами.

person Jonas    schedule 28.03.2021
comment
Спасибо, Джонас, я планирую использовать запечатанные секреты ... github.com/bitnami-labs/sealed -секреты. Придумывает способ автоматизировать литералы к существующим секретам. - person magic; 28.03.2021
comment
У них есть документация по github.com/bitnami-labs/sealed-secrets# обновить существующие секреты - person Jonas; 28.03.2021
comment
да - опция слияния делает свое дело .. Спасибо - person magic; 28.03.2021

Вы можете использовать команду kubectl patch imeperative

пример

    root@controlplane:~# kubectl patch secrets test-secret --type='json' -p='[{"op" : "replace" ,"path" : "/data/newkey" ,"value" : "bmV3VmFsCg=="}]'
    secret/test-secret patched
    root@controlplane:~# kubectl describe secrets test-secret 
    Name:         test-secret
    Namespace:    default
    Labels:       <none>
    Annotations:  <none>

    Type:  Opaque

    Data
    ====
    a:       5 bytes
    b:       5 bytes
    newkey:  7 bytes

вам необходимо передать закодированное значение, чтобы закодировать / декодировать новое значение ключа, вы можете использовать команду ниже

root@controlplane:~# echo "newValue" | base64
bmV3VmFsdWUK
root@controlplane:~# echo bmV3VmFsdWUK | base64 -d
newValue

другой вариант - использовать kubectl edit, но если вы автоматизируете свой код, вы не можете использовать параметр редактирования

kubectl edit secret test-secret
person Girdhar Singh Rathore    schedule 28.03.2021