O que é o GitOps?

Copiar URL

O GitOps usa repositórios Git como uma única fonte de informações para oferecer infraestrutura como código. O código enviado verifica o processo de CI, enquanto o processo de CD verifica e aplica os requerimentos de elementos como segurança, infraestrutura como código ou quaisquer outros limites definidos para a framework de aplicações. Todas as alterações de código são acompanhadas, facilitando as atualizações e oferecendo controle de versão, caso uma reversão seja necessária.

O GitOps oferece:

  • Um fluxo de trabalho padrão para o desenvolvimento de aplicações
  • Aumento da segurança para definir antecipadamente requisitos da aplicação
  • Maior confiabilidade com visibilidade e controle de versão pelo Git
  • Consistência entre quaisquer ambientes on-premise, clusters e nuvens

Muitas outras ferramentas podem ser usadas juntas para criar uma framework do GitOps. Por exemplo, repositórios Git, Kubernetes, ferramentas de integração e entrega contínuas (CI/CD) e de gerenciamento de configuração.

 

Abordagem do GitOps à entrega contínua no Kubernetes

Delivering GitOps with Argo CD (em inglês)

Veja mais na série GitOps Guide to the Galaxy na OpenShift.tv, quinzenalmente às quintas-feiras às 15h ET

O GitOps usa as filosofias e abordagens prometidas para quem investe em uma cultura DevOps e fornece um framework para começar a notar os resultados. As organizações que praticam o DevOps notam melhoras significativas na taxa de inovação em aplicações e código, bem como estabilidade, de acordo com o relatório anual State of DevOps Report

Ao usar os mesmos fluxos de trabalho baseados em Git que os desenvolvedores conhecem, o GitOps expande os processos existentes, do desenvolvimento de aplicações à implantação, ao gerenciamento do ciclo de vida da aplicação e à configuração da infraestrutura. Todas as mudanças durante o ciclo de vida da aplicação são acompanhadas no repositório Git e são auditáveis. Fazer alterações pelo Git significa que os desenvolvedores podem finalmente fazer o que querem: programar no próprio ritmo sem aguardar a atribuição ou aprovação de recursos pelas equipes de operações.

Para as equipes de operações, a visibilidade das alterações significa a capacidade de acompanhar e reproduzir problemas rapidamente, melhorando a segurança geral. Com uma trilha de auditoria atualizada, as organizações podem reduzir o risco de alterações não desejadas e corrigi-las antes de entrarem em produção. 

Essas alterações no código, do desenvolvimento à produção, tornam as organizações mais ágeis na resposta às mudanças nos negócios e no ambiente competitivo.

Como usar fluxos de trabalho de CI/CD integrados do GitOps nativos em Kubernetes

Recursos da Red Hat

Para dar os primeiros passos com o GitOps, você precisa de uma infraestrutura que possa ser gerenciada de maneira declarativa. Sendo assim, o GitOps normalmente é usado como um modelo operacional para Kubernetes e desenvolvimento de aplicações nativas em nuvem. Ele também permite implantação contínua para o Kubernetes.

No entanto, o uso do Kubernetes não é obrigatório no GitOps. O GitOps é uma técnica que pode ser aplicada a outra infraestrutura e pipeline de implantação.   

Assim como o Kubernetes, o Ansible é um mecanismo de estado desejado que possibilita modelagem declarativa de sistemas de TI tradicionais e, portanto, pode ser usado no GitOps. Com um painel de controle que usa módulos Ansible, o usuário pode gerenciar aplicações no Kubernetes, em uma infraestrutura de TI existente ou em ambos.

O GitOps pode ser usado para criar pipelines de desenvolvimento, desenvolver aplicações, gerenciar configurações, provisionar clusters Kubernetes e fazer implantações em registros Kubernetes ou de containers.

O GitOps pode ser considerado uma evolução no modelo de Infraestrutura como código (IaC)que usa o Git como o sistema de controle de versão para configurações de infraestrutura. A IaC segue a abordagem declarativa de gerenciamento de infraestrutura ao definir o estado desejado do sistema e acompanhar o estado real dele.

