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 di applicazioni in Google Kubernetes Engine (GKE).
Questo documento sull'architettura di riferimento è rivolto sia agli sviluppatori di software sia agli operatori. Si presume che tu abbia dimestichezza con l'esecuzione di comandi gcloud
su Google Cloud e con il deployment di container di applicazioni in GKE.
Architettura
Il seguente diagramma mostra le risorse utilizzate in questa architettura:
Questa architettura include i seguenti componenti:
- 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. Esegui 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 installato Cloud Code.
Cloud Build per creare e testare l'applicazione, ovvero la parte "CI" della pipeline
Questa parte della pipeline include le seguenti azioni:
- Cloud Build monitora le modifiche al repository di origine utilizzando un trigger di Cloud Build.
- Quando viene eseguito il commit di una modifica nel ramo principale, l'trigger Cloud Build esegue le seguenti operazioni:
- Ricostruisce il contenitore dell'applicazione.
- Inserisce gli artefatti della build in un bucket Cloud Storage.
- Posiziona il contenitore dell'applicazione in Artifact Registry.
- Esegue test sul contenitore.
- Chiama Cloud Deploy per eseguire il deployment del container nell'ambiente di staging. In questo esempio, l'ambiente di staging è un cluster Google Kubernetes Engine.
- Se la compilazione e i test hanno esito positivo, puoi utilizzare Cloud Deploy per promuovere il contenitore dalla fase di staging alla produzione.
Cloud Deploy per gestire il deployment, ovvero la parte "CD" della pipeline. In questa parte della pipeline, Cloud Deploy esegue quanto segue:
- Registra una pipeline di distribuzione e target. I target rappresentano i cluster di staging e di produzione.
- Crea un bucket Cloud Storage e archivia i manifest con rendering e il codice sorgente del rendering di Skaffold al suo interno.
- 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 viene condivisa tra gli ambienti di sviluppo, di staging e di 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 su GitHub.
Questa architettura utilizza i prodotti Google Cloud per la maggior parte dei componenti del sistema, con Skaffold che ne abilita l'integrazione. 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 ti consente di adottarla in modo incrementale come parte della pipeline di sviluppo e deployment.
Casi d'uso
Di seguito sono riportate le funzionalità chiave di questo sistema integrato:
Sviluppa ed esegui il deployment più velocemente.
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 l'aumento della parità tra gli ambienti ti consentono di rilevare più problemi quando esegui il deployment delle modifiche in produzione.
Approfitta di una maggiore parità in fase di sviluppo, di staging e di 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 nelle prime fasi del flusso di lavoro.
Questo sistema applica test di convalida per la governance in produzione e nel sistema CI e nell'ambiente di sviluppo. L'applicazione della governance nell'ambiente di sviluppo consente di rilevare e risolvere i problemi in precedenza.
Lascia che gli strumenti con opinioni gestiscano la distribuzione del software.
La distribuzione continua è completamente gestita e separa le fasi della pipeline di 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
- Per scoprire come eseguire il deployment in un'istanza GKE privata, consulta Eseguire il deployment in un cluster privato su una rete Virtual Private Cloud.
- Per informazioni su come implementare, migliorare e misurare l'automazione del deployment, consulta Automazione del deployment.