Questa pagina fornisce istruzioni di avvio rapido per creare un cluster e un pool di nodi, quindi eseguire il deployment di un'applicazione di esempio utilizzando GKE su AWS.
Guida rapida del cluster con Terraform
Puoi utilizzare Terraform per creare un cluster e un pool di nodi. Prima di creare il cluster, gli script Terraform preparano anche il VPC AWS.
Per saperne di più su Terraform in un ambiente AWS, consulta il riferimento sul cluster Terraform e il riferimento sul pool di nodi Terraform.
Dopo aver creato un VPC e un cluster con Terraform, vai a Eseguire il deployment di un'applicazione nel cluster per eseguire il deployment di un'applicazione di esempio.
Guida rapida del cluster senza Terraform
Se preferisci preparare il VPC AWS e creare un cluster e un pool di nodi senza Terraform, segui queste istruzioni.
Prima di iniziare
Prima di creare un cluster, devi completare i prerequisiti. In particolare, devi fornire le seguenti risorse:
- Un VPC AWS in cui verrà eseguito il cluster.
- Fino a tre subnet AWS per le tre repliche del piano di controllo. Ciascuno deve trovarsi in una zona di disponibilità AWS diversa.
- Il ruolo AWS IAM che GKE su AWS assume durante la gestione del cluster. Ciò richiede un set specifico di autorizzazioni IAM.
- Chiavi CMK simmetriche KMS per la crittografia at-rest dei dati del cluster (etcd) e della configurazione.
- Il profilo dell'istanza AWS IAM per ogni replica del piano di controllo. Ciò richiede un insieme specifico di autorizzazioni IAM.
- Una coppia di chiavi SSH EC2 (facoltativa) se hai bisogno dell'accesso SSH alle istanze EC2 che eseguono ogni replica del piano di controllo.
È tua responsabilità creare e gestire queste risorse, che possono essere condivise tra tutti i tuoi cluster GKE su AWS. Tutte le altre risorse AWS con ambito cluster sottostanti sono gestite da GKE su AWS.
Configura le impostazioni predefinite per gcloud CLI
Utilizza gcloud CLI per configurare le impostazioni predefinite per il progetto predefinito e per la regione Google Cloud.
Il progetto ha un ID progetto sotto forma di identificatore univoco. Quando crei un progetto, puoi utilizzare l'ID progetto generato automaticamente o crearne uno personalizzato.
La regione Google Cloud è una località da cui verranno gestiti i cluster. Ad esempio, us-west1
. Per ulteriori dettagli, consulta Regioni di gestione.
Quando configuri queste impostazioni predefinite, non è necessario includerle quando esegui Google Cloud CLI. Puoi anche specificare le impostazioni o ignorare le impostazioni predefinite passando i flag --project
e --location
a Google Cloud CLI.
Quando crei risorse GKE su AWS dopo aver configurato il progetto e la località predefiniti, le risorse vengono create automaticamente in quel progetto e in quella 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 località di gestione predefinita:
gcloud config set container_aws/location GOOGLE_CLOUD_LOCATION
Sostituisci
GOOGLE_CLOUD_LOCATION
con la tua località, ad esempious-west1
.
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 indirizzi del pod: quando viene creato un nuovo
Pod
, gli viene allocato un indirizzo IP di questo intervallo. Intervallo di esempio: 192.168.208.0/20Intervallo CIDR indirizzi di servizio: quando viene creato un nuovo
Service
, gli viene allocato un indirizzo IP di questo intervallo. Intervallo di esempio: 192.168.224.0/20
Crea un cluster
Utilizza il comando seguente per creare un cluster in GKE su AWS. Per ulteriori informazioni su questo comando, inclusi i parametri facoltativi, consulta la pagina di riferimento gcloud container aws create.
gcloud container aws clusters create aws-cluster-0 \
--cluster-version 1.29.3-gke.600 \
--aws-region AWS_REGION \
--fleet-project FLEET_PROJECT_ID \
--vpc-id VPC_ID \
--subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 \
--pod-address-cidr-blocks POD_CIDR_BLOCK \
--service-address-cidr-blocks SERVICE_CIDR_BLOCK \
--role-arn API_ROLE_ARN \
--iam-instance-profile CONTROL_PLANE_PROFILE \
--database-encryption-kms-key-arn DB_KMS_KEY_ARN \
--config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
--tags "google:gkemulticloud:cluster=aws-cluster-0"
Sostituisci quanto segue:
AWS_REGION
: la regione AWS in cui creare il cluster.FLEET_PROJECT_ID
: il progetto host del parco risorse in cui verrà registrato il clusterVPC_ID
: l'ID del VPC AWS per questo cluster che hai configurato nel passaggio del prerequisito Crea il tuo VPCCONTROL_PLANE_SUBNET_1
,CONTROL_PLANE_SUBNET_2
,CONTROL_PLANE_SUBNET_3
: gli ID subnet per le tre istanze del piano di controllo del cluster, che hai creato nel passaggio del prerequisito Crea subnet private.POD_CIDR_BLOCK
: l'intervallo di indirizzi CIDR per i pod del clusterSERVICE_CIDR_BLOCK
: l'intervallo di indirizzi CIDR per i servizi del clusterAPI_ROLE_ARN
: l'ARN del ruolo IAM per il servizio GKE Multi-Cloud che hai creato nel passaggio Crea ruolo API GKE Multi-Cloud per i prerequisitiCONTROL_PLANE_PROFILE
: il nome del profilo dell'istanza IAM associata al cluster che hai scelto nel passaggio del prerequisito Crea ruolo del piano di controllo.DB_KMS_KEY_ARN
: il nome della risorsa Amazon (ARN) di una delle chiavi KMS di AWS che hai creato nel passaggio del prerequisito Crea una chiave KMS AWSCONFIG_KMS_KEY_ARN
: l'Amazon Resource Name (ARN) dell'altra delle altre chiavi KMS di AWS che hai creato nel passaggio del prerequisito Crea una chiave KMS AWS
Se presente, il parametro --tags
applica il tag AWS specificato a tutte le risorse AWS sottostanti gestite da GKE su AWS. Questo esempio tagga i nodi del piano di controllo con il nome del cluster a cui appartengono.
Crea un pool di nodi
Utilizza questo comando per creare un pool di nodi:
gcloud container aws node-pools create pool-0 \
--cluster aws-cluster-0 \
--node-version 1.29.3-gke.600 \
--min-nodes 1 \
--max-nodes 5 \
--max-pods-per-node 110 \
--root-volume-size 50 \
--subnet-id NODEPOOL_SUBNET_ID \
--iam-instance-profile NODEPOOL_PROFILE \
--config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
--ssh-ec2-key-pair EC2_KEY_PAIR \
--tags "google:gkemulticloud:cluster=aws-cluster-0"
Sostituisci quanto segue:
NODEPOOL_SUBNET_ID
: l'ID di una delle subnet private che hai creato nel passaggio del prerequisito Crea subnet privateNODEPOOL_PROFILE
: il nome del profilo dell'istanza IAM per le istanze EC2 nel pool di nodi che hai scelto nel passaggio del prerequisito Creare un ruolo IAM per il pool di nodi.CONFIG_KMS_KEY_ARN
: l'Amazon Resource Name (ARN) della chiave AWS KMS per criptare i dati utente- (Facoltativo)
EC2_KEY_PAIR
: il nome della coppia di chiavi EC2 creata per l'accesso SSH (facoltativo) creata nel passaggio del prerequisito Crea coppia di chiavi SSH
Visualizza 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 la console Google Cloud. Per visualizzare lo stato del cluster, scegli se stai utilizzando Google Cloud CLI o la console Google Cloud e segui questi passaggi:
gcloud
Usa il comando gcloud container aws clusters describe
per ottenere dettagli
sul cluster:
gcloud container aws clusters describe CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Sostituisci quanto segue:
CLUSTER_NAME
: nome del clusterGOOGLE_CLOUD_LOCATION
: il nome della località Google Cloud che gestisce il cluster
Console Google Cloud
Nella console Google Cloud, vai alla pagina della panoramica dei cluster di Google Kubernetes Engine.
I cluster sono elencati in base al nome e alla località.
Fai clic sul nome del cluster. Viene visualizzato un riquadro con informazioni sul cluster, inclusi stato e funzionalità abilitate.
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 aws clusters get-credentials aws-cluster-0
Questo comando configura kubectl
per accedere al cluster che hai creato utilizzando Connetti gateway. Per utilizzare Connect Gateway è necessario 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 eseguire il deployment
di un'applicazione containerizzata al suo interno. Per questa guida rapida, puoi eseguire il deployment della nostra applicazione web di esempio, hello-app
.
Per creare e gestire le risorse del cluster si usano gli oggetti Kubernetes. Puoi usare l'oggetto Deployment per distribuire applicazioni stateless come i server web. Gli oggetti Service definiscono regole e 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 eseguire 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 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. Puoi esporre la tua applicazione creando un servizio, una risorsa Kubernetes che espone la tua applicazione al traffico esterno.
Per esporre la tua applicazione, esegui questo comando
kubectl expose
:
kubectl expose deployment hello-server --type LoadBalancer --port 80 --target-port 8080
La trasmissione del flag --type LoadBalancer
crea un bilanciatore del carico AWS per il container. Il flag --port
inizializza la porta pubblica 80 su internet, mentre 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 AWS.
Ispeziona e visualizza l'applicazione
Ispeziona i pod in esecuzione utilizzando
kubectl get pods
:kubectl get pods
Dovresti vedere un pod
hello-server
in esecuzione sul tuo 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 tuo browser web utilizzando l'IP esterno con la porta esposta:
http://EXTERNAL-IP
Hai appena eseguito il deployment di un'applicazione web containerizzata in GKE su AWS.
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 aws node-pools delete
:gcloud container aws node-pools delete pool-0 --cluster aws-cluster-0
Elimina il cluster eseguendo
gcloud container aws clusters delete
:gcloud container aws clusters delete aws-cluster-0