Deployment di un'applicazione su cluster Anthos su Azure
Questa pagina descrive come creare un cluster e un pool di nodi, quindi eseguire il deployment di un'applicazione di esempio utilizzando i cluster Anthos su Azure.
Assistenza Terraform
Se hai familiarità con Terraform, puoi utilizzare gli script di Teraform 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 di Azure in cui verrà eseguito il cluster.
- Una subnet per le repliche del piano di controllo Kubernetes.
- Assegnazioni dei ruoli Azure che concedono l'accesso ad Anthos ai cluster Anthos all'ambiente Azure utilizzando un'entità di servizio.
- Una risorsa AzureClient che i cluster Anthos su Azure utilizzano per eseguire l'autenticazione sui servizi Azure e gestire le risorse nel tuo account Azure.
- Una coppia di chiavi SSH per accedere alle macchine virtuali di 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 cluster sono gestite da cluster Anthos su Azure.
Configura le impostazioni predefinite per l'interfaccia a riga di comando gcloud
Utilizza l'interfaccia a riga di comando gcloud per configurare le impostazioni predefinite per il tuo progetto predefinito e l'area geografica di Google Cloud.
Il progetto ha un ID progetto come identificatore univoco. Quando crei un progetto, puoi utilizzare l'ID generato automaticamente oppure puoi creare il tuo progetto.
L'area geografica Google Cloud è una località da cui verranno gestiti i cluster. Ad esempio, us-west1
. Per ulteriori dettagli, consulta Aree geografiche per la gestione.
Quando configuri queste impostazioni predefinite, non devi includerle quando
esegui l'interfaccia a riga di comando di Google Cloud. Puoi anche specificare impostazioni o sostituire le impostazioni predefinite passando i flag --project
e --location
nell'interfaccia a riga di comando di Google Cloud.
Quando crei i cluster Anthos sulle risorse di Azure dopo aver configurato il progetto e la località predefiniti, le risorse vengono create automaticamente nel progetto e nella località.
Per configurare le impostazioni predefinite, procedi nel seguente modo:
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 di Azure per il cluster
Seleziona un ID gruppo di risorse
Salva il gruppo di risorse del cluster in una variabile di ambiente con il comando seguente:
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 impostato nel passaggio
Creare un gruppo di risorse di Azure.
Seleziona un ID rete virtuale
Salva l'ID VNet del tuo cluster in una variabile di ambiente tramite il comando seguente:
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 contenente la tua rete virtuale, come configurato nel passaggio preliminare Crea una rete virtuale di Azure.VNET_NAME
con il nome della rete virtuale, come configurato nel passaggio preliminare Crea una rete virtuale di Azure.
Seleziona un ID subnet
Salva l'ID subnet del tuo cluster in una variabile di ambiente tramite il comando seguente:
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ò essere il nome del gruppo di risorse impostato in Creare una rete virtuale di Azure.VNET_NAME
con il nome della rete virtuale. Può essere il nome della rete virtuale che hai configurato in Creare una rete virtuale Azure.SUBNET_NAME
con il nome della subnet, ad esempiodefault
.
Seleziona gli intervalli CIDR per il cluster
Kubernetes richiede che vengano forniti 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. Dovrebbero essere abbastanza grandi per la dimensione massima prevista del cluster.
Intervallo CIDR dell'indirizzo del pod: quando viene creato un nuovo
Pod
, viene assegnato un indirizzo IP da questo intervallo. Intervallo di esempio: 192.168.208.0/20Intervallo CIDR indirizzo servizio: quando viene creato un nuovo servizio, viene allocato un indirizzo IP da questo intervallo. Intervallo di esempio: 192.168.224.0/20
Crea un cluster
Utilizza il comando seguente per creare un cluster in cluster Anthos su Azure.
gcloud container azure clusters create azure-cluster-0 \
--cluster-version 1.22.8-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
: un'area geografica di Azure supportata associata all'area geografica di Google CloudFLEET_PROJECT_ID
con l'ID progetto dell'host flotta in cui verrà registrato il cluster.CLIENT_NAME
: il tuo nome AzureClient.POD_CIDR_BLOCK
: intervallo di indirizzi del pod del clusterSERVICE_CIDR_BLOCK
: intervallo di indirizzi dei servizi del clusterSSH_PUBLIC_KEY
con il testo della tua chiave pubblica SSH, come creato nel passaggio preliminare Crea una coppia di chiavi SSH. Se in questo passaggio hai salvato la tua chiave pubblica in una variabile di ambiente, puoi utilizzare${SSH_PUBLIC_KEY}
.
Per ulteriori informazioni e parametri facoltativi, consulta la pagina di riferimento gcloud container azure clusters create.
Creazione di un pool di nodi
Crea un pool di nodi con l'interfaccia a riga di comando di Google Cloud:
gcloud container azure node-pools create pool-0 \
--cluster azure-cluster-0 \
--node-version 1.22.8-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 preliminare
Crea una coppia di chiavi SSH. Se hai salvato la tua chiave pubblica in una variabile di ambiente,
puoi utilizzare ${SSH_PUBLIC_KEY}
.
Recupera le credenziali di autenticazione per il cluster
Dopo aver creato il cluster, devi ottenere 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
Gateway di connessione. Per utilizzare il gateway Connect è necessario almeno un pool di nodi perché si basa sull'agente Connect, che viene eseguito come deployment nel cluster.
Eseguire il deployment di un'applicazione nel cluster
Ora che hai creato un cluster, puoi eseguirne il deployment in un'applicazione containerizzata. Per questa guida rapida, puoi eseguire il deployment della nostra applicazione web di esempio, hello-app
.
Puoi utilizzare gli oggetti Kubernetes per creare e gestire le risorse del cluster. L'oggetto Deployment consente di 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 il comando seguente:
kubectl create deployment hello-server --image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Questo comando Kubernetes,
kubectl create deployment
crea un deployment denominato hello-server
. Il pod del deployment esegue l'immagine del container hello-app
.
In questo comando:
--image
specifica un'immagine container di cui eseguire il deployment. In questo caso, il comando esegue il pull dell'immagine di esempio da un repository Artifact Registry,us-docker.pkg.dev/google-samples/containers/gke/hello-app
.:1.0
indica la versione specifica dell'immagine di cui eseguire 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. Per esporre l'applicazione puoi creare un servizio, una risorsa Kubernetes che espongono l'applicazione al traffico esterno.
Per esporre l'applicazione, esegui il comando
kubectl expose
:
kubectl expose deployment hello-server --type LoadBalancer --port 80 --target-port 8080
Il trasferimento nel flag --type LoadBalancer
crea un bilanciatore del carico di Azure per il tuo container. Il flag --port
inizializza la porta 80 pubblica 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 di Azure.
Esaminare 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 tuo cluster.Esamina il servizio
hello-server
utilizzandokubectl get service
:kubectl get service hello-server
Da questo output del 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 nei cluster Anthos 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