GitOps
O GitOps é um paradigma projetado em torno do Kubernetes que permite que desenvolvedores e equipes de operações de TI usem o Git para gerenciamento de cluster e entrega de aplicativos. A aplicação de um fluxo de trabalho Git às equipes de operações e desenvolvimento permite que os desenvolvedores usem solicitações pull do Git para gerenciar o provisionamento de infraestrutura e a implantação de software.
O Git é um sistema de gerenciamento de código distribuído de código aberto e controle de versão . O Git é usado para rastrear alterações no código fonte durante todo o desenvolvimento de software e também é usado para gerenciamento de configuração e conteúdo. Uma parte do Git, relacionada ao GitOps, inclui solicitações de recebimento. Uma solicitação de recebimento permite que os usuários digam aos outros quais alterações foram transferidas para uma nova ramificação em um repositório através do GitHub . Quando um usuário abre uma solicitação de recebimento, ele pode revisar, discutir ou acompanhar as confirmações antes que quaisquer alterações sejam mescladas em uma ramificação base.
O GitOps foi desenvolvido pela WeaveWorks, com o objetivo de criar uma “única fonte de verdade” relacionada à infraestrutura e aplicativos. Para isso, o WeaveWorks colocou o Git no centro de seu pipeline de entrega, para que os desenvolvedores possam fazer uso de solicitações pull para simplificar as operações e a implantação de software no Kubernetes .
O GitOps usa o Git sempre que possível, do desenvolvimento à implantação. Isso significa que o GitOps pode ser usado para codificar e escrever aplicativos, criar pipelines - geralmente usando YAML -, provisionar um Kubernetes cluster e trabalho de deploy em Kubernetes clusters, servers ou container registries .
Os GitOps podem ser usados por equipes que frequentemente trabalham com o Kubernetes e desejam começar a avançar para modelos contínuos, como integração contínua ( CI ), implantação ou teste.
Como o GitOps funciona
O GitOps é baseado em solicitações pull. Depois que uma solicitação de recebimento é inicializada, o usuário deve poder ver uma visão geral das alterações em cada filial em uma base de repositório. O usuário pode adicionar um resumo das alterações propostas, revisar alterações, adicionar rótulos e mencionar outros colaboradores. Depois que a solicitação de recebimento é criada, uma confirmação de uma ramificação de tópico pode ser adicionada à solicitação de recebimento - onde os colaboradores podem visualizar as alterações propostas. Depois que todos aprovarem a solicitação, as alterações poderão ser mescladas com a solicitação pull.
As possíveis alterações em um aplicativo ou cluster podem incluir atualizações nas imagens do contêiner , correções nos erros no ambiente ou atualizações nas especificações. A solução de problemas com o GitOps tende a ser rápida, pois os usuários podem corrigir qualquer problema que apareça com uma solicitação pull, e não no sistema subjacente.
Uma representação do pipeline do GitOps
O GitOps também pode fazer uso de outras ferramentas para empurrões do Git, desenvolvimento e integração contínua. O GitOps funcionará com qualquer servidor CI e Git. Outras ferramentas, como o Jenkins X , também funcionarão com o GitOps. O Jenkins X é uma ferramenta de código aberto que pode fornecer integração e entrega contínuas , além de outras ferramentas de teste automatizadas projetadas para aplicativos nativos da nuvem - especificamente em um ambiente Kubernetes. Outras ferramentas, como GitHub, Bitbucket ou AWS CodeDeploy, também podem ser usadas no GitOps. Bitbucket é uma ferramenta de repositório semelhante ao GitHub; no entanto, o Bitbucket hospeda repositórios Mercurial, em oposição aos repositórios Git que o GitHub usa. O AWS CodeDeploy pode ser usado para automatizar implantações de código.
Usos do GitOps
O GitOps pode ser usado por vários motivos, por exemplo, para habilitar a implantação contínua do Kubernetes. Além de permitir que uma organização envie aplicativos mais rapidamente, a implantação contínua elimina a necessidade de qualquer sistema de gerenciamento de implantação individual.
O GitOps também pode ser usado para implementar a entrega contínua para o Kubernetes. A entrega contínua normalmente permite que as equipes de desenvolvimento construam, testem e implantem software em um ritmo acelerado por meio de atualizações incrementais. A entrega contínua para o Kubernetes também permite um pipeline de integração e tempo de execução contínuo - que deve ser capaz de ler e gravar arquivos no Git, atualizar repositórios de contêineres e carregar imagens de contêineres.
O GitOps também permite que uma organização use uma única ferramenta para controlar a infraestrutura, permitindo o controle de versão para alterações na configuração, bem como a capacidade de monitorar constantemente as alterações e emitir alertas.
Benefícios do GitOps
As vantagens da implementação do GitOps incluem:
- Maior produtividade através da ativação de entrega e implantação contínuas;
- Confiabilidade através de recursos de reversão / reversão e garfo;
- Fluxos de trabalho padronizados centrados no Git;
- Permite que uma organização use um único conjunto de ferramentas;
- Reduz o número de variáveis potenciais no gerenciamento de infraestrutura;
- Fornece visibilidade adicional; e
- Superfícies de ataque potenciais menores.
Desvantagens do GitOps
Algumas desvantagens do GitOps, no entanto, incluem:
- Os usuários devem procurar manifestos YAML quebrados, nos quais referências de sintaxe ou objeto podem ser quebradas.
- Ao abordar o desenvolvimento por meio de uma abordagem pull, os usuários se limitam a usar apenas ferramentas que executam pull.
- Existe potencial para a otimização da API, pois o GitOps realiza pesquisas consistentemente no repositório do Git.
GitOps vs. DevOps
GitOps e DevOps são portmanteaus de som muito semelhantes, com semelhanças e diferenças igualmente importantes.
DevOps é uma combinação das palavras “desenvolvimento” e “operações”. É uma abordagem colaborativa para tarefas executadas pelas equipes de desenvolvimento de aplicativos e operações de TI de uma organização. Alguns dos principais objetivos do DevOps são promover a colaboração entre as equipes de desenvolvimento e operações e adotar práticas programáveis de desenvolvimento de software, automação e implantação de infraestrutura.
GitOps é um subconjunto ou extensão do DevOps que aproveita especificamente a ferramenta Git. Um dos principais objetivos do GitOps é automatizar o processo de desenvolvimento e acelerar as cadências de lançamento, que é um objetivo compartilhado do DevOps. No entanto, o GitOps é um paradigma ou técnica, enquanto o DevOps é mais uma cultura ou filosofia. O GitOps está vinculado ao uso do Git e do Kubernetes, enquanto o DevOps não está vinculado ao uso de uma única ferramenta.
Futuro do GitOps
Alguns acreditam que o GitOps pode ser o futuro do DevOps - isso ocorre porque o GitOps é uma abordagem declarativa e nativa da nuvem para o gerenciamento de configurações. O GitOps é certamente útil nos casos em que o uso do controle de versão para gerenciar a infraestrutura e a implantação de aplicativos seria difícil.
No entanto, o futuro do GitOps pode não ser o ajuste certo para todos, pois nem todas as organizações consideram confiar em uma única ferramenta ou até mesmo usam as solicitações pull do Git como o fluxo de trabalho ideal para suas infraestruturas.
Autor: Margaret Rouse