Assim como a IaC, o GitOps também exige uma descrição declarativa do estado desejado do sistema. Ao usar ferramentas declarativas, todos os arquivos de configuração e códigos-fonte podem ser controlados por versão no Git.

Pipelines CI/CD geralmente são acionados por um evento externo, como um código enviado a um repositório. Em um fluxo de trabalho do GitOps, alterações são feitas usando pull requests que modificam o estado no repositório git. 

Para implementar uma nova versão usando um fluxo de trabalho do GitOps, é feita uma pull request no Git, que cria uma alteração no estado declarado do cluster. O operador do GitOps, que fica entre o pipeline do GitOps e o sistema de orquestração, seleciona a confirmação e extrai a nova declaração de estado do Git.  

Uma vez aprovadas e integradas, as alterações são aplicadas automaticamente à infraestrutura dinâmica. Os desenvolvedores podem continuar a usar seus próprios fluxos de trabalho padrão e as práticas de CI/CD.

Ao usar o GitOps com Kubernetes, o operador normalmente será um operador Kubernetes. O operador compara o estado desejado no repositório ao estado real da infraestrutura implantada. O operador atualizará a infraestrutura sempre que uma diferença for percebida entra o estado atual e o que já existe no repositório. O operador também pode monitorar um repositório de imagens de container e fazer atualizações realizando os mesmos processos para implantar novas imagens.

A observabilidade, que se refere a qualquer sistema que possa ser observado, é um conceito importante no GitOps. A observabilidade no GitOps permite a você assegurar que o estado desejado e o estado observado (ou estado real) sejam iguais.

Usar pull requests e um sistema de controle de versão como o Git dá visibilidade ao processo de implantação. Ele permite visualizar e acompanhar todas as mudanças feitas no sistema, além de oferecer uma trilha de auditoria e permitir reversão das alterações se algo der errado.

Os fluxos de trabalho do GitOps podem aumentar a produtividade e a velocidade do desenvolvimento e das implantações, ao mesmo tempo que melhoram a estabilidade e a confiabilidade dos sistemas.

Veja como otimizar seus pipelines CI/CD

O GitOps e o DevOps compartilham alguns princípios e objetivos. O DevOps tem a ver com mudanças culturais e a viabilização do trabalho colaborativo entre equipes.

O GitOps oferece as ferramentas e o framework para implementar práticas de DevOps - como colaboração, CI/CD e controle de versão - nos processos de automação da infraestrutura e implantação de aplicações.  Os desenvolvedores podem trabalhar no repositório de códigos que já conhecem, enquanto os operadores podem colocar as outras peças necessárias no lugar.

Acesse o Red Hat Developer Hub

O Red Hat® OpenShift® é uma plataforma Kubernetes declarativa que os administradores podem configurar e gerenciar usando os princípios do GitOps. Ao trabalhar com infraestruturas e aplicações baseadas no Kubernetes, é possível aplicar consistência entre ciclos de vida de desenvolvimento e clusters. O Red Hat OpenShift consolida a administração e o gerenciamento de aplicações que estão espalhadas entre os recursos de nuvem pública e on-premise para:

  • Verificar se os clusters têm estados semelhantes (configurações, monitoramento, armazenamento), conhecendo as restrições da aplicação no início do ciclo de desenvolvimento.
  • Reverter uma alteração no código em vários clusters, recuperando os clusters de um estado conhecido.
  • Implementar uma alteração enviada ao Git em vários clusters do Red Hat OpenShift.
  • Associar configurações em modelos em toda a nuvem híbrida.

 

GitOps Red Hat OpenShift Kubernetes diagram
 

A Red Hat colabora com projetos open source como ArgoCD e Tekton para implementar uma framework para GitOps. Instale o operador do Red Hat OpenShift Pipelines e descubra como o operador do Red Hat OpenShift GitOps está desenvolvendo novas ferramentas com o Argo para gerenciar o GitOps em implantações existentes do Red Hat OpenShift.


