Marcio Cunha

Como reverter updates no Kubernetes automaticamente com ArgoCD

Aprenda a configurar políticas de saúde e estratégias de reversão automática no ArgoCD baseadas em métricas de erro para proteger seus microrserviços no Kubernetes.

Marcio Cunha•4 min
Também disponível em:EnglishEspañol
Resumo
  • Atualizações automáticas no Kubernetes podem introduzir falhas silenciosas que afetam o usuário final.
  • O ArgoCD gerencia a entrega contínua comparando o estado real com o desejado no repositório.
  • Configurar políticas de saúde personalizadas garante que falhas de lógica sejam detectadas rapidamente.
  • A integração com métricas permite reverter deploys ruins sem intervenção humana manual.
  • Testar os mecanismos de rollback em ambientes controlados evita surpresas em produção.

O desafio de atualizar microrserviços sem dor de cabeça

Quando atualizamos um aplicativo em um cluster Kubernetes, que é um sistema para gerenciar e executar aplicativos divididos em pedaços menores chamados microrserviços, o maior medo é que o novo código quebre em produção. Na prática, isso significa que a tela de login pode parar de funcionar ou o banco de dados pode começar a rejeitar requisições logo após o envio da nova versão. Para evitar que engenheiros precisem correr para consertar as coisas de madrugada, buscamos formas de automatizar esse processo de segurança. Assim como em uma rede corporativa onde monitoramos logs do Kubernetes em tempo real com o Stern para rastrear anomalias, precisamos de ferramentas que identifiquem problemas e ajam sozinhas.

O papel do ArgoCD na entrega contínua

O ArgoCD é uma ferramenta popular de implantação contínua para Kubernetes que segue o conceito de GitOps. Na prática, ele olha constantemente para um repositório de código onde estão as regras do seu sistema e tenta fazer com que o cluster físico seja idêntico ao que está escrito no papel. Quando você faz uma alteração, ele aplica os arquivos YAML, que são documentos de configuração em texto plano que descrevem os recursos do sistema. No entanto, apenas dizer ao Kubernetes para rodar uma nova versão não garante que ela funcione bem. O sistema precisa saber se o aplicativo está saudável ou apenas ligado.

Configurando políticas de saúde personalizadas

Por padrão, o Kubernetes acha que um aplicativo está saudável se o processo interno não morreu. Contudo, um programa pode continuar rodando enquanto devolve erros para todas as pessoas que tentam acessá-lo. Para resolver isso, criamos checagens de saúde personalizadas usando scripts ou extensões no ArgoCD. Na prática, isso significa ensinar a ferramenta a olhar para indicadores específicos, como o número de respostas com erro HTTP 500, antes de declarar que a atualização foi bem-sucedida. Se os erros dispararem logo após a mudança, o ArgoCD interrompe o processo e avisa a equipe.

Automatizando a reversão com métricas de erro

A verdadeira mágica acontece quando combinamos o ArgoCD com ferramentas de monitoramento como Prometheus e Argo Rollouts. O Argo Rollouts é um controlador que adiciona estratégias de atualização avançadas, como testes gradualistas e reversão automática. Na prática, ele atualiza apenas dez por cento dos servidores, observa o comportamento por alguns minutos e mede a taxa de falhas. Se a taxa de erro passar de um limite seguro que definimos, o sistema aciona um comando de rollback sozinho. Isso devolve a versão anterior estável para os usuários em segundos, mitigando o impacto do erro.

Para configurar essa estratégia no dia a dia, você precisa definir os limites de tolerância de erro nos arquivos de configuração do seu projeto. A seguir, veja um exemplo prático de como estruturar um objeto de Rollout com análise de métricas:

apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
  name: meu-microsservico
spec:
  replicas: 5
  strategy:
    canary:
      analysis:
        templates:
        - templateName: taxa-de-erros
      steps:
      - setWeight: 20
      - pause: {duration: 10m}
  selector:
    matchLabels:
      app: meu-microsservico
  template:
    metadata:
      labels:
        app: meu-microsservico
    spec:
      containers:
      - name: app
        image: meu-sistema:v2

Boas práticas para garantir a resiliência do sistema

Automatizar rollbacks exige confiança na exatidão das suas métricas. Se o seu alarme disparar por causa de um falso positivo, você vai reverter uma versão que estava funcionando perfeitamente. Portanto, comece definindo métricas que realmente representem a experiência do usuário real, como lentidão extrema ou falhas em transações críticas. Além disso, assim como administramos limites de recursos no Linux, é fundamental aumentar os limites de conexões simultâneas no Linux dos servidores para que as ferramentas de monitoramento não percam dados durante picos de tráfego. Para aprofundar esses conceitos na prática em produção, confira também nossa análise técnica sobre WireGuard lento? Como resolver perda de pacotes e MTU.

Considerações finais sobre resiliência operacional

Implementar reversões automáticas baseadas em métricas no ArgoCD transforma a forma como uma empresa lida com falhas em produção. Em vez de depender da agilidade humana sob pressão, a infraestrutura ganha reflexos próprios para se defender de bugs inesperados. Isso traz tranquilidade para desenvolvedores e operadores, permitindo entregas mais rápidas e frequentes sem o medo constante de derrubar o sistema. Com uma base sólida de monitoramento e testes regulares, sua equipe estará pronta para absorver qualquer falha com o mínimo de interrupção para o usuário final.