Pipelines CI/CD per Kubernetes utilizzando GitLab CI

Lo sviluppo software moderno richiede cicli di distribuzione rapidi, scalabilità e resilienza. Kubernetes è emerso come la piattaforma di orchestrazione preferita, consentendo la gestione di applicazioni containerizzate scalabili. Quando combinato con i pipeline CI/CD di GitLab, i deployment di Kubernetes diventano automatizzati, ripetibili e affidabili.

Questo articolo esplora i dettagli tecnici per impostare pipeline CI/CD per Kubernetes utilizzando GitLab CI.

Requisiti

Prima di configurare il tuo pipeline CI/CD, assicurati che siano soddisfatti i seguenti requisiti:

  • Account GitLab: Accesso a un repository GitLab dove verrà configurato il pipeline CI/CD.
  • Cluster Kubernetes: Un cluster Kubernetes esistente come Minikube (per test locali) o cluster gestiti come Google Kubernetes Engine (GKE), Amazon EKS o Azure AKS.
  • kubectl: Lo strumento da riga di comando Kubernetes deve essere installato e configurato per l’interazione con il cluster.
  • Helm (opzionale): Gestore di pacchetti Kubernetes per distribuire e gestire applicazioni.
  • GitLab Runner: Assicurati che GitLab Runner sia installato e registrato con il tuo progetto per eseguire i lavori CI/CD.
  • Docker: Richiesto per costruire e inviare immagini di container a un registro di container.

Impostazione dell’integrazione di Kubernetes con GitLab

Collegare il Cluster Kubernetes

Integrare Kubernetes con GitLab consente un deployment e una gestione delle risorse senza soluzione di continuità direttamente dalla tua pipeline. Segui questi passaggi:

  1. Vai alla dashboard del tuo progetto GitLab.
  2. Naviga verso Infrastruttura > Cluster Kubernetes.
  3. Clicca su Aggiungi Cluster Kubernetes e collega un cluster esistente o creane uno nuovo utilizzando fornitori di cloud.
  4. Assegna le autorizzazioni appropriate a GitLab utilizzando il Controllo degli Accessi Basato sui Ruoli (RBAC).

Configurazione RBAC

RBAC definisce le autorizzazioni di accesso per le risorse Kubernetes. Di seguito è riportato un esempio di configurazione YAML per impostare RBAC:

YAML

 

Applica Configurazione

Applica il file YAML utilizzando kubectl:

YAML

 

Genera Token per l’Autenticazione

Estrai il token dell’account di servizio necessario per GitLab:

YAML

 

Incolla questo token nelle impostazioni di configurazione di Kubernetes di GitLab.

Configurare la Pipeline CI/CD di GitLab

Definisci .gitlab-ci.yml

Il file di configurazione CI di GitLab definisce le fasi della pipeline, le variabili e i comandi. Di seguito è riportato un esempio di configurazione:

YAML

 

Spiegazione della Configurazione

  • Fasi: Il pipeline è diviso in fasi di build, test e deploy per l’esecuzione modulare.
  • Variabili: Le variabili d’ambiente come i tag delle immagini e i namespace semplificano la gestione della configurazione.
  • before_script: Installa le dipendenze e configura l’autenticazione di Kubernetes.
  • Tag delle Immagini: Utilizza l’SHA del commit per identificare univocamente ciascuna versione dell’immagine.
  • Deployment: Aggiorna il deployment di Kubernetes impostando l’immagine del contenitore.

Gestione delle Secret

GitLab CI supporta la gestione sicura delle secret utilizzando le variabili:

  1. Vai su Impostazioni > CI/CD > Variabili.
  2. Aggiungi le variabili richieste come KUBE_CONFIG, CI_REGISTRY_USER e CI_REGISTRY_PASSWORD.

Codifica kubeconfig prima di aggiungerlo come variabile:

YAML

 

Aggiungi il risultato come KUBE_CONFIG in GitLab.

Deployment con Helm

Helm semplifica i deployment di Kubernetes con chart riutilizzabili. Esempio di configurazione di Helm:

YAML

 

Aggiungi i comandi di Helm al pipeline:

YAML

 

Strumenti di Monitoraggio e Debugging

Monitora lo stato del pipeline su GitLab in CI/CD > Pipelines. Utilizza strumenti come:

  • Prometheus e Grafana: Per metriche e visualizzazioni.
  • Kubernetes Dashboard: Gestione del cluster.
  • kubectl logs: Recupera i log del deployment.
YAML

 

Conclusion

Questo articolo illustra la configurazione delle pipeline CI/CD per Kubernetes con GitLab CI. Si tratta dei prerequisiti, delle configurazioni YAML, della gestione delle credenziali, dei rilasci di Helm e degli strumenti di monitoraggio. Con questa configurazione, gli sviluppatori possono creare, testare e distribuire applicazioni containerizzate in modo efficiente e affidabile.

Source:
https://dzone.com/articles/cicd-pipelines-for-kubernetes-using-gitlab-ci