GitOps: Entenda o que é e porque você deveria utilizá-lo!
Contexto
Na última década, o Git se tornou praticamente onipresente no desenvolvimento de software. Inicialmente, somente códigos e documentações referentes ao software eram armazenados nele.
Porém, com a evolução na adoção de práticas como DevOps, Infraestrutura como Código (IaC) e conteinerização de aplicações, em especial com o uso do Kubernetes para orquestração dos containers, outros tipos de recursos como pipelines, código de infraestrutura e testes automatizados também passaram a ser armazenados no Git.
Isso permitiu por exemplo a automação de tarefas como construção, testes e implantação de aplicações nos mais diversos tipos de ambientes computacionais.
De modo destacado, ferramentas como kubectl passaram a ser utilizadas para implantar aplicações em clusters Kubernetes.
Porém essa abordagem carregava alguns problemas, como necessidade de armazenamento de credenciais de acesso ao cluster nas ferramentas como GitHub, GitLab, Jenkins, entre outras.
Por isso, novos modos de permitir a implantação e atualização de aplicações no Kubernetes foram pensados, e com isso chegamos ao GitOps.
GitOps
O GitOps é um modo de trabalho que visa transformar um repositório Git em uma "fonte de verdade" sobre a atual infraestrutura de uma aplicação. Isso significa que esse repositório conterá o estado desejado da infraestrura. Ferramentas específicas como ArgoCD, Jenkins-X e GitLab, são executadas dentro do cluster Kubernetes e vão constantemente ler o estado desejado explicitado no repositório e compará-lo com o estado atual (corrente), e sempre que for detectada alguma diferença entre eles, atuarão para que o estado atual fique igual o estado desejado.
Sempre que for necessário realizar alguma alteração no estado atual, basta alterar o repositório que contém o estado desejado, e essas ferramentas atuarão conforme explicado anteriormente.
Ou seja, em vez de uma abordagem na qual as ferramentas de automação "empurram" as alterações para o cluster Kubernetes, temos uma estratégia que "puxa" as alterações a partir de um repositório Git. Com isso, as credenciais de acesso ao cluster não precisam ser compartilhadas com as ferramentas de repositórios Git, deixando todo o processo mais seguro.
Gostou dessa abordagem e quer conhecer mais!? Veja mais detalhes no vídeo a seguir: