Jump to section

Cos'è GitOps per il multicloud?

Copia URL

GitOps è un insieme di principi che regola il flusso di lavoro aziendale e permette di implementare il deployment continuo (CD) per le applicazioni cloud native. Semplifica la gestione della configurazione dei cluster e i deployment delle applicazioni automatizzando i processi manuali. Ad esempio, GitOps può aiutare a gestire i cluster Red Hat® OpenShift® Container Platform in ambienti Kubernetes multicluster. Permette di automatizzare i deployment, indipendentemente dal grado di complessità, e rende quindi i flussi di lavoro delle applicazioni più efficienti.

GitOps semplifica il deployment delle nuove applicazioni ma anche l'aggiornamento di quelle esistenti. Basta aggiornare il repository e un flusso di lavoro GitOps si occuperà di automatizzare tutto il resto. 

In particolare GitOps consente di:

  • Gestire i deployment di cloud ibrido e multicloud in ambienti cloud pubblici e privati
  • Gestire il ciclo di vita delle applicazioni e migliorare la governance su più cluster
  • Gestire in maniera sicura i segreti di tutto il deployment

Queste funzionalità permettono di far fronte alle sfide poste dall'approccio multicloud, nello specifico il bisogno di garantire la coerenza, la sicurezza e la collaborazione per carichi di lavoro che si spostano tra ambienti cloud pubblici, privati e on premise. 

All'interno delle pratiche GitOps il repository Git funge da singola fonte di attendibilità per la configurazione di sistemi e applicazioni. Si tratta di una descrizione dichiarativa dell'infrastruttura per l'ambiente aziendale e opera in sinergia con i processi automatizzati gestiti da strumenti GitOps quali Argo CD. Questo processo di automazione assicura che l'ambiente sia sempre conforme alla condizione descritta. Il repository Git tiene anche traccia delle modifiche e permette quindi di visualizzare tutte le variazioni apportate al sistema. 

Inoltre, archiviare infrastruttura e configurazione con un approccio "as Code" contribuisce a ridurre la proliferazione incontrollata. È possibile archiviare la configurazione di cluster e applicazioni "as Code" all'interno di repository Git. 

Le organizzazioni moderne devono riuscire a sviluppare, distribuire e gestire le applicazioni in ambienti cloud ibridi e aperti in modo stabile, semplice e sicuro. A tale fine, hanno bisogno di una strategia di cloud ibrido che includa deployment multicloud. 

L'approccio multicloud presenta anche delle difficoltà notevoli. Ad esempio, i numerosi provider di servizi cloud forniscono strumenti diversi che spesso non sono compatibili con le offerte di altri fornitori. La mancanza di portabilità significa non solo che la migrazione dei carichi di lavoro sarà più costosa e complessa, ma espone anche l'azienda a maggiori rischi per la sicurezza e la privacy dei dati.  

Kubernetes aiuta a risolvere molte di queste criticità. Permette infatti di eseguire più cluster in diversi ambienti cloud e on premise, semplifica il trasferimento dei carichi di lavoro tra gli ambienti e riduce i rischi per la sicurezza.  

Un deployment di questo tipo consente di eseguire i carichi di lavoro in più cluster e in diversi cloud privati o pubblici. Si tratta di una strategia efficace per alleviare le complessità del multicloud, ma richiede un approccio Infrastructure as Code (IaC). In sostanza, una moderna strategia multicloud richiede GitOps. 

Come accennato in precedenza, GitOps utilizza i repository Git come singola fonte di attendibilità per offrire un approccio Infrastructure as Code. Il codice inviato passa prima attraverso il processo di integrazione continua (CI), mentre il processo di distribuzione continua (CD) verifica e applica i requisiti. Tutte le modifiche al codice vengono registrate per permettere il controllo della versione e la revisione. 

GitOps favorisce la collaborazione tra i team dell'infrastruttura per accelerare il processo di sviluppo, e garantisce anche un elevato livello di coerenza perché introduce l'automazione al posto dei processi manuali, che sono più costosi e comportano un maggiore rischio di errori umani.  

Per le organizzazioni che adottano un approccio multicloud e necessitano di coerenza e sicurezza nei loro ambienti, una soluzione GitOps, come Red Hat OpenShift GitOps, può essere l'ideale.

Red Hat OpenShift GitOps è un operatore che installa e configura un'istanza Argo CD. Gestisce la configurazione dell'infrastruttura e i deployment delle applicazioni, organizzando il processo di deployment per determinati repository di configurazione. Due sono i repository essenziali per il processo:

  • Il repository dell'applicazione con il codice sorgente
  • Il repository della configurazione dell'ambiente che definisce la condizione target dell'applicazione

