O que é GitOps?

Copiar URL

O GitOps é um conjunto de práticas para gerenciar configurações de infraestruturas e aplicações. Seu objetivo é expandir os processos existentes e melhorar o ciclo de vida das aplicações.

O GitOps usa repositórios Git como “single source of truth” para disponibilizar a infraestrutura como código (IaC). IaC (Infrastructure as Code) é a prática de gerenciar e provisionar infraestruturas utilizando código, em vez de processos manuais. Com a IaC, são criados arquivos de configuração que definem a sua infraestrutura e garantem que o mesmo ambiente seja provisionado de maneira idêntica todas as vezes. Ela é uma importante parte da implementação de práticas de DevOps e de integração e entrega contínuas (CI/CD)

O GitOps exige uma descrição declarativa do estado desejado do sistema. Ao utilizar ferramentas declarativas, você pode fazer controle de versão de todos os arquivos de configuração e código-fonte no Git. Todas as alterações no código são registradas, facilitando as atualizações e oferecendo controle de versão caso uma reversão seja necessária.

O GitOps oferece:

  • Um fluxo de trabalho padronizado para o desenvolvimento de aplicações.
  • Maior segurança com mais visibilidade e auditabilidade.
  • Maior confiabilidade com visibilidade e controle de versão via Git.
  • Consistência em ambientes on-premise, nuvens e clusters.

Explore o operador Red Hat OpenShift GitOps

O GitOps e o DevOps têm alguns princípios e objetivos em comum. O DevOps envolve mudanças culturais e a viabilização do trabalho colaborativo entre as equipes de desenvolvimento e operações.

Já o GitOps oferece ferramentas e framework para aplicar práticas de DevOps, como colaboração, CI/CD e controle de versão, na automação da infraestrutura e na implantação de aplicações, além de práticas de engenharia de plataforma, como plataformas de desenvolvedor internas (IDPs).

A engenharia de plataforma expande as práticas de DevOps, pois oferece ferramentas, serviços e fluxos de trabalho padronizados para que as equipes de desenvolvimento possam criar soluções de software com mais eficiência. Engenharia de plataforma é um termo mais recente, que descreve a prática de organizar serviços e recursos internos para que as equipes de desenvolvimento criem soluções sem a necessidade de gerenciar diretamente os recursos subjacentes.

Essa engenharia surgiu como um componente complementar e essencial para superar os desafios de escalar o DevOps em todas as organizações. As equipes criam, mantêm e evoluem continuamente a plataforma de desenvolvedor interna (IDP) de uma organização e atendem às equipes de desenvolvimento com uma abordagem centrada no cliente, oferecendo ferramentas, serviços e recursos comuns e reutilizáveis que agregam valor. Os engenheiros de plataforma conectam a infraestrutura da organização e os serviços de back-end necessários para criar e entregar aplicações de software com as equipes de desenvolvedores que precisam de fácil acesso. Os princípios básicos do GitOps também se alinham à engenharia de plataforma, estabelecendo uma single source of truth para definições de infraestrutura e ciclos de vida de desenvolvimento da aplicação, que podem ser incorporados às práticas de engenharia de plataforma para facilitar a colaboração e a coordenação entre equipes. 

Recursos da Red Hat

Como o GitOps é uma mudança nos processos, pode levar algum tempo para que as equipes se adaptem. Essa abordagem exige um nível mais elevado de colaboração e comunicação entre os times. Cultivar uma cultura de feedback é uma forma de mitigar esses desafios, embora eles ainda possam surgir.

Apesar dos desafios, o GitOps incorpora as filosofias e abordagens propostas a quem investe em uma cultura DevOps e oferece um framework para começar a alcançar os resultados esperados.

Ao utilizar fluxos de trabalho baseados no Git com os quais os desenvolvedores já estão familiarizados, o GitOps expande os processos existentes, como desenvolvimento de aplicações, implantação, gerenciamento do ciclo de vida da aplicação e configuração da infraestrutura. Os desenvolvedores trabalham em repositórios de código que já conhecem, e as equipes de operações podem empregar as ferramentas e técnicas em uso. Cada alteração ao longo do ciclo de vida da aplicação é registrada no repositório Git e pode ser auditada.

A capacidade de fazer alterações pelo Git, dá aos desenvolvedores mais autonomia para programar no seu próprio ritmo, sem depender da liberação de recursos ou da aprovação das equipes de operações.

Para as equipes de operações, essa visibilidade permite monitorar e reproduzir incidentes com rapidez, melhorando a segurança geral. Com uma trilha de auditoria sempre atualizada, as organizações reduzem o risco de alterações indesejadas e conseguem corrigi-las antes que cheguem à produção.

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

 Muitas ferramentas podem ser combinadas para criar um framework de DevOps. Por exemplo, repositórios Git, Kubernetesferramentas de integração e entrega contínuas (CI/CD) e recursos de gerenciamento de configurações. Para escolher o conjunto adequado de ferramentas, os desenvolvedores devem identificar suas necessidades e avaliar quais funcionalidades respondem a essas demandas. Aqui estão algumas ferramentas.  

