Pipelines de 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 ideal, permitindo a gestão de aplicações em contêineres escaláveis. Quando combinado com os pipelines CI/CD do GitLab, as implantações do Kubernetes se tornam 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 os 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 o Cluster Kubernetes

Integrar o 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 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 Controle de Acesso Baseado em Função (RBAC).

Configuração RBAC

RBAC define permissões de acesso para recursos do Kubernetes. Abaixo está um exemplo de configuração YAML para configurar 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 CI do GitLab define estágios do pipeline, variáveis e comandos. Abaixo está um exemplo de configuração:

YAML

 

Explicação da Configuração 

  • Etapas: O pipeline é dividido em etapas 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 SHA do commit para identificar de forma única 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. Acesse Configurações > CI/CD > Variáveis.
  2. Adicione variáveis necessárias como KUBE_CONFIG, CI_REGISTRY_USER e CI_REGISTRY_PASSWORD.

Encode kubeconfig antes de adicioná-lo como 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.
  • Painel do Kubernetes: Gerenciamento do cluster.
  • kubectl logs: Buscar logs de implantação.
YAML

 

Conclusão

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

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