Pipelines CI/CD para Kubernetes Usando GitLab CI

O desenvolvimento de software moderno exige ciclos de implantação rápidos, escalabilidade e resiliência. O Kubernetes emergiu como a plataforma de orquestração preferida, permitindo a gestão escalável de aplicações em contêineres. Quando combinado com os pipelines CI/CD do GitLab, as implantações do Kubernetes tornam-se automatizadas, repetíveis e confiáveis.

Este artigo explora os detalhes técnicos de como configurar pipelines CI/CD para Kubernetes usando o GitLab CI.

Pré-requisitos

Antes de configurar seu pipeline CI/CD, certifique-se de que os seguintes requisitos sejam atendidos:

  • Conta do GitLab: Acesso a um repositório do GitLab onde o pipeline CI/CD será configurado.
  • Cluster Kubernetes: Um cluster Kubernetes existente, como Minikube (para testes locais) ou clusters gerenciados como Google Kubernetes Engine (GKE), Amazon EKS ou Azure AKS.
  • kubectl: A ferramenta de linha de comando do Kubernetes deve estar instalada e configurada para interação com o cluster.
  • Helm (opcional): Gerenciador de pacotes do Kubernetes para implantar e gerenciar aplicações.
  • GitLab Runner: Certifique-se de que o GitLab Runner esteja instalado e registrado em seu projeto para executar trabalhos de CI/CD.
  • Docker: Necessário para construir e enviar imagens de contêiner para um registro de contêiner.

Configurando a Integração do Kubernetes com o GitLab

Conectar Cluster Kubernetes

A integração do Kubernetes com o GitLab permite implantação e gerenciamento de recursos contínuos diretamente do seu pipeline. Siga estes passos:

  1. Acesse o painel do projeto no GitLab.
  2. Navegue até Infraestrutura > Clusters Kubernetes.
  3. Clique em Adicionar Cluster Kubernetes e conecte um cluster existente ou crie um novo usando provedores de nuvem.
  4. Atribua permissões adequadas ao GitLab usando o Controle de Acesso Baseado em Função (RBAC).

Configuração RBAC

O RBAC define permissões de acesso para recursos do Kubernetes. Abaixo está um exemplo de configuração YAML para configurar o RBAC:

YAML

 

Aplicar Configuração

Aplique o arquivo YAML usando kubectl:

YAML

 

Gerar Token para Autenticação

Extraia o token da conta de serviço necessário para o GitLab:

YAML

 

Cole este token nas configurações de Kubernetes do GitLab.

Configurando o Pipeline CI/CD do GitLab

Definir .gitlab-ci.yml

O arquivo de configuração do CI do GitLab define estágios de pipeline, variáveis e comandos. Abaixo está um exemplo de configuração:

YAML

 

Explicação da Configuração 

  • Fases: O pipeline é dividido em fases de construção, teste e implantação para execução modular.
  • Variáveis: Variáveis de ambiente como tags de imagem e namespaces simplificam o gerenciamento de configuração.
  • before_script: Instala dependências e configura a autenticação do Kubernetes.
  • Marcação de Imagem: Usa o SHA do commit para identificar de forma exclusiva cada versão da imagem.
  • Implantação: Atualiza a implantação do Kubernetes definindo a imagem do contêiner.

Gerenciamento de Segredos

O GitLab CI suporta o gerenciamento seguro de segredos usando variáveis:

  1. Navegue até Configurações > CI/CD > Variáveis.
  2. Adicione as variáveis necessárias como KUBE_CONFIG, CI_REGISTRY_USER e CI_REGISTRY_PASSWORD.

Codifique kubeconfig antes de adicioná-lo como uma variável:

YAML

 

Adicione o resultado como KUBE_CONFIG no GitLab.

Implantação com Helm

O Helm simplifica as implantações do Kubernetes com gráficos reutilizáveis. Exemplo de configuração do Helm:

YAML

 

Adicione comandos do Helm ao pipeline:

YAML

 

Ferramentas de Monitoramento e Depuração

Monitore o status do pipeline no GitLab em CI/CD > Pipelines. Use ferramentas como:

  • Prometheus e Grafana: Para métricas e visualização.
  • Dashboard do Kubernetes: Gerenciamento de cluster.
  • kubectl logs: Buscar logs de implantação.
YAML

 

Conclusão

Este artigo descreve a configuração de pipelines CI/CD para Kubernetes com o GitLab CI. Ele abrange pré-requisitos, configurações YAML, gerenciamento de segredos, implantações do Helm e ferramentas de monitoramento. Com essa configuração, os desenvolvedores podem construir, testar e implantar aplicativos containerizados de forma eficiente e confiável.

Source:
https://dzone.com/articles/cicd-pipelines-for-kubernetes-using-gitlab-ci