Esegui il deployment di un'applicazione su GKE su AWS

Questa pagina fornisce istruzioni per la guida rapida per creare un cluster e un pool di nodi, quindi eseguire il deployment di un'applicazione di esempio utilizzando GKE su AWS.

Questa pagina è rivolta agli amministratori IT e agli operatori che vogliono configurare, monitorare e gestire l'infrastruttura cloud. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti, consulta la pagina Ruoli e attività comuni degli utenti GKE. Google Cloud

Avvia rapidamente il 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.

Puoi scoprire di più su Terraform in un ambiente AWS nella guida di riferimento del cluster Terraform e nella guida di riferimento pool di nodi Terraform.

Dopo aver creato un VPC e un cluster con Terraform, vai a Esegui il deployment di un'applicazione nel cluster per eseguire il deployment di un'applicazione di esempio.

Avvia rapidamente il cluster senza Terraform

Se preferisci preparare il tuo VPC AWS e creare un cluster e 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 control plane. Ciascuna deve trovarsi in una zona di disponibilità AWS diversa.
  • Il ruolo AWS IAM che GKE su AWS assume durante la gestione del cluster. Per farlo, è necessario un insieme specifico di autorizzazioni IAM.
  • Chiavi CMK simmetriche KMS per la crittografia at-rest dei dati del cluster (etcd) e della configurazione.
  • Il profilo istanza AWS IAM per ogni replica del control plane. Per farlo, è necessario 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 control plane.

È tua responsabilità creare e gestire queste risorse, che possono essere condivise tra tutti i tuoi cluster GKE su AWS. Tutte le altre risorse AWS sottostanti con ambito cluster sono gestite da GKE su AWS.

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 personalizzato.

La tua Google Cloud regione è 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 AWS 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:

  1. Imposta il progetto predefinito:

    gcloud config set project PROJECT_ID
    

    Sostituisci PROJECT_ID con l'ID progetto.

  2. Imposta la posizione di gestione predefinita:

    gcloud config set container_aws/location GOOGLE_CLOUD_LOCATION
    

    Sostituisci GOOGLE_CLOUD_LOCATION con la tua posizione, ad esempio us-west1.

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/20

  • Intervallo CIDR dell'indirizzo del servizio: quando viene creato un nuovo Service, 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 AWS. Per saperne di più 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.32.4-gke.200 \
    --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 parco risorse in cui verrà registrato il cluster
  • VPC_ID: l'ID del VPC AWS per questo cluster che hai configurato nel passaggio dei prerequisiti Crea il tuo VPC.
  • CONTROL_PLANE_SUBNET_1, CONTROL_PLANE_SUBNET_2, CONTROL_PLANE_SUBNET_3: gli ID subnet per le tre istanze del control plane del cluster che hai creato nel passaggio dei prerequisiti Crea subnet private
  • POD_CIDR_BLOCK: l'intervallo di indirizzi CIDR per i pod del cluster
  • SERVICE_CIDR_BLOCK: l'intervallo di indirizzi CIDR per i servizi del cluster
  • API_ROLE_ARN: l'ARN del ruolo IAM per il servizio GKE Multi-cloud che hai creato nel passaggio dei prerequisiti Crea ruolo API GKE Multi-cloud
  • CONTROL_PLANE_PROFILE: il nome del profilo dell'istanza IAM associato al cluster scelto nel passaggio dei prerequisiti Crea ruolo del control plane
  • DB_KMS_KEY_ARN: l'Amazon Resource Name (ARN) di una delle chiavi AWS KMS che hai creato nel passaggio dei prerequisiti Creazione di una chiave AWS KMS
  • CONFIG_KMS_KEY_ARN: l'Amazon Resource Name (ARN) dell'altra chiave AWS KMS che hai creato nel passaggio dei prerequisiti Creazione di 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 control plane con il nome del cluster a cui appartengono.

Crea un node pool

Utilizza il seguente comando per creare un pool di nodi:

gcloud container aws node-pools create pool-0 \
    --cluster aws-cluster-0 \
    --node-version 1.32.4-gke.200 \
    --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 Crea subnet private dei prerequisiti
  • NODEPOOL_PROFILE: il nome del profilo dell'istanza IAM per le istanze EC2 nel pool di nodi scelto nel passaggio dei prerequisiti Crea 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
  • EC2_KEY_PAIR (facoltativo): il nome della coppia di chiavi EC2 creata per l'accesso SSH (facoltativo) che hai creato nel passaggio dei prerequisiti Creazione di una coppia di chiavi SSH

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 aws clusters describe per ottenere dettagli sul tuo cluster:

gcloud container aws clusters describe CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster
  • GOOGLE_CLOUD_LOCATION: il nome della Google Cloud posizione che gestisce il cluster

Console Google Cloud

  1. Nella console Google Cloud , vai alla pagina Panoramica dei cluster Google Kubernetes Engine.

    Vai ai cluster GKE

  2. I cluster sono elencati in base al nome e alla posizione.

  3. 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 aws clusters get-credentials aws-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 con latest.

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 AWS 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 AWS.

Ispezionare e visualizzare l'applicazione

  1. Esamina i pod in esecuzione utilizzando kubectl get pods:

    kubectl get pods
    

    Dovresti vedere un pod hello-server in esecuzione sul cluster.

  2. Controlla il servizio hello-server utilizzando kubectl get service:

    kubectl get service hello-server
    

    Dall'output di questo comando, copia l'indirizzo IP esterno del servizio dalla colonna EXTERNAL-IP.

  3. 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 in GKE su AWS.

Esegui la pulizia

  1. Elimina il servizio e il deployment dell'applicazione:

    kubectl delete service hello-server
    kubectl delete deployment hello-server
    
  2. Elimina il pool di nodi eseguendo gcloud container aws node-pools delete:

    gcloud container aws node-pools delete pool-0 --cluster aws-cluster-0
    
  3. Elimina il cluster eseguendo gcloud container aws clusters delete:

    gcloud container aws clusters delete aws-cluster-0
    

Passaggi successivi