L'evoluzione del Configuration Management: IaC vs GitOps

Pubblicato: 2022-05-23

Sommario

L'evoluzione della gestione della configurazione

Strutture improprie sono la ragione principale degli incidenti di sicurezza negli ambienti orchestrati da Kubernetes o in altri container. Senza la corretta configurazione, le applicazioni possono incontrare problemi che vanno da incompatibilità e conflitti a problemi di prestazioni, vulnerabilità della sicurezza e guasti operativi. La gestione della configurazione è una parte importante del mantenimento dello stato stabile e desiderato dei computer nel ciclo di vita dello sviluppo del software.

Eredità di gestione della configurazione

All'epoca, quando si trattava di gestire le modifiche alle risorse IT, l'attenzione del team IT era principalmente a livello di server, per verificare se eventuali modifiche all'hardware avrebbero causato problemi nel livello rimanente. Ogni server è stato configurato manualmente con ottima cura e tempo libero. Le macchine virtuali hanno portato maggiore flessibilità ed efficienza a questo processo.

Il codice dell'infrastruttura (IaC) è un passaggio importante per la gestione della configurazione in cui l'intero hardware è definito come codice. Gli strumenti IaC come piattaforme basate su cloud, Chef, Puppet e Ansible hanno svolto un ruolo chiave nella semplificazione e nella scalabilità della gestione dell'infrastruttura. Hanno contribuito ad accelerare il provisioning dell'infrastruttura e hanno ridotto i costi migliorando l'utilizzo delle risorse.

Nel corso degli anni, le piattaforme e i container basati su cloud, in particolare, hanno rivoluzionato il modo in cui viene fornito l'infrastruttura. Con l'adozione di un cloud principale e la trasformazione di Git nell'attuale sistema di controllo della versione, GitOps è emerso come l'ultima svolta nell'evoluzione della gestione dell'architettura. GitOps va ben oltre IaC quando si tratta di codificare tutto. "Tutto" qui include infrastruttura, rete, dati e applicazioni.

Kubernetes e l'approccio dichiarativo alle infrastrutture

Come la programmazione, ci sono due approcci per fornire l'infrastruttura: la notifica e l'obbligatoria.

Un approccio convincente richiede di specificare le misure appropriate da adottare per fornire o modificare l'infrastruttura. Fornisce l'esperienza per utilizzare l'infrastruttura. Fornisce l'esperienza per utilizzare l'infrastruttura. D'altra parte, l'approccio di notifica è più adatto al moderno approccio cloud-native definito da Kubernetes. Devi solo definire lo stato desiderato del sistema e lasciare la sua funzionalità a un sito come Kubernetes. Kubernetes Infrastructure facilita sia l'automazione che la configurazione delle notifiche.

Il passaggio da DevOps a GitOps

GitOps, concepito nel 2017, è un moderno framework funzionale per la gestione dei cluster Kubernetes e la distribuzione di applicazioni incentrate su Git. Ottiene le parti migliori di DevOps come lo strumento CI / CD, una collaborazione tra Dev e Ops, l'automazione dei processi e le utilizza nella pipeline di distribuzione del software utilizzando Git come fonte di autenticità.

DevOps ha assicurato la collaborazione tra i team di sviluppo e operativi e ha determinato un cambiamento culturale nel campo della tecnologia dell'informazione. Ma, meno del previsto, le aziende hanno adottato le caratteristiche dell'integrazione continua e della distribuzione continua, ma non si sono mosse verso la distribuzione continua.

È qui che GitOps porta le cose al livello successivo. Con l'approccio GitOps, i team non solo definiscono, ma gestiscono anche l'ordinamento e la modifica della propria infrastruttura dall'interno di un repository Git. Apportare modifiche all'infrastruttura è facile come creare una richiesta di trascinamento ora: puoi rilevare errori di battitura, effettuare revisioni regolari o modificare l'impegno se necessario. Utilizzando Git, gli sviluppatori possono ora generare codice e gli ingegneri del sistema operativo possono utilizzare questo codice automaticamente in produzione.

Utilizzo di Flux & Helm per la gestione della configurazione basata su GitOps

Kubernetes ti consente di integrare una varietà di strumenti per automatizzare la pianificazione, l'ordinamento e il monitoraggio dei contenitori. Uno di questi strumenti è Helm, che è diventato molto popolare nell'ecosistema GitOps.

Helm è un potente gestore di pacchetti per Kubernetes che facilita la definizione, l'installazione e la distribuzione delle applicazioni e dei servizi più ripetitivi utilizzati in una varietà di situazioni. I grafici Helm aggiungono un grande valore all'ambiente di distribuzione continua fornendo un design di packaging organizzato per la gestione di più file YAML con valori duplicati e hardcode.

Gestione della configurazione: IaC e GitOps

In breve, Helm ti aiuta a mantenere le cose semplici quando misuri e gestisci output complessi. Ma deve essere collegato ai repository Git essenziali definiti dal cluster K8s e dalle specifiche dell'applicazione. Il flusso lo rende facile.

Flux è una raccolta di agenti GitOps open source che fungono da ponte tra i repository Git e i cluster Kubernetes. Il grafico Helm è uno strumento di automazione dell'ordinamento delle notifiche che mantiene la coerenza del codice automatizzando l'output quando vengono introdotte modifiche al codice. Flux sincronizza queste modifiche dai cluster Git a Kubernetes.

Lo fa con risorse personalizzate denominate HelmRelease, che attiva l'operatore del timone e sincronizza le modifiche al codice del grafico. Per non parlare del fatto che Flux è dotato di ampie funzioni di rilevamento della deriva e di altre caratteristiche interessanti.

Per molto tempo la gestione dell'architettura riguardava hardware e infrastruttura, ma da allora abbiamo fatto molta strada. Con l'introduzione di GitOps e degli strumenti che lo rendono più semplice, gli sviluppatori e gli ingegneri di piattaforma hanno molte scelte per progettare l'infrastruttura che desiderano, in modo da annunciare.

Weave GitOps utilizza Flux e Helm e consente flussi di lavoro di gestione della configurazione efficaci dai repository jit in tutti i modi in cui Kubernetes produce cluster. Una caratteristica che distingue Weave GitOps è la sua capacità di fornire applicazioni affidabili. Aggiunge criteri di fornitura di utilità affidabili come codice a GitOps, sicurezza e conformità, regressione delle applicazioni e implementazione degli standard di codifica dall'origine alla produzione. È una combinazione di pipeline GitOps sicure e test di sicurezza continui attraverso criteri codificati che consentono best practice di sicurezza e standard di sicurezza elevati durante tutto il ciclo di vita dello sviluppo del software. GitOps è anche il modo per eseguire la gestione della configurazione per i moderni sistemi cloud-native e Weave GitOps rende questo approccio non solo semplice ma anche sicuro.

come-creare-un-account-gmail-guida-passo-passo

web-crawling-vs-web-scraping-qual è la-differenza