Jump to section

Come funziona GitOps?

Copia URL

Red Hat Ansible Automation Platform: guida introduttiva

Adotta o incrementa l'automazione aziendale. Scopri come leggendo questo ebook rivolto alle organizzazioni che intendono intraprendere un percorso di automazione e alle aziende che lo hanno già intrapreso.

GitOps offre un approccio Infrastructure as Code (IaC) utilizzando i repository Git come singola fonte di attendibilità. Il codice inviato controlla il processo CI, mentre il processo CD verifica e applica i requisiti di sicurezza, dell'Infrastructure as Code e qualsiasi altro vincolo impostato al framework applicativo. GitOps tiene traccia di qualunque modifica al codice per semplificare l'aggiornamento e fornire il controllo delle versioni in caso fosse necessario un rollback.

GitOps offre:

  • Un flusso di lavoro standardizzato per lo sviluppo applicativo
  • Maggiore sicurezza per poter definire fin da subito i requisiti delle applicazioni
  • Maggiore affidabilità grazie alla visibilità e al controllo delle versioni forniti da Git
  • Coerenza fra cluster, cloud e ambienti on premise

Gli strumenti che si possono utilizzare per creare un framework GitOps sono molti: per esempio, repository Git, Kubernetes, strumenti di integrazione e distribuzione continue (CI/CD) e strumenti di gestione della configurazione.

L'approccio GitOps alla distribuzione continua su Kubernetes

Per saperne di più su GitOps non perderti l'appuntamento con GitOps Guide to the Galaxy, in diretta su OpenShift.tv a giovedì alterni alle ore 15:00 Eastern Time (ET)

GitOps è il framework che permette di realizzare gli obiettivi prefissati alle organizzazioni che hanno scelto di adottare i principi e gli approcci della cultura DevOps. Secondo il rapporto annuale State of DevOps Report, le organizzazioni che adottano procedure DevOps ottengono un incremento significativo nel tasso di innovazione di applicazioni e codice, oltre ad aumentare la stabilità. 

Utilizzando gli stessi flussi di lavoro basati su Git che gli sviluppatori già conoscono, GitOps è in grado di innovare a partire da processi esistenti, dallo sviluppo applicativo al deployment, alla gestione del ciclo di vita dell'applicazione, alla configurazione dell'infrastruttura. Qualunque modifica introdotta durante il ciclo di vita dell'applicazione viene registrata nel repository Git e può essere sottoposta a verifica. Apportare le modifiche tramite Git offre agli sviluppatori la possibilità di dedicarsi al codice in base ai propri ritmi senza più attendere che le risorse vengano assegnate o approvate dai team operativi.

Ai team operativi invece GitOps offre la visibilità sulle modifiche che permette di monitorare e riprodurre i problemi velocemente e contribuisce quindi ad aumentare la sicurezza generale. Grazie a un audit trail aggiornato, le organizzazioni sono in grado di ridurre l'inserimento di modifiche indesiderate e di correggerle prima che passino in produzione. 

La possibilità di modificare il codice dalla fase di sviluppo a quella di produzione consente alle organizzazioni di adattarsi agilmente ai cambiamenti aziendali e del mercato.

Per utilizzare GitOps occorre innanzitutto disporre di un'infrastruttura gestibile in modo dichiarativo. Per questo motivo GitOps viene spesso utilizzato come modello operativo per Kubernetes e per lo sviluppo di applicazioni cloud native. Consente inoltre il deployment continuo per Kubernetes.

La tecnica GitOps non è tuttavia vincolata all'impiego di Kubernetes, ma può essere applicata anche ad altre pipeline di deployment e infrastruttura.   

Come Kubernetes, anche Ansible è un motore che, permettendoti di descrivere la condizione target, consente la modellazione dichiarativa dei sistemi IT tradizionali e, di conseguenza, può essere utilizzato per GitOps. Utilizzando i moduli Ansible è possibile gestire applicazioni in Kubernetes, in un'infrastruttura IT esistente o in entrambi gli ambienti, tramite un singolo piano di controllo.

GitOps permette di creare pipeline di sviluppo, programmare applicazioni, gestire configurazioni, eseguire il provisioning dei cluster Kubernetes e il deployment in Kubernetes o in registri dei container.

