Pipeline CI/CD per lo sviluppo e la distribuzione di app containerizzate

Last reviewed 2022-11-18 UTC

Questo documento descrive un insieme integrato di strumenti Google Cloud per configurare un sistema per lo sviluppo, l'integrazione continua (CI) e la distribuzione continua (CD) che puoi utilizzare per sviluppare ed eseguire il deployment delle applicazioni in Google Kubernetes Engine (GKE). Questo documento sull'architettura di riferimento è destinato sia agli sviluppatori che agli operatori di software. Presuppone che tu conosca l'esecuzione dei comandi gcloud su Google Cloud e il deployment dei container di applicazioni in GKE.

Architettura

Il seguente diagramma mostra le risorse utilizzate in questa architettura:

Sviluppa ed esegui il deployment del sistema con Cloud Code, Cloud Build, Artifact Registry, Cloud Deploy e GKE

Questa architettura include i seguenti componenti:

  1. Cloud Code come area di lavoro di sviluppo. Nell'ambito di questa area di lavoro, puoi vedere le modifiche nel cluster di sviluppo, che viene eseguito su minikube. Puoi eseguire Cloud Code e il cluster minikube in Cloud Shell. Cloud Shell è un ambiente di sviluppo online accessibile dal browser. Dispone di risorse di calcolo, memoria, un ambiente di sviluppo integrato (IDE) e ha anche Cloud Code installato.
  2. Cloud Build per creare e testare l'applicazione, la parte "CI" della pipeline

    Questa parte della pipeline include le seguenti azioni:

    • Cloud Build monitora le modifiche al repository di codice sorgente, utilizzando un trigger di Cloud Build.
    • Quando viene eseguito il commit di una modifica nel ramo principale, il trigger di Cloud Build effettua le seguenti operazioni:
      • Ricrea il container dell'applicazione.
      • Posiziona gli artefatti della build in un bucket Cloud Storage.
      • Posiziona il container dell'applicazione in Artifact Registry.
      • Esegue test sul container.
      • Chiama Cloud Deploy per il deployment del container nell'ambiente di gestione temporanea. In questo esempio, l'ambiente di gestione temporanea è un cluster Google Kubernetes Engine.
    • Se la build e i test hanno esito positivo, puoi utilizzare Cloud Deploy per promuovere il container dalla gestione temporanea alla produzione.
  3. Cloud Deploy per gestire il deployment (la parte "CD" della pipeline). In questa parte della pipeline, Cloud Deploy esegue quanto segue:

    • Registra una pipeline di distribuzione e i target. I target rappresentano i cluster di gestione temporanea e produzione.
    • Crea un bucket Cloud Storage e archivia l'origine di rendering Skaffold e i manifest sottoposti a rendering in quel bucket.
    • Genera una nuova release per ogni modifica al codice sorgente.
    • Esegue il deployment dell'applicazione nell'ambiente di produzione. Per questo deployment in produzione, un operatore (o un'altra persona designata) approva manualmente il deployment. In questa architettura, l'ambiente di produzione è un cluster Google Kubernetes Engine.

In questa architettura, la configurazione è condivisa tra gli ambienti di sviluppo, gestione temporanea e produzione tramite Skaffold, uno strumento a riga di comando che facilita lo sviluppo continuo per le applicazioni native di Kubernetes.

Google Cloud archivia il codice sorgente dell'applicazione in GitHub.

Questa architettura utilizza i prodotti Google Cloud per la maggior parte dei componenti del sistema, con Skaffold che consente l'integrazione del sistema. Poiché Skaffold è open source, puoi utilizzare questi principi per creare un sistema simile utilizzando una combinazione di componenti Google Cloud, interni e di terze parti. La modularità di questa soluzione consente di adottarla in modo incrementale come parte della pipeline di sviluppo e deployment.

Casi d'uso

Di seguito sono riportate le funzioni principali di questo sistema integrato:

  • Accelera lo sviluppo e il deployment.

    Il ciclo di sviluppo è efficiente perché puoi convalidare le modifiche nell'area di lavoro dello sviluppatore. Il deployment è rapido perché il sistema CI/CD automatizzato e la maggiore parità tra gli ambienti consentono di rilevare più problemi quando esegui il deployment delle modifiche in produzione.

  • Approfitta di una maggiore parità in termini di sviluppo, gestione temporanea e produzione.

    I componenti di questo sistema utilizzano un insieme comune di strumenti Google Cloud.

  • Riutilizza le configurazioni nei diversi ambienti.

    Questo riutilizzo viene eseguito con Skaffold, che consente un formato di configurazione comune per i diversi ambienti. Inoltre, consente a sviluppatori e operatori di aggiornare e utilizzare la stessa configurazione.

  • Applica la governance all'inizio del flusso di lavoro.

    Questo sistema applica test di convalida per la governance in fase di produzione e nel sistema CI e nell'ambiente di sviluppo. L'applicazione della governance nell'ambiente di sviluppo consente di individuare e risolvere prima i problemi.

  • Lascia che gli strumenti valutati gestiscano la distribuzione del software.

    La distribuzione continua è completamente gestita, separando le fasi della pipeline del CD dai dettagli di rendering e deployment.

Deployment

Per eseguire il deployment di questa architettura, consulta Sviluppare ed eseguire il deployment di app containerizzate utilizzando una pipeline CI/CD.

Passaggi successivi