Questa pagina spiega come eseguire il deployment di un'applicazione in Kubernetes utilizzando Cloud Build.
Cloud Build fornisce un generatore gke-deploy
che consente di eseguire il deployment di un'applicazione containerizzata in un cluster GKE.
gke-deploy
è un wrapper attorno a kubectl
, l'interfaccia a riga di comando per Kubernetes. Applica le pratiche consigliate da Google per
eseguire il deployment di app in Kubernetes:
È in corso l'aggiornamento del file di risorse Kubernetes dell'applicazione in modo che utilizzi il digest dell'immagine container anziché un tag.
Aggiunta di etichette consigliate al file di risorse Kubernetes.
Recupero delle credenziali per i cluster GKE in cui stai eseguendo il deployment dell'immagine.
In attesa che il file di risorse Kubernetes inviato sia pronto.
Se vuoi eseguire il deployment delle tue applicazioni direttamente utilizzando kubectl
e non hai bisogno di funzionalità aggiuntive, Cloud Build fornisce anche un generatore di kubectl
che puoi utilizzare per eseguire il deployment della tua applicazione in un cluster GKE.
Prima di iniziare
Crea un cluster GKE, se non ne hai ancora uno.
Tieni a portata di mano la tua applicazione containerizzata sotto forma di codice sorgente e
Dockerfile
. Il codice sorgente deve essere archiviato in un repository, come Cloud Source Repositories, GitHub o Bitbucket.È necessario almeno un file di risorse Kubernetes che descriva le risorse Kubernetes utilizzate per eseguire l'applicazione. Se non disponi di file di risorse Kubernetes, segui questi passaggi per generarne uno per la tua applicazione:
- Apri la pagina dei cluster Kubernetes Engine nella console Google Cloud.
- Nella pagina dei cluster Kubernetes Engine, fai clic su Esegui il deployment.
- Seleziona il contenitore e fai clic su Continua. Vedrai la sezione Configurazione.
- In YAML configurazione, fai clic su Visualizza YAML per ottenere un file di risorse Kubernetes di esempio.
Autorizzazioni IAM richieste
Aggiungi il ruolo Sviluppatore Google Kubernetes Engine al tuo account:
Apri la pagina Impostazioni di Cloud Build:
Apri la pagina Impostazioni di Cloud Build
Verrà visualizzata la pagina Autorizzazioni account di servizio:
Imposta lo stato del ruolo Sviluppatore Kubernetes Engine su Abilitato.
Deployment di un'immagine container predefinita
Per eseguire il deployment di una determinata versione della tua applicazione con gke-deploy
:
Assicurati che il file di risorse Kubernetes faccia riferimento al tag o al digest dell'immagine container corretti.
Aggiungi il passaggio
gke-deploy
al file di configurazione della build:YAML
steps: ... # deploy container image to GKE - name: "gcr.io/cloud-builders/gke-deploy" args: - run - --filename=kubernetes-resource-file - --location=location - --cluster=cluster
JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/gke-deploy", "args": [ "run", "--filename=kubernetes-resource-file", "--location=location", "--cluster=cluster" ] } ] }
Dove:
- kubernetes-resource-file è il percorso del file delle risorse Kubernetes o il percorso della directory contenente i file delle risorse Kubernetes.
- cluster è il nome del cluster GKE in cui verrà eseguito il deployment dell'applicazione.
- location corrisponde alla regione o alla zona del cluster.
Per maggiori informazioni sui flag disponibili, consulta la sezione sulle segnalazioni di
gke-deploy run
.Avvia la build:
gcloud builds submit --region=REGION --project=project-id --config build-config
Dove:
- project-id è l'ID del tuo progetto.
- build-config è il nome del file di configurazione della build.
REGION
è una delle regioni di build supportate.
Creazione e deployment di una nuova immagine container in corso...
Per creare una nuova immagine container ed eseguirne il deployment:
Aggiorna il file di risorse Kubernetes con la nuova immagine container utilizzando l'attributo
--image
:YAML
steps: # build the container image - name: "gcr.io/cloud-builders/docker" args: ["build", "-t", "gcr.io/project-id/image:tag", "."] # push container image - name: "gcr.io/cloud-builders/docker" args: ["push", "gcr.io/project-id/image:tag"] # deploy container image to GKE - name: "gcr.io/cloud-builders/gke-deploy" args: - run - --filename=kubernetes-resource-file - --image=gcr.io/project-id/image:tag - --location=location - --cluster=cluster
JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/project-id/image:tag", "." ] }, { "name": "gcr.io/cloud-builders/docker", "args": [ "push", "gcr.io/project-id/image:tag" ] }, { "name": "gcr.io/cloud-builders/gke-deploy", "args": [ "run", "--filename=kubernetes-resource-file", "--image=gcr.io/project-id/image:tag", "--location=location", "--cluster=cluster" ] } ] }
Dove:
- project-id è l'ID del tuo progetto.
- image è il nome desiderato dell'immagine container, di solito il nome dell'applicazione.
- tag è il tag dell'immagine container.
- Se crei una nuova immagine container con ogni commit, è buona norma usare l'SHA breve di commit come tag. Cloud Build lo rende disponibile come sostituzione predefinita,
$SHORT_SHA
.
- Se crei una nuova immagine container con ogni commit, è buona norma usare l'SHA breve di commit come tag. Cloud Build lo rende disponibile come sostituzione predefinita,
- kubernetes-resource-file è il percorso del file delle risorse Kubernetes o il percorso della directory contenente i file delle risorse Kubernetes.
- cluster è il nome del cluster GKE in cui verrà eseguito il deployment dell'applicazione.
- location è la regione o la zona del cluster in cui verrà eseguito il deployment.
Avvia la build:
gcloud builds submit --region=REGION --project=project-id --config build-config
Dove:
- project-id è l'ID del tuo progetto.
- build-config è il nome del file di configurazione della build.
REGION
è una delle regioni di build supportate.
Automatizzare i deployment
Puoi automatizzare il deployment della tua applicazione su GKE creando un trigger in Cloud Build. Puoi configurare trigger per la creazione e il deployment delle immagini ogni volta che esegui il push delle modifiche al codice.
Per creare un trigger di build:
Apri la pagina Trigger nella console Google Cloud:
Seleziona il tuo progetto dal menu a discesa del selettore progetti nella parte superiore della pagina.
Fai clic su Apri.
Fai clic su Crea trigger.
Nella pagina Crea trigger, inserisci le seguenti impostazioni:
Inserisci un nome per il trigger.
Seleziona l'evento del repository per avviare il trigger.
Seleziona il repository che contiene il codice sorgente e il file di configurazione della build.
Specifica l'espressione regolare per il nome del ramo o del tag che avvierà il tuo trigger.ee
Scegli una configurazione per l'attivatore.
Se scegli un file di configurazione di Cloud Build, puoi specificare le variabili di sostituzione specificando un nome per la variabile e il valore da associare a quella variabile. Nell'esempio riportato di seguito, la variabile di sostituzione definita dall'utente
_CLOUDSDK_CONTAINER_CLUSTER
specifica il cluster in cui eseguire il deployment, mentre la variabile di sostituzione definita dall'utente_CLOUDSDK_COMPUTE_ZONE
specifica la sua posizione. Se vuoi eseguire il deployment in un cluster diverso, puoi utilizzare la stessa configurazione di build e modificare solo i valori delle variabili di sostituzione:YAML
steps: ... # deploy container image to GKE - name: "gcr.io/cloud-builders/gke-deploy" args: - run - --filename=kubernetes-resource-file - --image=gcr.io/project-id/image:tag - --location=${_CLOUDSDK_COMPUTE_ZONE} - --cluster=${_CLOUDSDK_CONTAINER_CLUSTER}
JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/gke-deploy", "args": [ "run", "--filename=kubernetes-resource-file", "--image=gcr.io/project-id/image:tag", "--location=${_CLOUDSDK_COMPUTE_ZONE}", "--cluster=${_CLOUDSDK_CONTAINER_CLUSTER}" ] } ] }
Dove:
- kubernetes-resource-file è il percorso file del file di configurazione di Kubernetes o il percorso della directory contenente i file delle risorse Kubernetes.
- project-id è l'ID del tuo progetto.
- image è il nome desiderato dell'immagine container, di solito il nome dell'applicazione.
- tag è il tag dell'immagine container.
Per scoprire di più su come definire sostituzioni per i file di configurazione di compilazione, consulta Utilizzo di sostituzioni definite dall'utente.
Fai clic su Crea per salvare il trigger di build.
Quando esegui il push del codice nel repository, Cloud Build attiva automaticamente una build. Per saperne di più sui trigger di build, consulta Creazione e gestione dei trigger di build.
Passaggi successivi
- Scopri come configurare i deployment automatici per i tuoi carichi di lavoro su GKE.
- Scopri come creare una pipeline CI/CD in stile GitOps con deployment su GKE con Cloud Build.
- Scopri di più sulle opzioni
gke-deploy
aggiuntive. - Scopri come eseguire deployment blu/verde su Compute Engine.
- Scopri di più sugli altri Cloud Builder.
- Scopri come risolvere gli errori di build.