У меня развернут cronjob. Мне нужно обновить параметр -- сменить ключ AES -- содержащийся в секрете. Секрет зашифрован sops.
Можно ли обновить ключ AES без повторного развертывания задания?
Что я пробовал:
"kubectl edit secret jobsecret" -- edits the sops encrypted file but it is still encrypted
"helm edit secrets jobsecret.yaml" -- edits/encrypts the parameter file before deploy
Моя следующая мысль — создать файл, затем зашифровать его с помощью sops и скопировать/вставить результат в редактор для "kubectl edit secret jobsecret". Я надеялся, что есть лучший способ.
Я разработчик, а не админ k8s. Но не по выбору. Заполняю, пока не решим проблему "нет админа k8s".
решение1
TL;DR
Вы можете использовать $ kubectl patch
для обновления полей ресурсов.
Пример:
kubectl patch secret YOUR_SECRET -p '{"data":{"key":"NEW_BASE64_ENCODED_VALUE"}}'
Дополнительную информацию можно найти здесь:
Ниже я привел более подробные пояснения.
Пример «исправления» секрета:
$ secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: super-secret
data:
username: a3J1aw==
password: b2xkLXBhc3N3b3Jk
Примечание!
Значения ключей, таких как
username
и ,password
закодированы в base64!
Чтобы изменить значение password
вам необходимо выполнить:
kubectl patch super-secret -p '{"data":{"password":"bmV3LXBhc3N3b3Jk"}}'
Отображение недавно обновленного секрета должно показать (вывод только частичный):
$ kubectl get secret super-secret -o yaml
data:
password: bmV3LXBhc3N3b3Jk
username: a3J1aw==
Я настоятельно рекомендую вам ознакомиться с дополнительной информацией: