Capítulo 1
O que é GitOps?
Sabe quando você coloca uma panela de angu com queijo na geladeira e outra pessoa come?
Imagina como seria bom se mesmo quando outra pessoa comesse ela voltasse automagicamente pra geladeira da mesma forma que você deixou. De forma muito simplificada este é um dos benefícios ao utilizar GitOps.
Obviamente GitOps é um tema que aborda mais princípios do que essa analogia em si retrata, porém ela é um bom norte para entender os seus benefícios. Nos parágrafos seguintes você possivelmente irá entender melhor o que a analogia do angu com queijo quer dizer.
Os princípios do GitOps são:
-
Um sistema gerenciado por GitOps deve ser descrito de forma totalmente declarativa ( Infraestrutura e Aplicação )
-
O estado desejado do sistema é versionado no Git
-
Mudanças aprovadas são automaticamente aplicadas
-
Agentes devem garantir sincronismo contínuo entre o ambiente criado e o estado desejado
Vamos ver com um pouco mais de detalhe cada um desses pontos.
Declarativo
O princípio básico do GitOps é que toda aplicação e componentes necessários para sua execução devem estar descritos via Git. O estado desejado deve ser aquele que está no repositório Git.
Versionado e imutável
Um commit do git é uma excelente forma de se ter um snapshot imultável de toda uma hierarquia de arquivos, e isso o torna o armazenamento ideal para se utilizar em GitOps. Toda alteração feita no git automaticamente substitui todo o estado anterior ao invés de somente realizar apenas uma mudança, e sempre que essa substituição acontece é criada uma nova versão do estado.
Pull automático
O caminho típico de uma atualização de ambiente é que o desenvolvedor faça um commit e envie as modificações para produção.
Porém com GitOps o caminho é o contrário. Em GitOps existe um agente que intermedia a interação entre o repositório git e o ambiente de produção, onde esse agente escuta por qualquer alteração no repositório da aplicação e mescla essas atualizações no ambiente de produção.
Continuamente sincronizado
Mudanças nos sistemas são constantes, e com isso existe a necessidade de se validar continuamente o estado das aplicações em produção para que elas reflitam o que está descrito no git.
O agente de GitOps é responsável por monitorar de tempos em tempos o estado das aplicações no ambiente de produção e comparar com o estado desejado armazenado no git. Essa ação automática de sincronismo além de evitar a persistência de alterações feitas diretamente no ambiente de produção nos dá a garantia de que para saber o que está sendo executado em produção basta olhar o que está no git.
Quando houver diferença entre o estado desejado e o ambiente de produção, eu vou estar lá.
Casos de uso
Prós e contras
Preparando ambiente de estudo
Referências e recomendações
Este primeiro capítulo foi baseado no conteúdo gratúito do curso GitOps Fundamentals disponibilizado pela Codefresh.
Você também pode encontrar bastante informação sobre GitOps no site da Open GitOps