Eu tenho um cronjob implantado. Preciso atualizar um parâmetro – girar uma chave AES – contido no segredo. O segredo é criptografado.
É possível atualizar a chave AES sem reimplantar o trabalho?
O que eu tentei:
"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
Meu próximo pensamento é criar um arquivo, criptografá-lo com sops e copiar/colar o resultado no editor para "kubectl edit secret jobsecret". Eu esperava que houvesse uma maneira melhor.
Sou um desenvolvedor, não um administrador do K8s. Mas, não por escolha. Preenchendo até que possamos solucionar o problema "sem administrador do k8s".
Responder1
DR
Você pode usar $ kubectl patch
para atualizar campos de recursos.
Exemplo:
kubectl patch secret YOUR_SECRET -p '{"data":{"key":"NEW_BASE64_ENCODED_VALUE"}}'
Você pode encontrar mais referências aqui:
Incluí mais explicações abaixo.
Exemplo de "corrigir" um segredo:
$ secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: super-secret
data:
username: a3J1aw==
password: b2xkLXBhc3N3b3Jk
Uma nota lateral!
Valores de chaves como
username
epassword
são codificados em base64!
Para alterar o valor de password
você precisará executar:
kubectl patch super-secret -p '{"data":{"password":"bmV3LXBhc3N3b3Jk"}}'
A exibição do segredo recém-atualizado deve aparecer (a saída é apenas parcial):
$ kubectl get secret super-secret -o yaml
data:
password: bmV3LXBhc3N3b3Jk
username: a3J1aw==
Eu recomendo fortemente que você verifique a referência adicional: