Esegui il deployment di un'applicazione su GKE su Azure
Questa pagina descrive come creare un cluster e un pool di nodi, quindi come eseguire il deployment di un'applicazione di esempio utilizzando GKE su Azure.
Supporto di Terraform
Se hai familiarità con Terraform, puoi utilizzare gli script Terraform disponibili su GitHub per automatizzare i prerequisiti e creare un cluster.
Prima di iniziare
Prima di creare un cluster, devi completare i prerequisiti. In particolare, devi fornire le seguenti risorse:
- Una rete virtuale Azure in cui verrà eseguito il cluster.
- Una subnet per le repliche del control plane Kubernetes.
- Assegnazioni di ruoli Azure che concederanno a GKE su Azure l'accesso al tuo ambiente Azure utilizzando un'entità di servizio.
- Una risorsa AzureClient che GKE su Azure utilizza per l'autenticazione ai servizi Azure e per gestire le risorse nel tuo account Azure.
- Una coppia di chiavi SSH per accedere alle macchine virtuali Azure nel cluster.
È tua responsabilità creare e gestire queste risorse, che possono essere condivise tra tutti i tuoi cluster. Tutte le altre risorse Azure sottostanti per il tuo cluster sono gestite da GKE su Azure.
Imposta le impostazioni predefinite per gcloud CLI
Utilizza gcloud CLI per configurare le impostazioni predefinite per il tuo progetto e la tua regione predefiniti. Google Cloud
Il tuo progetto ha un ID progetto come identificatore univoco. Quando crei un progetto, puoi utilizzare l'ID progetto generato automaticamente o crearne uno tuo.
La tua regione Google Cloud è una località da cui verranno gestiti i tuoi cluster. Ad esempio, us-west1
. Per ulteriori dettagli, consulta la sezione
Regioni di gestione.
Quando configuri queste impostazioni predefinite, non devi includerle quando
esegui Google Cloud CLI. Puoi anche specificare le impostazioni o eseguire l'override di quelle predefinite passando i flag --project
e --location
a Google Cloud CLI.
Quando crei risorse GKE su Azure dopo aver configurato il progetto e la località predefiniti, le risorse vengono create automaticamente in quel progetto e in quella località.
Per impostare i valori predefiniti, segui questi passaggi:
Imposta il progetto predefinito:
gcloud config set project PROJECT_ID
Sostituisci
PROJECT_ID
con l'ID progetto.Imposta la posizione di gestione predefinita:
gcloud config set container_azure/location GOOGLE_CLOUD_LOCATION
Sostituisci
GOOGLE_CLOUD_LOCATION
con la tua posizione, ad esempious-west1
.
Seleziona gli ID risorsa Azure per il cluster
Seleziona un ID gruppo di risorse
Salva il gruppo di risorse del cluster in una variabile di ambiente eseguendo il seguente comando:
CLUSTER_RESOURCE_GROUP_ID=$(az group show --query id --output tsv \
--resource-group=CLUSTER_RESOURCE_GROUP_NAME)
Sostituisci CLUSTER_RESOURCE_GROUP_NAME
con il nome del
gruppo di risorse in cui eseguire il provisioning delle risorse del cluster, che hai configurato nel
passaggio dei prerequisiti Crea un gruppo di risorse Azure.
Seleziona un ID rete virtuale
Salva l'ID VNet del cluster in una variabile di ambiente eseguendo questo comando:
VNET_ID=$(az network vnet show --query id --output tsv \
--resource-group=VNET_RESOURCE_GROUP_NAME \
--name=VNET_NAME)
Sostituisci quanto segue:
VNET_RESOURCE_GROUP_NAME
con il nome del gruppo di risorse che contiene la tua rete virtuale, come configurato nel passaggio dei prerequisiti Creazione di una rete virtuale Azure.VNET_NAME
con il nome della tua rete virtuale, come configurato nel Creazione di una rete virtuale Azure passaggio dei prerequisiti.
Seleziona un ID subnet
Salva l'ID subnet del cluster in una variabile di ambiente eseguendo questo comando:
SUBNET_ID=$(az network vnet subnet show --query id --output tsv \
--resource-group VNET_RESOURCE_GROUP_NAME \
--vnet-name VNET_NAME \
--name SUBNET_NAME)
Sostituisci:
VNET_RESOURCE_GROUP_NAME
con un nome di gruppo di risorse esistente che contiene la tua rete virtuale. Può trattarsi del nome del gruppo di risorse che hai configurato in Creazione di una rete virtuale Azure.VNET_NAME
con il nome della tua rete virtuale. Può essere il nome della rete virtuale che hai configurato in Creazione di una rete virtuale Azure.SUBNET_NAME
con il nome della tua subnet, ad esempiodefault
.
Seleziona gli intervalli CIDR per il cluster
Kubernetes richiede la fornitura di due intervalli CIDR per il cluster. Questi intervalli CIDR devono essere scelti in modo che non si sovrappongano agli intervalli CIDR utilizzati dalle subnet VPC. Devono essere abbastanza grandi per la dimensione massima prevista del cluster.
Intervallo CIDR indirizzi pod: quando viene creato un nuovo
Pod
, gli viene assegnato un indirizzo IP da questo intervallo. Intervallo di esempio: 192.168.208.0/20Intervallo CIDR dell'indirizzo del servizio: quando viene creato un nuovo servizio, gli viene assegnato un indirizzo IP da questo intervallo. Intervallo di esempio: 192.168.224.0/20
Crea un cluster
Utilizza il seguente comando per creare un cluster in GKE su Azure.
gcloud container azure clusters create azure-cluster-0 \
--cluster-version 1.32.4-gke.200 \
--azure-region AZURE_REGION \
--fleet-project FLEET_PROJECT_ID \
--client CLIENT_NAME \
--resource-group-id $CLUSTER_RESOURCE_GROUP_ID \
--vnet-id $VNET_ID \
--subnet-id $SUBNET_ID \
--pod-address-cidr-blocks POD_CIDR_BLOCK \
--service-address-cidr-blocks SERVICE_CIDR_BLOCK \
--ssh-public-key "SSH_PUBLIC_KEY" \
--tags "google:gkemulticloud:cluster=azure-cluster-0"
Sostituisci:
AZURE_REGION
: una regione Azure supportata associata alla tua regione Google CloudFLEET_PROJECT_ID
con l'ID progetto host del parco risorse in cui verrà registrato il cluster.CLIENT_NAME
: il nome del tuo AzureClient.POD_CIDR_BLOCK
: l'intervallo di indirizzi del pod del tuo clusterSERVICE_CIDR_BLOCK
: l'intervallo di indirizzi dei servizi del clusterSSH_PUBLIC_KEY
con il testo della chiave pubblica SSH come creata nel passaggio dei prerequisiti Crea una coppia di chiavi SSH. Se hai salvato la chiave pubblica in una variabile di ambiente in questo passaggio, puoi utilizzare${SSH_PUBLIC_KEY}
.
Per ulteriori informazioni e parametri facoltativi, consulta la pagina di riferimento gcloud container azure clusters create.
Crea un node pool
Crea un pool di nodi con Google Cloud CLI:
gcloud container azure node-pools create pool-0 \
--cluster azure-cluster-0 \
--node-version 1.32.4-gke.200 \
--vm-size Standard_B2s \
--max-pods-per-node 110 \
--min-nodes 1 \
--max-nodes 5 \
--ssh-public-key "SSH_PUBLIC_KEY" \
--subnet-id $SUBNET_ID \
--tags "google:gkemulticloud:cluster=azure-cluster-0"
Sostituisci SSH_PUBLIC_KEY
con il testo della chiave pubblica SSH,
come creato nel passaggio dei prerequisiti Crea una coppia di chiavi SSH. Se hai salvato la chiave pubblica in una variabile di ambiente,
puoi utilizzare ${SSH_PUBLIC_KEY}
.
Visualizzare lo stato del cluster
Dopo aver creato un cluster e un pool di nodi, puoi visualizzare lo stato di un cluster con Google Cloud CLI o con la console Google Cloud . Per visualizzare lo stato del cluster, scegli se utilizzi Google Cloud CLI o la console Google Cloud e segui questi passaggi:
gcloud
Utilizza il comando gcloud container azure clusters describe
per ottenere dettagli
sul tuo cluster:
gcloud container azure clusters describe CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del clusterGOOGLE_CLOUD_LOCATION
: il nome della Google Cloud posizione che gestisce il cluster
Console Google Cloud
Nella console Google Cloud , vai alla pagina Panoramica dei cluster Google Kubernetes Engine.
I cluster sono elencati in base al nome e alla posizione.
Fai clic sul nome del cluster. Viene visualizzato un riquadro con informazioni sul cluster, inclusi lo stato e le funzionalità abilitate.
Recupera le credenziali di autenticazione per il cluster
Dopo aver creato il cluster, devi recuperare le credenziali di autenticazione per interagire con il cluster:
gcloud container azure clusters get-credentials azure-cluster-0
Questo comando configura kubectl
per accedere al cluster creato utilizzando
Connect Gateway. Per utilizzare il gateway Connect, devi disporre di almeno un pool di nodi perché si basa sull'agente Connect, che viene eseguito come deployment nel cluster.
esegui il deployment di un'applicazione nel cluster
Ora che hai creato un cluster, puoi eseguirvi il deployment di un'applicazione containerizzata. Per questa guida rapida, puoi eseguire il deployment della nostra applicazione web di esempio,
hello-app
.
Utilizzi gli oggetti Kubernetes per creare e gestire le risorse del cluster. Utilizzi l'oggetto Deployment per eseguire il deployment di applicazioni stateless come i server web. Gli oggetti Service definiscono le regole e i bilanciatori del carico per l'accesso all'applicazione da internet.
Crea il deployment
Per eseguire hello-app
nel cluster, devi eseguire il deployment dell'applicazione eseguendo questo comando:
kubectl create deployment hello-server --image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Questo comando di Kubernetes,
kubectl create deployment
crea un deployment denominato hello-server
. Il pod del deployment
esegue l'immagine container hello-app
.
In questo comando:
--image
specifica l'immagine del container di cui va eseguito il deployment. In questo caso, il comando estrae l'immagine di esempio da un repository Artifact Registry,us-docker.pkg.dev/google-samples/containers/gke/hello-app
.:1.0
indica la specifica versione dell'immagine di cui va eseguito il pull. Se non specifichi una versione, viene utilizzata l'immagine taggata conlatest
.
Esponi il deployment
Dopo aver eseguito il deployment dell'applicazione, devi esporla a internet in modo che gli utenti possano accedervi. Puoi esporre la tua applicazione creando un servizio, una risorsa Kubernetes che espone la tua applicazione al traffico esterno.
Per esporre l'applicazione, esegui questo comando
kubectl expose
:
kubectl expose deployment hello-server --type LoadBalancer --port 80 --target-port 8080
L'utilizzo del flag --type LoadBalancer
crea un bilanciatore del carico Azure per il container. Il flag --port
inizializza la porta pubblica 80 su
internet e il flag --target-port
instrada il traffico alla porta 8080 dell'
applicazione.
I bilanciatori del carico vengono fatturati in base ai prezzi del bilanciatore del carico Azure.
Ispezionare e visualizzare l'applicazione
Esamina i pod in esecuzione utilizzando
kubectl get pods
:kubectl get pods
Dovresti vedere un pod
hello-server
in esecuzione sul cluster.Controlla il servizio
hello-server
utilizzandokubectl get service
:kubectl get service hello-server
Dall'output di questo comando, copia l'indirizzo IP esterno del servizio dalla colonna
EXTERNAL-IP
.Visualizza l'applicazione dal browser web utilizzando l'IP esterno con la porta esposta:
http://EXTERNAL-IP
Hai appena eseguito il deployment di un'applicazione web containerizzata su GKE su Azure.
Esegui la pulizia
Elimina il servizio e il deployment dell'applicazione:
kubectl delete service hello-server kubectl delete deployment hello-server
Elimina il pool di nodi eseguendo
gcloud container azure node-pools delete
:gcloud container azure node-pools delete pool-0 --cluster azure-cluster-0
Elimina il cluster eseguendo
gcloud container azure clusters delete
:gcloud container azure clusters delete azure-cluster-0