-
Notifications
You must be signed in to change notification settings - Fork 0
SealedSecrets
Via Lens
Para mudar o secret de um Agente do Kubernetes é preciso seguir os seguintes passos:
- 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]
- 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
- Editar o valor do secret em
secret_0X.yaml
Para edição do valor do secret siga os seguintes passos:
- Imprimir valor do secret atual no terminal
- Edita o valor conforme necessidade
- Codifica o novo valor usando base64 duplamente
Use o novo código gerado pelo passo 3 para substituir os valores no template.
- Criptografar novo secret via kubeseal
kubeseal -f secret_01.yaml -w secret-01_sealed.yaml -o yaml
- Subir alterações no kubernetes
kubectl apply -f secret-01_sealed.yaml
kubectl get secret <secret-name> -o json | jq '.data | map_values(@base64d)'
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