Red Hat® OpenShift® Service on AWS (ROSA) é uma plataforma de aplicações completa e totalmente gerenciada que permite aumentar a eficiência operacional, voltar o foco para a inovação e criar, implantar e expandir aplicações rapidamente em um ambiente AWS nativo. 

Isso significa que o ROSA ajuda as equipes a gerenciar clusters entre regiões, criar e implantar clusters usando ferramentas self-service e automatizar aplicação de patches de segurança e atualizações. Por exemplo, o ROSA facilita a modernização de aplicações ao oferecer a administradores e equipes de infraestrutura os mesmos benefícios que os proprietários de aplicações.


O Red Hat Advanced Cluster Management for Kubernetes oferece gerenciamento multicluster do ciclo de vida do cluster do Kubernetes. O Red Hat Advanced Cluster Management usa uma framework de canal e subscrição, junto com regras de colocação, para implementar automaticamente aplicações em um modelo de estado desejado em vários clusters.


O Red Hat Ansible® Automation Platform coloca seus sistemas no estado desejado, seja qual for o estado atual deles. Os Ansible Playbooks são escritos em YAML e descrevem o estado desejado dos sistemas. Eles são geralmente armazenados em um sistema de controle de origem.

Com o Ansible Automation Platform, você pode adotar as práticas do GitOps em sistemas de TI tradicionais, como rede, nuvem e bare-metal, além do Kubernetes. Você pode usar webhooks para integrar o Ansible Automation Platform a um repositório Git. Quando um link de repositório estiver configurado, o Ansible Automation Platform registrará confirmações Git e usará esses eventos para acionar tarefas de automação a fim de atualizar projetos, gerenciar inventário e fazer implantações. 

Os webhooks permitem que você ative a automação sem intervenção manual quando os eventos acontecerem no sistema de controle de código-fonte. Isso elimina a necessidade de ferramentas adicionais de CI/CD, como o Jenkins, para monitorar repositórios e iniciar trabalhos de automação quando ocorrem mudanças, simplificando o fluxo de trabalho do GitOps e otimizando as operações. Como o Ansible Automation Platform funciona com uma grande variedade de ferramentas de desenvolvimento e implantação, é possível adaptar o fluxo de trabalho do GitOps conforme suas ferramentas e processos preferidos.

Com a integração do Red Hat Advanced Cluster Management, Red Hat OpenShift GitOps e Red Hat Ansible Automation Platform, as equipes de DevOps podem garantir o gerenciamento e a manutenção das configurações em escala para melhorar os pipelines de CI/CD.

Veja como usar o Ansible Automation Platform para GitOps

Hub

Blog da Red Hat

Tudo relacionado à Red Hat: soluções, treinamentos e certificações Red Hat, casos de sucesso de clientes, novidades dos nossos parceiros e notícias sobre projetos das comunidades open source.

Teste as soluções da Red Hat

Você sabia que a Red Hat oferece versões de teste gratuitas de suas soluções? Aproveite e obtenha experiência prática, prepare-se para uma certificação da Red Hat ou avalie na prática se a solução é adequada para ao caso de uso.

Leia mais

What is multi-cloud GitOps?

O GitOps é um conjunto de princípios que orienta seu fluxo de trabalho e possibilita a implantação contínua (CD) de aplicações nativas em nuvem. Ele ajuda você a gerenciar a configuração do cluster e as implantações de aplicações, levando a automação a um processo que antes era manual.

O que é engenharia de plataforma?

A engenharia de plataforma é uma disciplina dentro do desenvolvimento de software que se concentra em otimizar a produtividade, a duração de ciclo de aplicação e o time to market.

Site Reliability Engineering: o que é SRE?

Site Reliability Engineering (SRE) ou engenharia de confiabilidade de sites é uma abordagem da engenharia de software para gerenciar sistemas e automatizar tarefas operacionais de TI.

DevOps: leitura recomendada