🚀 Capítulo 18: GitOps e Entrega Declarativa (Tema: Inception / A Origem)
NOTE
Este capítulo utiliza a temática de Inception para explicar o GitOps. O que você escreve no código (o sonho) se torna a realidade física na nuvem!
1. 🎯 Objetivo da Aula
Compreender o conceito de GitOps, entendendo como o Git se torna a única fonte de verdade para a infraestrutura e como ferramentas automatizam a sincronização entre o código e a realidade.
2. 🏢 O Cenário Prático (Seu Desafio)
No filme Inception, os arquitetos conseguem projetar o mundo dos sonhos.
- Eles desenham prédios, ruas e pontes no papel ou na mente.
- Quando eles entram no sonho, aquela arquitetura desenhada se torna a realidade física deles. Se eles dobrarem a rua no papel, a rua se dobra no sonho!
No mundo DevOps, o GitOps faz exatamente isso!
- A sua mente de arquiteto é o repositório Git (GitHub).
- Você escreve em um arquivo de configuração exatamente como você quer que a sua infraestrutura seja (Ex: “Quero 3 servidores e 1 banco de dados”).
- Um robô (como o ArgoCD) fica vigiando o Git. Se ele perceber que você alterou o arquivo para “Quero 5 servidores”, ele vai lá na nuvem da AWS e cria mais 2 servidores sozinho! A realidade da nuvem sempre imita o que está escrito no seu Git! Seu desafio é projetar esse sonho!
🧠 Fundamentos: A Teoria Traduzida
GitOps é um modelo operacional para Kubernetes e outras tecnologias nativas da nuvem, onde o Git é usado como a única fonte de verdade para sistemas declarativos.
📜 Os 4 Princípios do GitOps:
- Declarativo: O sistema deve ser descrito em arquivos (como YAML), dizendo o estado final desejado (o que eu quero), e não os comandos para chegar lá (o como fazer).
- Versionado e Imutável: Todo o estado do sistema fica guardado no Git. Se precisarmos voltar no tempo (fazer Rollback), basta dar um checkout em um commit antigo!
- Puxado Automaticamente: O sistema (robô) lê as mudanças do Git e aplica na nuvem automaticamente.
- Reconciliação Contínua: O robô fica checando 24h por dia se a nuvem está igual ao Git. Se alguém entrar na AWS e apagar um servidor manualmente, o robô percebe a diferença e recria o servidor na hora para ficar igual ao Git!
4. 📖 Exemplo Guiado: O Robô ArgoCD
Imagine que você quer atualizar a versão do seu site de v1 para v2.
- Sem GitOps: Você abre o terminal, conecta no Kubernetes e digita comandos para atualizar a imagem.
- Com GitOps: Você abre o arquivo
deployment.yamlno GitHub, muda a linha deimage: site:v1paraimage: site:v2e faz o commit. - O robô ArgoCD vê o commit novo e atualiza o site sozinho na nuvem! Você não precisa nem abrir o terminal.
5. 🛠️ Prática Obrigatória 1: O Princípio do GitOps
Um administrador de sistemas entrou no painel da AWS e alterou manualmente o tamanho de um servidor de “Pequeno” para “Grande” porque o sistema estava lento. No arquivo do Git, o servidor continuava escrito como “Pequeno”.
- Se essa empresa usa GitOps com reconciliação contínua, o que o robô fará com esse servidor alguns minutos depois?
- Qual o jeito correto que o administrador deveria ter usado para aumentar o tamanho do servidor seguindo a cultura GitOps?
6. 🛠️ Prática Obrigatória 2: Vantagem do Histórico
Como tudo no GitOps fica registrado no Git como commits:
- Qual a vantagem disso para a equipe de segurança descobrir quem foi que mandou abrir uma porta do firewall do sistema na semana passada?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 18 DevOps) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
mod_13_devops_e_cloud/
├── capitulos/
│ ├── capitulo_18_gitops.md
│ └── codigos/
│ └── cap18/
│ └── gitops_sync.txt💡 Checkpoint de Lógica
GitOps é o ápice da automação de infraestrutura. Ele garante que o que está documentado no código seja exatamente o que está rodando em produção, sem mentiras ou esquecimentos!
10. 🔥 Desafio de Fixação
Pesquise o nome das duas ferramentas de GitOps mais famosas do mercado atualmente (Dica: Uma delas tem o símbolo de um polvo e a outra de uma âncora).
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- O robô vai desfazer a alteração manual e voltar o servidor para o tamanho “Pequeno”, para ficar igual ao que está escrito no Git!
- Ele deveria ter alterado o arquivo no Git para “Grande” e feito o commit. O robô se encarregaria de aplicar a mudança na nuvem. Gabarito da Prática 2:
- Basta olhar o histórico de commits (
git log) para ver exatamente qual usuário fez a alteração no arquivo de configuração do firewall, em qual dia e hora!