Questo tutorial è rivolto ad architetti cloud e amministratori delle operazioni interessati al deployment di un'applicazione web in un cluster Google Kubernetes Engine (GKE) e alla sua esposizione con un bilanciatore del carico HTTPS.
Obiettivi
In questo tutorial imparerai a:
- Creare un cluster GKE.
- Creare un indirizzo IP globale e una zona Cloud DNS con Terraform.
- Configurare il bilanciamento del carico HTTPS.
- Eseguire il deployment di un'applicazione web di esempio.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il calcolatore prezzi.
Al termine delle attività descritte in questo documento, puoi evitare l'addebito di ulteriori costi eliminando le risorse che hai creato. Per saperne di più, consulta Esegui la pulizia.
Prima di iniziare
Configura il progetto
- Accedi al tuo Google Cloud account. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
-
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
Roles required to create a project
To create a project, you need the Project Creator role (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. -
Verify that billing is enabled for your Google Cloud project.
Enable the Google Kubernetes Engine, Cloud DNS APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
Roles required to create a project
To create a project, you need the Project Creator role (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. -
Verify that billing is enabled for your Google Cloud project.
Enable the Google Kubernetes Engine, Cloud DNS APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- Devi essere proprietario di un nome di dominio. Il nome di dominio non deve superare i 63 caratteri. Puoi utilizzare Google Domains o un altro registrar.
Configura l'ambiente
In questo tutorial utilizzerai Cloud Shell per gestire le risorse ospitate su
Google Cloud. Cloud Shell è preinstallato con il software necessario per
questo tutorial, tra cui
Terraform,
kubectl e la
gcloud CLI.
Imposta le variabili di ambiente:
PROJECT_ID=$(gcloud config get-value project) gcloud config set project $PROJECT_ID gcloud config set compute/region us-central1Clona il repository di codice:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.gitPassa alla directory di lavoro:
cd kubernetes-engine-samples/autopilot/networking-tutorial
Crea un cluster GKE
Il seguente file Terraform crea un cluster GKE:
Il seguente file Terraform crea un indirizzo IP globale e una zona Cloud DNS:
Inizializza Terraform:
terraform initVisualizza le modifiche all'infrastruttura:
terraform planQuando richiesto, inserisci il tuo dominio, ad esempio
my-domain.net.Applica la configurazione Terraform:
terraform apply --auto-approveQuando richiesto, inserisci il tuo dominio, ad esempio
my-domain.net.L'output è simile al seguente:
Apply complete! Resources: 1 added, 0 changed, 0 destroyed. Outputs: cluster_name = "networking-cluster" region = "us-central1"
Crea un bilanciatore del carico delle applicazioni esterno
Il seguente manifest descrive un ManagedCertificate, FrontendConfig, Deployment, Service e Ingress:
Sostituisci
DOMAIN_NAMEcon il tuo nome di dominio, ad esempiomy-domain.net.Questo manifest ha le seguenti proprietà:
networking.gke.io/managed-certificates: il nome del ManagedCertificate. Questa risorsa esegue il provisioning di un certificato SSL gestito da Google (classico).networking.gke.io/v1beta1.FrontendConfig: il nome della risorsa FrontendConfig.kubernetes.io/ingress.global-static-ip-name: il nome dell'indirizzo IP.kubernetes.io/ingress.class: indica al controller Ingress di GKE di creare un bilanciatore del carico delle applicazioni esterno.
Applica il manifest al cluster:
kubectl apply -f kubernetes-manifests.yamlVerifica che Ingress sia stato creato:
kubectl describe ingress frontendL'output è simile al seguente:
... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ADD 2m loadbalancer-controller default/frontend Normal CREATE 1m loadbalancer-controller ip: 203.0.113.2 ...Il provisioning di Ingress potrebbe richiedere diversi minuti.
Testa l'applicazione
Controlla lo stato del certificato SSL:
kubectl get managedcertificates.networking.gke.io networking-managed-certIl provisioning del certificato SSL potrebbe richiedere fino a 30 minuti. Il seguente output indica che il certificato SSL è pronto:
NAME AGE STATUS networking-managed-cert 28m ActiveEsegui un comando
curl:curl -Lv https://DOMAIN_NAMEL'output è simile al seguente:
* Trying 34.160.115.33:443... * Connected to DOMAIN_NAME (34.160.115.33) port 443 (#0) ... * TLSv1.3 (IN), TLS handshake, Certificate (11): ... * Server certificate: * subject: CN=DOMAIN_NAME ... > Host: DOMAIN_NAME
Libera spazio
Per evitare che al tuo Account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Elimina il progetto
Elimina un Google Cloud progetto:
gcloud projects delete PROJECT_ID
Elimina singole risorse
Elimina le risorse Kubernetes:
kubectl delete -f kubernetes-manifests.yamlElimina le risorse Terraform:
terraform destroy --auto-approveQuando richiesto, inserisci il tuo dominio, ad esempio
my-domain.net.
Passaggi successivi
- Scopri di più sul networking GKE.