Introdução
Neste laboratório, você aprenderá como usar Kubernetes Secrets para gerenciar com segurança informações sensíveis, como senhas, chaves de API e outros dados confidenciais. Você criará um secret, usará-o em sua aplicação e verificará se a aplicação está configurada corretamente. Cada passo se baseia no anterior, portanto, certifique-se de seguir cuidadosamente as instruções.
Iniciar o Cluster Minikube
Antes de criar recursos, você precisa de um cluster Kubernetes em execução. Minikube é um ambiente Kubernetes leve que roda em sua máquina local.
Navegue para o seu diretório de trabalho:
Abra o terminal e navegue até a pasta do projeto padrão:
cd /home/labex/projectInicie o Minikube:
Inicie o Minikube para inicializar um cluster Kubernetes:
minikube start- Este comando configura um cluster Kubernetes de nó único em sua máquina local.
- O Minikube pode levar alguns minutos para iniciar, dependendo do desempenho do seu sistema.
Verifique se o Minikube está em execução:
Verifique o status do cluster Minikube:
minikube status- Procure por componentes como
kubeleteapiserverlistados comoRunning(Em execução). - Se o cluster não estiver em execução, execute novamente
minikube start.
- Procure por componentes como
Se você encontrar problemas ao iniciar o Minikube. Use minikube delete para redefinir o ambiente, se necessário.
Criar um Secret
Nesta etapa, você criará um Kubernetes Secret que contém uma senha de banco de dados.
Crie um arquivo chamado my-secret.yaml no diretório /home/labex/project com o seguinte conteúdo:
apiVersion: v1
kind: Secret
metadata:
name: my-secret
type: Opaque
data:
password: dXNlcm5hbWU6cGFzc3dvcmQ=
Neste arquivo, especificamos o nome do Secret (my-secret), o tipo de dados que ele contém (Opaque) e os dados reais em formato codificado em Base64.
Aplique o Secret ao seu cluster executando o seguinte comando:
kubectl apply -f my-secret.yaml
Verifique se o Secret foi criado executando o seguinte comando:
kubectl get secrets
Você deve ver o Secret my-secret listado.
Usar o Secret na Sua Aplicação
Nesta etapa, você modificará sua aplicação para usar o Secret my-secret para recuperar a senha do banco de dados.
Crie um arquivo chamado my-app.yaml no diretório /home/labex/project com o seguinte conteúdo:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: nginx:latest
env:
- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: my-secret
key: password
Neste arquivo, especificamos o nome do Deployment (my-app), a imagem a ser usada (my-image) e a variável de ambiente a ser definida (DATABASE_PASSWORD). Também usamos um secretKeyRef para recuperar a chave password do Secret my-secret.
Aplique o Deployment ao seu cluster executando o seguinte comando:
kubectl apply -f my-app.yaml
Verifique se o Deployment foi criado executando o seguinte comando:
kubectl get deployments
Você deve ver o Deployment my-app listado.
Verificar a Configuração
Nesta etapa, você verificará se sua aplicação está configurada corretamente com a senha do banco de dados do Secret my-secret.
Encontre o nome do pod que está executando sua aplicação executando o seguinte comando:
kubectl get pods -l app=my-app
Você deve ver um único pod executando sua aplicação. Anote o nome do pod.
Em seguida, execute o seguinte comando para abrir uma sessão de shell no container que está executando sua aplicação:
kubectl exec -it pod-name -- /bin/sh
Substitua <pod-name> pelo nome real do pod que você anotou anteriormente.
Depois de estar na sessão de shell, execute o seguinte comando para imprimir o valor da variável de ambiente DATABASE_PASSWORD:
echo $DATABASE_PASSWORD
Você deve ver a senha do banco de dados que foi recuperada do Secret my-secret.
Montar o Secret como um Volume em um Pod
Agora que criamos o secret, podemos montá-lo como um volume em um pod. Criaremos um pod simples que lê o valor do secret do volume montado e o envia para o console.
Crie um arquivo chamado pod.yaml no diretório /home/labex/project com o seguinte conteúdo:
apiVersion: v1
kind: Pod
metadata:
name: secret-pod
spec:
containers:
- name: secret-container
image: nginx
volumeMounts:
- name: secret-volume
mountPath: /etc/secret-volume
volumes:
- name: secret-volume
secret:
secretName: my-secret
Aplique a configuração do pod:
kubectl apply -f pod.yaml
Verificar o Secret como um Volume em um Pod
Nesta etapa, você verificará se sua aplicação está configurada corretamente com a senha do banco de dados do Secret my-secret.
Primeiro, execute o seguinte comando para abrir uma sessão de shell no container que está executando sua aplicação:
kubectl exec -it secret-pod -- sh
Depois de estar na sessão de shell, execute o seguinte comando para imprimir o valor:
cat /etc/secret-volume/password
A saída deve ser o valor do secret.
Resumo
Neste laboratório, aprendemos como usar os secrets do Kubernetes para armazenar informações sensíveis e como usá-los em um pod. Secrets fornecem uma maneira segura de gerenciar informações sensíveis e devem ser usados sempre que possível para evitar expor secrets em texto simples (plaintext).


