Metodologia GitOps, ovvero, come modernizzare un’infrastruttura al meglio

Metodologia GitOps, ovvero, come modernizzare un’infrastruttura al meglio

Nell’era della digitalizzazione, l’adozione di strategie innovative per la gestione dell’infrastruttura IT è diventata imprescindibile per garantire agilità, sicurezza e efficienza. La metodologia GitOps emerge come una soluzione all’avanguardia per rispondere a queste esigenze, promettendo una modernizzazione infrastrutturale che segna un punto di svolta nel panorama IT. In questo articolo cercheremo di compiere un’analisi approfondita, aiutati da un case study significativo, di come l’approccio GitOps possa essere implementato con successo per trasformare un’infrastruttura IT legacy in un sistema moderno, flessibile e ottimizzato.

Il nostro caso di studio parte proprio da un processo di modernizzazione di un’infrastruttura per avviare le pratiche di distribuzione delle applicazioni (CI/CD). Le metodologie introdotte consentono diversi vantaggi, tra cui la riduzione dei costi, maggiore sicurezza, riduzione dei tempi di rilascio e automazione dei processi. Risultati che non si potrebbero acquisire altrimenti.

La sfida e la soluzione

Il cliente voleva comprendere se il loro modello di sviluppo e gestione delle applicazioni, fortemente legato ad un ambiente ed approccio legacy, potesse essere applicato al mondo container senza essere completamente stravolto.

In un contesto dall’esito incerto, nella prima fase di progetto, il cliente ha preferito utilizzare una soluzione di orchestrazione dei container completamente open-source.

Questa scelta ha permesso di valutare la proposta Sorint limitando i costi legati all’acquisto di sottoscrizioni di prodotto.
Per la gestione dell’infrastruttura, la soluzione proposta è un ecosistema composto dalle seguenti componenti tecnologiche:

  • Gitlab CE(Community Edition): Versioning and (CI/CD) Pipeline
  • HashiCorp Vault (Community Edition): Secret management
  • Kubernetes Vanilla: Container Orchestrator
  • Ansible and Packer: GitOps management
  • Helm and Kustomize: GitOps management
  • Opensearch: Logs management Solutions
  • Velero: Native backup solution for Kubernetes

L’intera soluzione è stata realizzata tramite l’utilizzo di metodologie e best practice GITOPS e DEVOPS.

Questo tipo di approccio ha permesso di realizzare una soluzione talmente funzionale che il cliente stesso ha deciso di utilizzarla per erogare servizi in ambienti di produzione.

Per la gestione dei rilasci Software, siamo partiti dagli strumenti che il cliente già utilizzava, estendendone le funzionalità.

Questo articolo ha come focus la modernizzazione dell’infrastruttura.

New call-to-action

 

Metologia GitOps e DevOps

GitOps è una metodologia che utilizza Git come unica fonte di verità su cui definire l’infrastruttura come codice. GitOps, permette di standardizzare i workflow di gestione e configurazione delle diverse componenti di infrastruttura, aumentando la sicurezza e la consistenza tra gli ambienti.

Utilizzando questa metodologia, l’infrastruttura viene gestita come codice e viene ampliata all’utilizzo della CI/CD.
Tramite l’adozione di specifici tools di automazione e best practice di collaborazione, la metodologia DevOps semplifica il ciclo di vita delle applicazioni, permettendo di gestire il rilascio di nuove release Software in modo rapido, frequente ed efficiente.

Implementazione

L’infrastruttura viene creata, configurata e mantenuta tramite i seguenti framework e tools:

  • Packer:  Image build automation
  • Ansible: IT Automation Engine
  • Gitlab Pipeline: CI/CD Solution

Seguendo le best practice GitOps, Il codice che definisce lo stato delle diverse componenti infrastrutturali, è stato reso disponibile in modalità versionata su un repository Gitlab dedicato.

Di seguito uno schema logico di alto livello di quanto realizzato:

Le VM del cluster Kubernetes, vengono create da vm-template VSPHERE gestiti direttamente da Packer all’interno di ruoli Ansible dedicati.

Gli OS delle VM, vengono installati e configurati tramite file di Kickstart, definito all’interno dell’hcl Packer.

In questo modo, è stato possibile versionare anche le configurazioni degli OS.

Il Playbook Ansible, gestisce, il ciclo di vita di tutte le componenti dell’ecosistema:

Kubernetes Vanilla:

  • Gestione del deploy delle VM dedicate al cluster K8s su vSphere.
  • Installazione e configurazione dei cluster Kubernetes Vanilla.
  • Installazione e configurare delle componenti aggiuntive al cluster kubernetes:
  • Container Engine
  • CNI
  • CSI
  • Ingress Controller
  • Velero Node-Agent
  • Gitlab-runner
  • Vault agent
  • Dynatrace agent
  • Gestione dell’aggiornamento di release dei cluster Kubernetes Vanilla e delle componenti aggiuntive.
  • Gestione delle operazioni di scale up e scale down dei cluster Kubernetes.

Hashicorp Vault:

  • Setup tramite operator
  • Configurazione moduli auth Kubernetes
  • Configurazione Ruoli
  • Definizione Policy
  • Configurazione Backup

Opensearch:

  • Setup cluster Opensearch
  • Configurazione secondo le specifiche definite
  • Configurazione modulo di autenticazione Active Directory
  • Definizioni delle Policy di svecchiamento del dato
  • Configurazione dei backup tramite Snapshot
  • Scale up/down del cluster
  • Aggiornamento di release

Velero:

  • Installazione tramite Operator
  • Definizione delle policy di backup
  • Upgrade di release

Il Playbook ansible, realizzato e mantenuto da Sorint, è stato integrato con una Pipeline Gitlab realizzata appositamente per gestire l’esecuzione dello stesso:

Questo approccio ha permesso di:

  • Tracciare ogni singola modifica all’infrastruttura
  • Mantenere le configurazioni dei cluster coerenti rispetto quanto definito nel repository Gitlab.
  • In caso di fault/disastro, ripristino immediato dei cluster Kubernetes e delle componenti di infrastruttura gestite.
  • Gestione Kubernetes MultiCluster centralizzata.
  • Provisioning di nuove infrastrutture Kubernetes veloci, semplici ed automatiche.
  • Aggiornamento di release delle componenti dell’ecosistema veloci e sicure.
  • Nessun costo di sottoscrizione.

Inoltre, il cliente ha deciso di acquistare il nostro servizio NGMS (Next Generation Managed Services) in grado di monitorare ed intervenire in caso di Incidenti sulle diverse componenti dell’ecosistema in modalità 24×7.