GitOps com Flux v2 - Parte 1 - O que é GitOps e quem é Flux?
Tags: gitops, devops, flux, beginners
Published: 2022-01-01 12:01:39

## O que é GitOps?
GitOps é um termo que foi criado pela WeaveWorks em 2017 (sim, aquela do plugin de rede para Kubernetes o Weave Net) para descrever, nas palavras da própria WeaveWorks:

> “Um modelo operacional para infraestrutura como código, que fornece um conjunto de práticas recomendadas que unificam a implantação, o gerenciamento e o monitoramento de aplicativos em contêineres.

>Um caminho para uma experiência de desenvolvimento para gerenciar aplicativos; onde pipelines CI/CD ponta a ponta e fluxos de trabalho Git são aplicados a operações e desenvolvimento.”

Básicamente aqui a coisa toda significa que é uma forma de você usar Infraestrutura como código não só para a sua arquitetura mas também para o seu deployment.

Isso trás muitas vantagens, como padronização, facilidade de replicação, compartilhamento, etc. Tudo isso ainda aplicado ao Git nos permite ter uma única fonte de verdade para todos os nossos códigos além da facilidade de acompanhar a evolução do repositório hostóricamente atráves de cada commit.

Dito isso chegamos então ao cara que visa implementar essa idéia para facilitar nosso dia a dia.

Se você entender um pouco de inglês pode conferir o artigo da própria WeaveWorks sobre GitOps na íntegra [aqui](https://www.gitops.tech/#what-is-gitops)

E [aqui](37074631-ffea-4d2a-bc31-7e8605bc9d5b) temos as definições de GitOps.

---


## Flux
O Flux é uma ferramenta criada também pela WeaveWorks no intuito de fazer a idéia do GitOps ser implementada na comunidade, ela o descreve como:

> “Uma ferramenta para manter clusters Kubernetes sincronizados com a origem de suas configurações(como repositórios Git) e automatizar atualizações de configuração quando há um novo código para implantar.”

Ou seja, o Flux nos permite usar uma única fonte de verdade(o repositório Git) para nosso cluster kubernetes.

De maneira simplória o Flux age como uma espécie de mediador entre nosso cluster Kubernetes e nosso repositório Git, ele olha para nosso repositório Git pega os manifestos do Kubernetes e verifica se estão aplicados em nosso cluster, caso não estejam, ele automaticamente aplica esses manifestos no cluster e caso hajam alterações pendentes ele também as aplica.

Tudo isso agiliza muito o desenvolvimento pois tenho um "Cluster como código" pronto pra ser replicado pra um ambiente de staging, dev ou prod. Posso fazer o rollback do meu commit com um simples`git revert` caso algo dê errado, num piscar de olhos, o código aplicado ao cluster sempre será o disponível no Git(esse é o comportamento padrão) assim não temos aquela história de "ahh eu já apliquei a alteração no cluster mas não subi pro Git ainda", entre outras coisas.

Somado à tudo isso vem a facilidade de implementação que só precisa da instalação de um binário de linha de comando e pronto, você já pode começar a usar o Flux.

Outra coisa super interssante é que o Flux é um projeto incubado pelo CNCF onde temos outros grandes nomes como o próprio Kubernetes, Helm, Prometheus, e por ai vai. Então pode ficar tranquilo que não é qualquer programa de fundo de boteco que você vai utilizar é uma ferramenta em constante desenvovimento, com uma grande empresa por trás, uma comunidade super ativa e um futuro bem promissor.


![Flux CNCF](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c2eo8wb1ha12y5q2hteb.png)

Documentação do Flux: https://fluxcd.io/docs/
GitHub: https://github.com/fluxcd/flux2#flux-version-2
Apresentação detalhada(inglês): https://www.youtube.com/watch?v=nGLpUCPX8JE

Curtiu o Flux e a idéia de usar GitOps até nos seus projetos particulares?
Então fica atento pras próximas postagens! Valeu!