Questa pagina spiega come eseguire il deployment di un'applicazione in Kubernetes utilizzando Cloud Build.
Cloud Build fornisce un gke-deploy
builder che ti consente di eseguire il deployment di un'applicazione containerizzata in un
cluster GKE.
gke-deploy
è un wrapper di kubectl
, l'interfaccia a riga di comando per Kubernetes. Applica le pratiche consigliate da Google per il deployment delle applicazioni su Kubernetes:
Aggiorna il file della risorsa Kubernetes dell'applicazione in modo da utilizzare il digest dell'immagine del contenitore anziché un tag.
Aggiunta di etichette consigliate al file di risorse Kubernetes.
Recupero delle credenziali per i cluster GKE in cui esegui il deployment dell'immagine.
In attesa che il file di risorse Kubernetes inviato sia pronto.
Se vuoi eseguire il deployment delle tue applicazioni utilizzando direttamente kubectl
e non hai bisogno di funzionalità aggiuntive, Cloud Build fornisce anche un strumento di creazione 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.
Prepara l'applicazione containerizzata sotto forma di codice sorgente e un
Dockerfile
. Il codice sorgente deve essere archiviato in un repository, ad esempio Cloud Source Repositories, GitHub o Bitbucket.Avrai bisogno di almeno un file di risorse Kubernetes che descriva le risorse Kubernetes utilizzate per eseguire l'applicazione. Se non hai file di risorse Kubernetes, segui i passaggi riportati di seguito per generarne uno per la tua applicazione:
- Apri la pagina 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. Viene visualizzata 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
Viene 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 dell'applicazione con gke-deploy
:
Assicurati che il file della risorsa Kubernetes faccia riferimento al tag o al digest dell'immagine del contenitore corretto.
Aggiungi il passaggio
gke-deploy
nel 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 della risorsa 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/zona del cluster.
Per ulteriori informazioni sugli indicatori disponibili, consulta gli indicatori
gke-deploy run
.Avvia la compilazione:
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 compilazione supportate.
Creazione ed esecuzione di un deployment di una nuova immagine container
Per creare una nuova immagine container ed eseguirne il deployment:
Aggiorna il file della risorsa Kubernetes con la nuova immagine del contenitore 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, in genere il nome dell'applicazione.
- tag è il tag dell'immagine container.
- Se stai creando una nuova immagine contenitore con ogni commit, una buona prassi è utilizzare l'SHA breve del commit come tag. Cloud Build lo rende disponibile come sostituzione predefinita,
$SHORT_SHA
.
- Se stai creando una nuova immagine contenitore con ogni commit, una buona prassi è utilizzare l'SHA breve del commit come tag. Cloud Build lo rende disponibile come sostituzione predefinita,
- kubernetes-resource-file è il percorso del file della risorsa 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/zona in cui verrà eseguito il deployment del cluster.
Avvia la compilazione:
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 compilazione supportate.
Automatizzare i deployment
Puoi automatizzare il deployment della tua applicazione su GKE creando un trigger in Cloud Build. Puoi configurare gli attivatori per compilare e implementare le immagini ogni volta che esegui il push delle modifiche al codice.
Per creare un attivatore di compilazione:
Apri la pagina Trigger nella console Google Cloud :
Seleziona il tuo progetto dal menu a discesa del selettore di 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 l'attivatore.
Seleziona l'evento del repository per avviare l'attivatore.
Seleziona il repository contenente 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 trigger.
Scegli una configurazione per l'attivatore.
Se scegli un file di configurazione Cloud Build, puoi specificare le variabili di sostituzione fornendo un nome variabile e il valore da associare alla variabile. Nell'esempio riportato di seguito, la variabile di sostituzione definita dall'utente
_CLOUDSDK_CONTAINER_CLUSTER
specifica il cluster in cui eseguire il deployment e la variabile di sostituzione definita dall'utente_CLOUDSDK_COMPUTE_ZONE
specifica la relativa posizione. Se vuoi eseguire il deployment in un cluster diverso, puoi utilizzare la stessa configurazione di compilazione e devi solo modificare 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 del file di configurazione di Kubernetes o il percorso della directory contenente i file di risorse di Kubernetes.
- project-id è l'ID del tuo progetto.
- image è il nome desiderato dell'immagine container, in genere il nome dell'applicazione.
- tag è il tag dell'immagine container.
Per scoprire di più su come definire le sostituzioni per i file di configurazione della build, consulta Utilizzare le sostituzioni definite dall'utente.
Fai clic su Crea per salvare il trigger di build.
Quando esegui il push del codice nel tuo repository, Cloud Build avvia automaticamente una build. Per scoprire di più sugli trigger di compilazione, consulta Creare e gestire trigger di compilazione.
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 di cui viene eseguito il deployment in GKE con Cloud Build.
- Scopri altre opzioni
gke-deploy
. - Scopri come eseguire deployment blu/verdi su Compute Engine.
- Scopri altri strumenti per la creazione di annunci Cloud.
- Scopri come risolvere gli errori di compilazione.