Ferramentas de CI

A integração contínua (CI) é a prática de integrar alterações a um repositório de código-fonte compartilhado de maneira automática e frequente. À medida que os usuários fazem atualizações, etapas de testes automatizados são acionadas para assegurar a confiabilidade das alterações integradas no código. 

Tekton: um framework do Kubernetes para criar sistemas de CI/CD. Ele oferece aos engenheiros e desenvolvedores a flexibilidade, as práticas recomendadas e a padronização necessárias para desenvolver, testar e implantar em sistemas on-premise e provedores de nuvem. 

Jenkins: um servidor de automação open source baseado no Java. Facilita a integração das alterações pelos desenvolvedores, permitindo testar, compilar e implantar os projetos de forma contínua, com o mínimo de configuração. O Jenkins X é uma extensão do ecossistema Jenkins que automatiza os pipelines de CI/CD na nuvem. 

Ferramentas de CD

A implantação e/ou entrega contínua (CD) é um processo em duas etapas que envolve a integração, teste e entrega de alterações no código. A entrega contínua automatiza a disponibilização nos repositórios de código validado, após a automação dos builds e a execução de testes de unidade e integração na CI. A implantação contínua é uma extensão da entrega contínua. Nela, as alterações feitas pelos desenvolvedores são enviadas automaticamente do repositório para a produção, onde ficam acessíveis para os usuários.

Argo CD: uma ferramenta declarativa de entrega contínua para Kubernetes. Permite que as equipes de desenvolvimento implantem e gerenciem aplicações sem precisar de conhecimento aprofundado em Kubernetes nem de acesso ao sistema completo. Ao monitorar as aplicações em execução, o Argo CD assegura que elas estejam sempre nos estados desejados. 

Comece com o Argo CD

Flux: uma ferramenta do GitOps que automatiza a implantação nos clusters Kubernetes mantendo seus estados em sincronia com os repositórios Git. Baseado em um conjunto de extensões de API do Kubernetes, o Flux oferece suporte à implantação de aplicações e ao gerenciamento da infraestrutura.

Para começar com o GitOps, você precisa de uma infraestrutura compatível com o gerenciamento declarativo. Por isso, o GitOps é muito usado como modelo operacional para o desenvolvimento de aplicações nativas em nuvem e para o Kubernetes, possibilitando a implantação contínua nessa plataforma.

No entanto, o GitOps não requer o uso do Kubernetes. O GitOps é uma técnica que pode ser aplicada a outras infraestruturas e pipelines de implantação. Ele pode ser usado para criar pipelines de desenvolvimento, programar aplicações, gerenciar configurações, provisionar clusters do Kubernetes e fazer implantações em registros de containers ou do Kubernetes.

Use o GitOps no Red Hat OpenShift

O GitOps pode ser considerado uma evolução da IaC que usa o Git como sistema de controle de versão para as configurações da infraestrutura. A IaC costuma seguir a abordagem declarativa de gerenciamento da infraestrutura ao definir o estado desejado do sistema e acompanhar seu estado real.

Assim como a IaC, o GitOps também exige uma descrição declarativa do estado desejado do sistema. Com as ferramentas declarativas, é possível usar o Git para o controle de versão de arquivos de configuração e códigos-fonte.

Os pipelines de 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, as alterações são feitas usando pull requests que modificam o estado no repositório Git. 

Para implementar um novo release 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 GitOps identifica o commit e obtém a nova declaração de estado diretamente do Git.  

Uma vez aprovadas e integradas, as alterações são aplicadas automaticamente à infraestrutura em produção. Os desenvolvedores podem continuar usando as práticas de CI/CD e fluxos de trabalho padrão, já que a CD se torna responsabilidade do mecanismo do GitOps, podendo funcionar de maneira autônoma ou como parte de uma solução orquestrada de CI.

Geralmente, usar GitOps com o Kubernetes envolve um operador Kubernetes. O operador compara o estado desejado no repositório com o estado real da infraestrutura implantada. Ele atualiza a infraestrutura e as aplicações sempre que há uma discrepância entre o estado real e o estado do repositório.

A observabilidade é um conceito importante no GitOps, aplicável a qualquer sistema que possa ser monitorado. Com ela, você assegura que o estado desejado e o observado (ou real) sejam iguais. O GitOps oferece observabilidade sobre os recursos que implanta, mas não funciona como uma ferramenta geral de monitoramento. O Red Hat® OpenShift® Observability traz um conjunto completo de ferramentas que utilizam métricas, logs, traces e eventos para ajudar você a superar essas limitações e estabelecer ciclos de feedback entre os sistemas de aplicações e repositórios Git. Juntos, o GitOps e o OpenShift Observability oferecem insights sobre os sistemas de aplicações por meio do monitoramento, análise e solução de problemas. 

