Cómo cambiar un secreto cifrado SOPS sin volver a implementarlo

Cómo cambiar un secreto cifrado SOPS sin volver a implementarlo

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 patchpara 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 usernamey passwordestán codificados en base64!

Para cambiar el valor de passwordnecesitará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:

información relacionada