Accedi / Registrati Account
Jump to section

Che cos'è GitOps?

Copia URL

GitOps è una serie di procedure per la gestione delle configurazioni di applicazioni e infrastrutture basata su Git, un sistema di controllo delle versioni open source. GitOps utilizza Git come singola fonte di attendibilità per le applicazioni e l'infrastruttura dichiarativa.

Nello specifico, utilizza le richieste pull Git per gestire automaticamente l'installazione e il deployment dell'infrastruttura. Il repository Git contiene informazioni complete sulla condizione del sistema, permettendo di visualizzare e controllare la traccia delle modifiche relative a tale condizione.

GitOps si basa sull'esperienza degli sviluppatori, permettendo ai team di gestire l'infrastruttura con gli stessi strumenti e processi che utilizzano per sviluppare il software. Diversamente da Git, GitOps offre la possibilità di scegliere gli strumenti necessari.

Il termine GitOps è stato introdotto da Weaveworks.

Per iniziare a utilizzare GitOps occorre 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. Inoltre, consente il deployment continuo per Kubernetes.

Kubernetes non costituisce tuttavia un requisito per l'utilizzo di GitOps. La tecnica GitOps può essere applicata anche ad altre pipeline di deployment e infrastrutture.   

Come Kubernetes, anche Ansible è un motore di stato desiderato che 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, implementare cluster Kubernetes ed eseguire il deployment di registri Kubernetes o di container.

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). 

Utilizzando richieste pull e un sistema di controllo delle versioni, come Git, è possibile garantire visibilità sul processo di deployment, per verificare e monitorare tutte le modifiche apportate a un sistema, generare un audit trail e avere la possibilità di 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, migliorando anche 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 soprattutto lo scopo di mettere a disposizione dei team operativi e di sviluppo uno strumento per collaborare insieme.

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. 

Gli sviluppatori possono continuare a utilizzare i repository di codice che conoscono già, mentre i team operativi possono introdurre altri componenti necessari.

Red Hat® OpenShift® è una piattaforma Kubernetes dichiarativa, che può essere configurata e gestita dagli amministratori utilizzando 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 le applicazioni di amministrazione e gestione distribuite fra le risorse on premise e di cloud pubblico.

Red Hat OpenShift GitOps è un componente aggiuntivo di Red Hat OpenShift che fornisce Argo CD e altri strumenti per consentire l'implementazione di flussi di lavoro GitOps per la configurazione dei cluster e la distribuzione delle applicazioni. 

Red Hat Ansible Automation Platform è un motore per la gestione della condizione target che consente la modellazione dichiarativa dei sistemi. I playbook Ansible, scritti in YAML, descrivono la condizione desiderata dei sistemi, in genere controllati dal codice sorgente. Red Hat Ansible Automation Platform permette ai sistemi di raggiungere la condizione desiderata, indipendentemente da quella attuale. 

Ansible Automation Platform consente di applicare le procedure GitOps ai sistemi IT tradizionali, quali reti, cloud e sistemi bare metal, oltre che a Kubernetes. In Ansible Automation Platform sono integrati alcuni webhook di automazione, che consentono di supportare le procedure IaC e GitOps. 

Gli webhook permettono di creare un collegamento nativo fra il repository Git e Ansible Automation Platform. 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 di deployment.

Approfondisci

Articolo

Cosa si intende con CI/CD?

CI/CD è un metodo per la distribuzione frequente delle app ai clienti, che prevede l'introduzione dell'automazione nelle varie fasi di sviluppo applicativo. Si basa principalmente sui concetti di integrazione, distribuzione e deployment continui.

Articolo

Cosa si intende con Infrastructure as Code (IaC)?

Con infrastruttura as Code (IaC) intendiamo un approccio alla gestione e al provisioning dell'infrastruttura che avviene tramite codice anziché con processi manuali. I file di configurazione creati con l'IaC contengono le specifiche dell'infrastruttura e semplificano la modifica e la distribuzione delle configurazioni. 

Argomento

I vantaggi dell'approccio DevOps

DevOps è un approccio alla cultura, all'automazione e alla progettazione delle piattaforme, espressamente concepito per offrire all'azienda livelli superiori di valore e reattività attraverso un'erogazione dei servizi efficiente e di alta qualità, che richiede una collaborazione fra i team operativi e di sviluppo.

Introduzione alla soluzioni GitOps

Red Hat OpenShift

Una piattaforma container enterprise basata su Kubernetes, che consente di automatizzare le operazioni in tutto l'insieme di tecnologie, per gestire deployment di cloud ibridi, multicloud e sistemi edge. 

Red Hat Ansible Automation Platform

La piattaforma ideale per il tuo progetto di automazione da estendere all'intera organizzazione. Offre tutti gli strumenti necessari per adottare un approccio di livello enterprise all'automazione.