Qual è la differenza fra Ansible e Red Hat Ansible Automation Platform?

Adotta subito Red Hat OpenShift GitOps

La tecnica GitOps può essere considerata un'evoluzione di Infrastructure as Code (IaC), che utilizza Git come sistema di controllo delle versioni per le configurazioni di un'infrastruttura. IaC utilizza spesso un approccio dichiarativo alla gestione dell'infrastruttura, definendo la condizione target del sistema e monitorandone lo stato effettivo.

Proprio come IaC, anche GitOps richiede una descrizione dichiarativa della condizione desiderata del sistema. Gli strumenti dichiarativi consentono di controllare le versioni di file di configurazione e codice sorgente in Git.

In genere le pipeline CI/CD vengono attivate da un evento esterno, come il push del codice in un repository. In un flusso di lavoro GitOps le modifiche vengono eseguite tramite richieste pull che modificano la condizione nel repository Git. 

Per distribuire una nuova versione utilizzando un flusso di lavoro GitOps, è necessario eseguire una richiesta pull in Git allo scopo di modificare la condizione dichiarata del cluster. L'operatore GitOps, che si trova fra la pipeline GitOps e il sistema di orchestrazione, intercetta il commit ed esegue il pull della nuova dichiarazione di condizione da Git.  

Una volta approvate e unite, le modifiche vengono automaticamente applicate all'infrastruttura di produzione. Gli sviluppatori possono continuare a utilizzare il flusso di lavoro standard e le consuete procedure di integrazione e distribuzione continue (CI/CD).

Quando si utilizza GitOps con Kubernetes, solitamente si utilizza un operatore Kubernetes, che confronta la condizione target registrata nel repository con la condizione effettiva dell'infrastruttura installata. Tale operatore aggiorna l'infrastruttura ogni volta che rileva una differenza tra la condizione effettiva e quella registrata nel repository. L'operatore può anche monitorare un repository di immagini container e applicare gli aggiornamenti, esattamente come esegue il deployment delle nuove immagini.

Il concetto di osservabilità, ovvero la possibilità di osservare un sistema, è molto importante in GitOps, poiché consente di verificare che la condizione target coincida con quella osservata (o condizione effettiva).

L'utilizzo di richieste pull e di un sistema di controllo delle versioni come Git garantiscono piena visibilità sul processo di deployment. I team possono verificare e monitorare tutte le modifiche apportate a un sistema, generare un audit trail ed eseguire il rollback delle modifiche in caso di errore.

I flussi di lavoro GitOps consentono di aumentare la produttività e la velocità di sviluppo e deployment, oltre a incrementare i livelli di stabilità e affidabilità dei sistemi.

GitOps e DevOps presentano alcuni principi e obiettivi comuni. La metodologia DevOps è incentrata sul cambiamento culturale e ha lo scopo di mettere a disposizione dei team operativi e di sviluppo un approccio di lavoro collaborativo.

GitOps offre invece gli strumenti e un framework che consentono di applicare le procedure DevOps, quali collaborazione, CI/CD e controllo delle versioni, all'automazione delle infrastrutture e al deployment delle applicazioni. Con GitOps gli sviluppatori possono continuare a utilizzare i repository di codice che già conoscono, mentre i team operativi sono in grado di introdurre altri componenti necessari.

Scopri la piattaforma Red Hat Developer Hub

Red Hat® OpenShift® è una piattaforma Kubernetes dichiarativa, che gli amministratori possono configurare e gestire applicando i principi GitOps. Utilizzando applicazioni e infrastrutture basate su Kubernetes è possibile garantire coerenza fra cluster e cicli di vita dello sviluppo. Red Hat OpenShift consolida l'amministrazione e la gestione delle applicazioni distribuite fra ambienti on premise e cloud pubblici per permettere di:

  • Controllare che tutti i cluster dispongano di condizioni simili (configurazioni, monitoraggio, storage) rendendo noti i requisiti delle applicazioni fin dall'inizio del ciclo di vita dello sviluppo.
  • Eseguire il rollback delle modifiche al codice su più cluster ripristinando i cluster da uno stato conosciuto.
  • Estendere le modifiche inviate a Git a più cluster Red Hat OpenShift.
  • Collegare le configurazioni basate su modello in tutto il cloud ibrido.

 

