Secrets
- Secrets não são exatamente seguras. Se usa
base64 -n
para codificar, o que pode ser facilmente "descodificado" usando o comandobase64 -d
; - Secrets não são criptografadas no ETCd;
- Qualquer pessoa que puder criar Deployments/Pods no namespace da secret, vai ser capaz de visualizar os dados.
- Para criar uma secret a partir de um manifesto, é necessário codificar o valor com
echo -n 'string' | base64
. O mesmo não se aplica a forma imperativa - Uma secret pode ser marcado como imutável utilizando
secret.immutable = true
- mudar o default mode
pod.spec.volumes.secret.defaultMode: 0400
- Secrets montadas são automaticamente atualizadas no POD caso sejam modificadas
- As variáveis de ambiente não são atualizadas por que estão anexadas ao processo de PID 1... logo não tem como atualizar
[!NOTE]- Criação de uma
Secret
filePath: "@/Attachments/Kubernetes/secrets/secret-teste.yaml"
[!NOTE]- Criação de um pod com secrets carregadas com
env.valueFrom
filePath: "@/Attachments/Kubernetes/secrets/pod-with-secrets-env-value.yaml"
[!NOTE]- Criação de um pod com secrets carregadas com
envFrom
filePath: "@/Attachments/Kubernetes/secrets/pod-with-secrets-envfrom.yaml"
[!NOTE]- Criação de um pod com secrets carregadas com
volume
filePath: "@/Attachments/Kubernetes/secrets/pod-with-secrets-volume.yaml"
[!NOTE]- Criação de um pod com secrets carregadas com
env.volume-items
filePath: "@/Attachments/Kubernetes/secrets/pod-with-secrets-volume-items.yaml"
Comandos úteis
kubectl create secret generic secretname --from-literal password=12345
kubectl create secret tls myCert --cert my.crt --key my.key
kubectl create secret generic mySecret --fromfile ssh-private-key=./id_rsa
k get secret teste -o jsonpath="{.data.password}" | base64 -d
kubectl set env deploy DEPLOYMENT --from secret/mysecret
kubectl create secret docker-registry docker-credentials \
--docker-server https://index.docker.io/v1/ \
--docker-email [email protected] \
--docker-username fabioluciano \
--docker-password xxxxxxx
[!NOTE]- Criação de um pod com secrets carregadas com
env.volume-items
filePath: "@/Attachments/Kubernetes/secrets/deploy-with-imagepullsecrets.yaml"