Pular para conteúdo

Aula 20 - Projeto Capstone: Infraestrutura Cloud Kubernetes Autônoma 🚀

Objetivo Pedagógico

Objetivo: Conceber uma plataforma autônoma de nuvem orientada a GitOps com ArgoCD e Kubernetes, automatizando todo o ciclo de vida: provisionamento de infraestrutura, sincronização de manifestos declarativos, observabilidade e autorrecuperação contra drift de configuração.


📑 1. Fundamentos Teóricos & Análise Técnica

O ápice da maturidade operacional moderna é a implementação do paradigma GitOps: onde o repositório Git é a única fonte da verdade (Single Source of Truth) para todo o estado da infraestrutura e das aplicações.

O Projeto Capstone de DevOps e Cloud consolida essa visão arquitetural: 1. O Modelo GitOps com ArgoCD: - Em vez de pipelines de CI executarem comandos kubectl apply com credenciais privilegiadas de fora do cluster (Push-Based Deployment), um agente interno do cluster (ArgoCD) monitora continuamente o repositório Git (Pull-Based Deployment). - O agente detecta qualquer alteração de commit e sincroniza o estado do cluster instantaneamente. 2. Autorrecuperação e Proteção contra Configuration Drift (Self-Healing): - Se um operador tentar alterar manualmente um recurso no cluster via terminal (kubectl edit), o ArgoCD detecta a discrepância em relação ao Git e reverte a alteração automaticamente para a versão declarada no repositório. 3. Plataforma Completa Integrada: - Integração harmônica entre Ingress Controller com certificados automáticos Let's Encrypt (Cert-Manager), Service Mesh, exportadores de telemetria e balanceadores de carga em nuvem pública.

📐 Arquitetura Conceitual & Diagrama de Fluxo

graph TD
    Git["Repositório Git (Manifestos Declarativos K8s)"] --> Argo["ArgoCD (Agente GitOps Interno do Cluster)"]
    Argo --> Check{"Existe Diferença (Drift)?"}
    Check -- Sim --> Sync["Reconciliação e Auto-Sync para Estado Desejado"]
    Check -- Não --> Synced["Status: Synced & Healthy"]
    Sync --> Cluster["Cluster Kubernetes em Produção"]
    Cluster --> Observability["Prometheus & Grafana (Telemetria)"]
    Operator["Operador Manual altera porta via terminal"] -.-> Cluster
    Cluster -.-> Argo
    Note over Argo: ArgoCD detecta alteração não autorizada e sobrescreve imediatamente! (Self-Healing)
    style Git fill:#e1f5fe,stroke:#01579b
    style Argo fill:#fff3e0,stroke:#e65100
    style Cluster fill:#e8f5e9,stroke:#2e7d32
    style Observability fill:#f3e5f5,stroke:#7b1fa2

🔍 Pilares e Diretrizes Técnicas

Nesta unidade, aprofundamos os seguintes conceitos fundamentais: - Princípio da Fonte Única da Verdade: Todo e qualquer aspecto da infraestrutura deve estar versionado em repositório Git sob controle estrito de Pull Requests. - Mecanismo Pull-Based de Segurança: O cluster não expõe portas ou credenciais de administração para ferramentas de CI externas; o agente puxa as alterações de dentro da rede protegida. - Self-Healing Ativo: Reversão imediata de modificações acidentais ou maliciosas aplicadas fora do fluxo oficial de versionamento. - Auditoria e Rastreabilidade Completa: Cada mudança em produção está associada a um hash de commit assinado e aprovado no histórico do Git.


🛠️ 2. Implementação Prática em Engenharia de Plataforma (Platform Engineering), GitOps e ArgoCD

Abaixo está a implementação técnica de referência, estruturada com padrões de engenharia de software e foco em robustez:

// argocd_application_capstone.yml (Manifesto Declarativo de Aplicação GitOps no ArgoCD)
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: portal-producao-platform
  namespace: argocd
  finalizers:
    - resources-finalizer.argocd.argoproj.io
spec:
  project: default
  source:
    repoURL: 'https://github.com/empresa-organizacao/infra-manifestos-k8s.git'
    targetRevision: HEAD
    path: environments/production
  destination:
    server: 'https://kubernetes.default.svc'
    namespace: producao
  syncPolicy:
    automated:
      prune: true     # Remove recursos no K8s que foram excluídos do Git
      selfHeal: true  # Reverte modificações manuais externas automaticamente
    syncOptions:
      - CreateNamespace=true
      - ApplyOutOfSyncOnly=true
    retry:
      limit: 5
      backoff:
        duration: 5s
        factor: 2
        maxDuration: 3m

💡 Análise Passo a Passo do Código

  1. Diretiva selfHeal: true: Garante que qualquer alteração manual no cluster seja desfeita imediatamente pelo operador GitOps.
  2. Diretiva prune: true: Mantém o cluster limpo removendo cargas de trabalho que deixaram de existir no repositório de código.
  3. Configuração de Retry Exponencial: Garante resiliência durante momentos de indisponibilidade transitória de dependências.

🎯 3. Próximos Passos & Sequência Didática