GitOps Red Hat OpenShift Kubernetes diagram
 

Red Hat collabora all'adozione di un framework per GitOps contribuendo a progetti open source come ArgoCD e Tekton. Installa l'operatore Red Hat OpenShift Pipelines e scopri i nuovi strumenti resi accessibili dalla collaborazione dell'operatore Red Hat OpenShift GitOps con Argo per la gestione di GitOps nei deployment Red Hat OpenShift esistenti.


Red Hat OpenShift Service on AWS (ROSA) è una piattaforma applicativa pronta all'uso e completamente gestita che consente un aumento dell'efficienza operativa e un'attenzione rinnovata verso l'innovazione, promuovendo lo sviluppo, il deployment e la scalabilità delle applicazioni in modo rapido in un ambiente nativo AWS. 

Ciò significa che ROSA aiuta i team a gestire i cluster in aree geografiche diverse, creare ed eseguire il deployment dei cluster con strumenti self-service e rendere automatici gli upgrade e le patch di sicurezza. Ad esempio, ROSA favorisce la modernizzazione delle applicazioni in quanto offre agli amministratori e ai team dedicati all'infrastruttura gli stessi vantaggi che offre ai proprietari delle applicazioni.


Red Hat Advanced Cluster Management for Kubernetes fornisce funzioni per la gestione di più cluster specificamente concepite per il ciclo di vita dei cluster Kubernetes. Red Hat Advanced Cluster Management utilizza un framework di sottoscrizioni e canali, insieme a criteri di posizionamento, per distribuire automaticamente le applicazioni su più cluster in base a una condizione target desiderata.


Red Hat Ansible® Automation Platform permette ai sistemi di raggiungere la condizione desiderata, indipendentemente da quella attuale. Gli Ansible Playbook, scritti in YAML, descrivono la condizione target dei sistemi, in genere controllati dal codice sorgente. 

Ansible Automation Platform consente di applicare le procedure GitOps ai sistemi IT tradizionali, quali reti, cloud e sistemi bare metal, oltre che a Kubernetes. Puoi utilizzare webhook per integrare Ansible Automation Platform con un repository Git. Una volta configurato il collegamento al repository, Ansible Automation Platform intercetta i commit Git del sistema Git e utilizza tali eventi allo scopo di attivare i processi di automazione per l'aggiornamento dei progetti, la gestione degli inventari e l'esecuzione dei deployment. 

Con i webhook puoi innescare automaticamente l'automazione quando gli eventi si verificano nel sistema di controllo della sorgente. Si evita così di dover ricorrere ad altri strumenti CI/CD, come Jenkins, per monitorare i repository e avviare le attività di automazione in presenza di modifiche, semplificando così il flusso di lavoro GitOps e ottimizzando le operazioni. Ansible Automation Platform è compatibile con un'ampia gamma di strumenti di sviluppo e automazione, ed è pertanto possibile personalizzare il flusso di lavoro GitOps con gli strumenti e i processi preferiti.

L'integrazione di Red Hat Advanced Cluster Management, Red Hat OpenShift GitOps e Red Hat Ansible Automation Platform aiuta i team DevOps a gestire e aggiornare le configurazioni su larga scala per migliorare le pipeline CI/CD.

Approfondisci

Blog

OpenShift Pipelines and OpenShift GitOps are now Generally Available

Red Hat OpenShift Pipelines e OpenShift GitOps sono la base per l'uso di pipeline CI/CD cloud native e GitOps su Red Hat OpenShift Container Platform.

Articolo

Cosa si intende con CI/CD?

Il metodo CI/CD introduce l'automazione costante e il monitoraggio continuo per tutto il ciclo di vita delle applicazioni, dalle fasi di integrazione e test a quelle di distribuzione e deployment.

Blog

Understanding GitOps with Red Hat Advanced Cluster Management

Scopri in che modo GitOps può incrementare la distribuzione delle applicazioni su più cloud.