Per gestire le risorse del cluster, Red Hat OpenShift GitOps utilizza Argo CD, uno strumento open source che si occupa della parte di distribuzione continua all'interno delle pratiche di integrazione e distribuzione continue (CI/CD) delle applicazioni. Argo CD funge da controller per Red Hat OpenShift GitOps e si occupa di monitorare le descrizioni e le configurazioni dello stato dell'applicazione, come definito in un repository Git. Confronta lo stato definito con la condizione effettiva e segnala eventuali configurazioni che si discostano dalla descrizione specificata. 

In base a questi report gli amministratori possono risincronizzare le configurazioni alla condizione target. La risincronizzazione può avvenire manualmente oppure in maniera automatizzata, e in quel caso si parla di configurazione "autoriparante".

Pertanto, Red Hat OpenShift GitOps e i suoi processi automatizzati permettono di:

  • Garantire che i cluster abbiano condizioni simili per quanto riguarda configurazione, monitoraggio e storage
  • Applicare o eliminare le modifiche alla configurazione in più cluster
  • Associare un modello di configurazione a più ambienti
  • Distribuire le applicazioni in più cluster, dalla progettazione alla produzione.

Gli operatori rappresentano il metodo ideale per creare pacchetti, distribuire e gestire i servizi sul piano di controllo di OpenShift Container Platform. Ad esempio, GitOps Primer è un operatore che esporta gli oggetti Kubernetes e ne permette la condivisione tra cluster, team e ambienti. Ed è grazie agli operatori che GitOps è in grado di garantire coerenza, sicurezza e collaborazione agli approcci multicloud. 

Gli operatori si integrano con API Kubernetes e strumenti a riga di comando (CLI) per aiutare gli utenti a monitorare le applicazioni, eseguire controlli di integrità, gestire aggiornamenti over the air (OTA) e garantire che le applicazioni rimangano nella condizione specificata.

In OpenShift Container Platform sono due i sistemi che gestiscono gli operatori in base alla loro finalità:

  • Operatori cluster: sono operatori installati per impostazione predefinita che si occupano di eseguire le funzioni del cluster. Sono gestiti da Cluster Version Operator (CVO).
  • Operatori add-on facoltativi: sono operatori che si possono mettere a disposizione degli utenti per eseguire le applicazioni. Sono gestiti da Operator Lifecycle Manager (OLM).

Gli operatori aiutano a creare applicazioni con cui monitorare i servizi in esecuzione nel cluster, oltre a implementare e automatizzare le operazioni di installazione e configurazione, la scalabilità automatica e la creazione di backup. Il tutto svolto in un software in esecuzione all'interno del cluster.

Gli operatori garantiscono:

  • Ripetibilità delle installazioni e degli upgrade
  • Controlli di integrità costanti su tutti i componenti del sistema
  • Aggiornamenti OTA per i componenti di OpenShift
  • Un sistema per raccogliere le competenze e le conoscenze dei tecnici e condividerle con tutti gli utenti.

GitOps Primer è un operatore in esecuzione nel cluster OpenShift che permette agli sviluppatori di esportare tutti gli oggetti Kubernetes all'interno di uno spazio dei nomi. Genera un file .zip con elevata portabilità che si può:

GitOps Primer è una componente importante dell'approccio Infrastructure as Code che GitOps offre ai contesti multicloud.

Git funge da singola fonte di attendibilità per la configurazione di applicazioni e infrastruttura. Sia la configurazione dell'infrastruttura che quella delle applicazioni richiedono l'accesso a risorse sensibili, più comunemente chiamate segreti (ad esempio token di autenticazione, chiavi private, ecc.), affinché gli strumenti GitOps possano eseguire tale funzione.

Tuttavia, l'archiviazione dei segreti nel repository Git rappresenta una vulnerabilità di sicurezza e non dovrebbe essere consentita, anche se il repository è privato e dispone di controlli per limitare gli accessi. Dopo che il segreto è stato inviato a Git come testo in chiaro (o in uno stato facilmente reversibile), è da considerarsi compromesso e deve essere revocato immediatamente.

Per risolvere questa criticità esistono due approcci architetturali alla gestione dei segreti in GitOps:

  • Segreti crittografati
    • Sono archiviati all'interno dei repository Git
    • Sono decriptati e tradotti in segreti Kubernetes tramite processi automatizzati
  • Archiviazione nei repository Git di un rimando ai segreti
    • Si recuperano i segreti in base ai rimandi tramite processi automatizzati
    • I segreti recuperati sono tradotti in segreti Kubernetes

Per saperne di più sui due approcci, leggi la guida dedicata alla gestione dei segreti con GitOps e Kubernetes.

Una volta compresi i vantaggi dell'impiego di GitOps in contesti multicloud, è importante scoprire di più sulle potenzialità di GitOps per lo sviluppo. Ad esempio:

Per chi desidera approfondire l'argomento, di seguito proponiamo alcuni articoli relativi a OpenShift GitOps:

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

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.

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