O que é o GitOps?
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.
Veja mais na série GitOps Guide to the Galaxy na OpenShift.tv, quinzenalmente às quintas-feiras às 15h ET
Por que usar o GitOps?
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.
Recursos da Red Hat
Como dar os primeiros passos com o GitOps
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 que é o fluxo de trabalho do GitOps?
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.
Qual é a diferença entre o GitOps e o DevOps?
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.
Como a Red Hat oferece suporte para o GitOps
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.
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.
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.