GitLab CI – Kubernetes production pipeline

Gestione centralizzata del codice e promozione in produzione

Sono due i principali compiti che GitLab assolve nell’infrastruttura.

  • Repository del codice sorgente
  • Continous Integration pipeline per produzione software mediante Kubernetes

Kubernetes

Kubernetes orchestra gruppi di macchine affinché possano erogare servizi tramite container. I vantaggi dell’utilizzo di Kubernetes sono molteplici.

  • Distribuzione del carico
  • Astrazione dell’accesso a risorse esterne (storage, volumi)
  • Scalabilità
  • Alta affidabilità dei servizi erogati

Repository

Il repository è di tipo GIT.

  • Velocità di aggiornamento.
  • Storico modifiche per ogni utente.
  • Lavorazione contemporanea su più versioni (branch).
  • Accesso SSH o HTTP.

Gitlab fornisce una interfaccia web per

  • Gestione utenti
    • Creazione/cancellazionie di gruppi
    • Assegnazione per gruppo/singolo utente di permessi per singolo repository
  • Gestione repository
    • Creazione/cancellazione repository
    • Modifica contenuti con editor integrato
    • Avvio manuale pipeline

Pipeline

Una pipeline è una serie di comandi da eseguire associati ad un repository.

  • Le operazioni avvengono all’interno di container monouso eseguiti all’interno di Kubernetes.
  • La scalabilità offerta dall’ambiente Kubernetes consente la parallelizzazione dell’esecuzione delle pipeline e la distribuzione del carico.

Il processo di pipeline è diviso in fasi, ciascuna delle quali può impattare la costruzione della build. Il tipico workflow comprende fasi ben definite.

  1. La modifica del codice (commit) innesca la pipeline
    • Sono disponibili parametri d’ambiente, come il branch o il commit stesso
  2. Viene prodotto il software tramite i comandi della pipeline all’interno del container dedicato eseguito nell’ambiente Kubernetes
    • Il container può essere specificamente calibrato per il software da produrre e risiedere su un repository interno (come Nexus)
  3. Il software prodotto viene validato (mediante un container)
    • Analisi statica del codice
    • Test di funzionamento
    • Test di integrazione
    • Test di non regressione
  4. Il prodotto è pubblicato (mediante un container)
    • L’artifact prodotto è caricato su un repository
    • Possibilità di attivazione notifiche
    • Possibilità di attivazione di altri meccanismi di deploy automatico
Top