Configurando Aplicações com Secrets

KubernetesBeginner
Pratique Agora

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.

  1. Navegue para o seu diretório de trabalho:

    Abra o terminal e navegue até a pasta do projeto padrão:

    cd /home/labex/project
    
  2. Inicie 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.
  3. Verifique se o Minikube está em execução:

    Verifique o status do cluster Minikube:

    minikube status
    
    • Procure por componentes como kubelet e apiserver listados como Running (Em execução).
    • Se o cluster não estiver em execução, execute novamente minikube start.

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).