Tengo un cronjob implementado. Necesito actualizar un parámetro (rotar una clave AES) contenido en el secreto. El secreto está cifrado.
¿Es posible actualizar la clave AES sin volver a implementar el trabajo?
Lo que he probado:
"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
Mi siguiente pensamiento es crear un archivo, luego cifrarlo con sops y copiar/pegar el resultado en el editor para "kubectl edit secret jobsecret". Esperaba que hubiera una manera mejor.
Soy desarrollador, no administrador de k8s. Pero no por elección propia. Completando hasta que podamos solucionar el problema "no hay administrador de k8s".
Respuesta1
TL;DR
Puede utilizar $ kubectl patch
para actualizar campos de recursos.
Ejemplo:
kubectl patch secret YOUR_SECRET -p '{"data":{"key":"NEW_BASE64_ENCODED_VALUE"}}'
Puedes encontrar más referencias aquí:
He incluido más explicaciones a continuación.
Ejemplo de "parchear" un secreto:
$ secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: super-secret
data:
username: a3J1aw==
password: b2xkLXBhc3N3b3Jk
¡Una nota al margen!
¡Los valores de claves como
username
ypassword
están codificados en base64!
Para cambiar el valor de password
necesitarás ejecutar:
kubectl patch super-secret -p '{"data":{"password":"bmV3LXBhc3N3b3Jk"}}'
La visualización del secreto recién actualizado debería mostrar (el resultado es solo parcial):
$ kubectl get secret super-secret -o yaml
data:
password: bmV3LXBhc3N3b3Jk
username: a3J1aw==
Le recomiendo encarecidamente que consulte la referencia adicional: