Configurando Aplicações com Configmaps

KubernetesBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar ConfigMaps no Kubernetes para configurar suas aplicações. ConfigMaps fornecem uma maneira de separar dados de configuração do código da sua aplicação, facilitando o gerenciamento e a atualização da configuração da sua aplicação sem modificar a própria aplicação.

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. Iniciar 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. Verificar 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.
    • 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 Configmap

Nesta etapa, você criará um ConfigMap contendo os dados de configuração para sua aplicação.

Crie um arquivo chamado configmap.yaml no diretório /home/labex/project/ com o seguinte conteúdo:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  DATABASE_URL: postgres://user:password@host:port/dbname

Este ConfigMap contém um único par chave-valor, onde a chave é DATABASE_URL e o valor é uma string de conexão com o banco de dados PostgreSQL.

Para criar o ConfigMap, execute o seguinte comando:

kubectl apply -f configmap.yaml

Usar o Configmap em Sua Aplicação

Nesta etapa, você usará o ConfigMap em sua aplicação.

Crie um arquivo chamado deployment.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_URL
              valueFrom:
                configMapKeyRef:
                  name: my-config
                  key: DATABASE_URL

Este deployment especifica um único container executando sua aplicação, que usa a variável de ambiente DATABASE_URL para conectar a um banco de dados PostgreSQL. O valor de DATABASE_URL é obtido do ConfigMap my-config.

Para criar o deployment, execute o seguinte comando:

kubectl apply -f deployment.yaml

Verificar a Configuração

Nesta etapa, você verificará se a configuração foi aplicada à sua aplicação.

Primeiro, encontre o nome do pod 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 executando sua aplicação:

kubectl exec -it pod-name -- /bin/sh

Substitua <pod-name> pelo nome 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_URL:

echo $DATABASE_URL

Você deve ver a string de conexão com o banco de dados que você definiu no ConfigMap.

Atualizar o Configmap

Nesta etapa, você atualizará o ConfigMap e verá como isso afeta sua aplicação.

Atualize o arquivo configmap.yaml com um novo valor para a chave DATABASE_URL:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  DATABASE_URL: postgres://newuser:newpassword@newhost:newport/newdbname

Isso atualiza a chave DATABASE_URL para um novo valor.

Para atualizar o ConfigMap, execute o seguinte comando:

kubectl apply -f configmap.yaml

Verificar a Atualização

Nesta etapa, você verificará se a atualização do ConfigMap foi aplicada à sua aplicação.

Primeiro, 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 do pod que você anotou anteriormente.

Depois de estar na sessão do shell, execute o seguinte comando para imprimir o valor da variável de ambiente DATABASE_URL:

echo $DATABASE_URL

Você pode ver que a configuração não teve efeito, ainda é a mesma informação de antes. Você precisa reiniciar o Deployment com o seguinte comando.

kubectl rollout restart deployment my-app

Quando a reinicialização estiver completa, entre no container novamente e use o comando acima para verificar a configuração.

Você deve ver a string de conexão do banco de dados atualizada.

Resumo

Neste laboratório, você aprendeu como usar ConfigMaps no Kubernetes para configurar suas aplicações. Você criou um ConfigMap contendo dados de configuração, usou o ConfigMap em sua aplicação e atualizou o ConfigMap para ver como isso afeta sua aplicação. Você também aprendeu como verificar se a configuração foi aplicada à sua aplicação e como limpar os recursos criados no laboratório.