Skip to content

SealedSecrets

Vinicius Aguiar edited this page May 21, 2024 · 3 revisions

Via Lens

Atualizando secrets

Para mudar o secret de um Agente do Kubernetes é preciso seguir os seguintes passos:

  1. Abrir o Lens: Configurations-> Secrets

Nessa visualização, é possível ver os secrets codificados duplamente com base64. Para visualizar o valor de um secret, basta rodar:

cd utils
python main.py double-decode-base64 [secret_code]
  1. Criar um arquivo secret_0X.yaml

Este arquivo servirá de base para a criação do arquivo criptografado que vamos subir para o agente. Este arquivo não deve ser commitado. O valor de X depende do secret que você quer substituir. Por exemplo, se o arquivo a ser substituido chama-se secret-01_sealed.yaml, então o arquivo temporário que servirá de base para criptografia será chamado secret_01.yaml. O arquivo temporário deve seguir um template similar ao seguinte (ver mais detalhes na documentação):

apiVersion: v1
kind: Secret
metadata:
  name: gcp-credentials
  namespace: prefect-agent-basedosdados-perguntas
data:
  BASEDOSDADOS_CONFIG: XXXXX
  BASEDOSDADOS_CREDENTIALS_PROD: XXXX
  BASEDOSDADOS_CREDENTIALS_STAGING: XXXX
  1. Editar o valor do secret em secret_0X.yaml

Para edição do valor do secret siga os seguintes passos:

  1. Imprimir valor do secret atual no terminal
  2. Edita o valor conforme necessidade
  3. Codifica o novo valor usando base64 duplamente

Use o novo código gerado pelo passo 3 para substituir os valores no template.

  1. Criptografar novo secret via kubeseal
kubeseal -f secret_01.yaml -w secret-01_sealed.yaml -o yaml
  1. Subir alterações no kubernetes
kubectl apply -f secret-01_sealed.yaml

Via kubectl

Visualizando secrets

kubectl get secret <secret-name> -o json | jq '.data | map_values(@base64d)'

Atualizando secrets

Supondo que tenha os seguintes segredos em new-secrets.yaml

apiVersion: bitnami.com/v1alpha1
kind: Secret
metadata:
  creationTimestamp:
  name: my-name
  namespace: my-namespace
data:
  MOVIE_A: KUNG_FU_MANGA
  MOVIE_B: DESPICABLE_ME

Transforme em base64

cat new-secrets.yaml |  yq -y '.data |= map_values(@base64)' > new-encoded-secrets.yaml

Sele e valide via kubeseal

kubeseal --format yaml < new-encoded-secrets.yaml > new-sealed-secrets.yaml
cat new-sealed-secrets.yaml | kubeseal --validate

Aplique as alterações

kubectl apply -f new-sealed-secrets.yaml