Account Accedi
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.

Keep reading

ARTICOLO

Cos'è la metodologia DevSecOps?

Per sfruttare tutta l'agilità e la reattività di un approccio DevOps, occorre tenere conto anche di un altro elemento cruciale dell'intero ciclo di vita delle tue applicazioni: la sicurezza IT.

ARTICOLO

Cosa si intende con CI/CD?

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

ARTICOLO

Il ruolo di un ingegnere DevOps

Un ingegnere DevOps possiede competenze ed esperienze specifiche che promuovono collaborazione, innovazione e trasformazione all'interno di un'azienda.  

Scopri di più su DevOps

Prodotti

Red Hat Open Innovation Labs

Un incontro conoscitivo approfondito con gli esperti di Red Hat in cui apprendere una metodologia agile e identificare gli strumenti open source più adatti a risolvere i problemi della tua azienda.

Red Hat Consulting

Collabora con il nostro team di consulenti strategici in grado di analizzare l'azienda nel suo insieme e valutare le sfide da affrontare, per aiutarti a superarle con soluzioni complete e convenienti.

Risorse

Checklist

Automazione aziendale con una metodologia DevOps

White paper

Ottimizza le pipeline CI/CD con Red Hat Ansible Automation Platform

Illustration - mail

Ricevi contenuti simili

Iscriviti a Red Hat Shares, la nostra newsletter gratuita.