Usar pull requests e um sistema de controle de versão como o Git proporciona visibilidade sobre o processo de implantação. Assim, você visualiza e acompanha todas as alterações feitas em um sistema, além de obter uma trilha de auditoria e poder reverter as mudanças se algo der errado.

Os fluxos de trabalho do GitOps aumentam a produtividade e a velocidade do desenvolvimento e das implantações, melhorando a estabilidade e a confiabilidade dos sistemas.

Mais informações sobre os fluxos de trabalho do GitOps

A Red Hat tem várias soluções que oferecem suporte à fluxos de trabalho do GitOps. O Red Hat OpenShift é uma plataforma de aplicações unificada que pode ser configurada e gerenciada seguindo os princípios do GitOps. Isso aumenta a consistência nos clusters Kubernetes e nos ciclos de vida de desenvolvimento. O Red Hat OpenShift consolida a administração e o gerenciamento de aplicações distribuídas entre recursos on-premise e na nuvem pública para:

  • Verificar se os clusters possuem estados semelhantes (configurações, monitoramento, armazenamento), identificando restrições das aplicações 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.
  • Aplicar configurações padrão em toda a nuvem híbrida.

 

GitOps Red Hat OpenShift Kubernetes diagram
 

O Red Hat OpenShift GitOps é um operador que oferece um fluxo de trabalho com repositórios Git, ferramentas de integração e entrega contínuas (CI/CD) e Kubernetes. Isso torna o desenvolvimento de software mais rápido, seguro e escalável, sem prejudicar a qualidade. Com ele, você pode criar e integrar fluxos de trabalho de CD declarativos e orientados por Git diretamente na plataforma de desenvolvimento de aplicações. Tradicionalmente, você usa só uma ferramenta de CI/CD, como o Jenkins e o Tekton, mas duas são necessárias nesse caso. Você pode usar o Jenkins e o Tekton na CI, além do GitOps, que é um mecanismo de CD. A Red Hat colabora com projetos open source como o Argo CD para implementar um framework de GitOps. Instale o operador do Red Hat OpenShift GitOps e desenvolva novas ferramentas com o Argo para gerenciar o GitOps nas implantações do Red Hat OpenShift.

O OpenShift GitOps está disponível nas versões autogerenciada, para serviços em nuvem e para edge computing. Com serviços em nuvem gerenciados como o Red Hat OpenShift Service on AWS (ROSA), Microsoft Azure Red Hat OpenShift (ARO) e Red Hat OpenShift Dedicated (OSD), as organizações aumentam a eficiência operacional e podem se concentrar novamente na inovação, acelerando a criação, implantação e escala das aplicações. 

As edições autogerenciadas do OpenShift, como o Red Hat OpenShift Virtualization Engine, oferecem a funcionalidade de virtualização do Red Hat OpenShift para implantar, gerenciar e escalar máquinas virtuais (VMs). O OpenShift GitOps oferece suporte à implantação automatizada de VMs e, quando combinado ao OpenShift Virtualization Engine, ajuda os usuários a migrarem e gerenciarem essas máquinas de acordo com suas necessidades de virtualização. O build do MicroShift desenvolvido pela Red Hat leva o poder e a escalabilidade do Kubernetes para a edge. Com ele, as aplicações podem ser escritas uma única vez e executadas onde forem necessárias, seja perto da fonte de dados ou do usuário final.

O Red Hat Advanced Cluster Management for Kubernetes possibilita o gerenciamento multicluster do ciclo de vida dos clusters Kubernetes. Essa solução utiliza um framework de canal e subscrição com regras de posicionamento para implementar automaticamente aplicações em um modelo de estado desejado, em vários clusters. O Advanced Cluster Management for Kubernetes usa o OpenShift GitOps como mecanismo do GitOps. Ele inclui funcionalidades que ajudam a implantar políticas e gerenciar conjuntos de aplicações, instâncias do Argo e configurações de clusters do GitOps. 

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, geralmente mantidos no controle de origem. O Ansible pode ser uma ótima ferramenta como parte do seu fluxo de trabalho do GitOps. Como o Argo e o GitOps envolvem apenas o Kubernetes, você pode usar o Ansible para implantar a automação fora do Kuberntes, especialmente no caso de ações importantes. Com a integração entre o Red Hat Advanced Cluster Management, o Red Hat OpenShift GitOps e o Red Hat Ansible Automation Platform, as equipes de DevOps asseguram o gerenciamento e a manutenção das configurações em escala para melhorar os pipelines de CI/CD.

Confira exemplos reais de como seguir as práticas do GitOps no Kubernetes

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 é o fluxo de trabalho do GitOps?

O GitOps é uma abordagem moderna de desenvolvimento e implantação de software onde toda a infraestrutura e o ciclo de vida da aplicação são gerenciados por repositórios git como single source of truth.

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.

DevOps: leitura recomendada