Questo tutorial è rivolto ad architetti cloud e amministratori delle operazioni interessati a eseguire il deployment di un'applicazione web in un cluster Google Kubernetes Engine (GKE) ed esporla 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.
- Esegui il deployment di un'applicazione web di esempio.
Costi
In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Una volta completate le attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la pagina Pulizia.
Prima di iniziare
Configura il progetto
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Google Kubernetes Engine, Cloud DNS APIs.
-
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Google Kubernetes Engine, Cloud DNS APIs.
- Devi possedere un nome di dominio. Il nome di dominio non deve superare i 63 caratteri. Puoi utilizzare la modalità 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 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-central1
Clona il repository di codice:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.git
Passa 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 init
Visualizza le modifiche all'infrastruttura:
terraform plan
Quando richiesto, inserisci il tuo dominio, ad esempio
my-domain.net
.Applica la configurazione Terraform:
terraform apply --auto-approve
Quando 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"
Creare un bilanciatore del carico delle applicazioni esterno
Il manifest seguente descrive un ManagedCertificate, FrontendConfig, Deployment, servizio e Ingress:
Sostituisci
DOMAIN_NAME
con il tuo nome di dominio, ad esempiomy-domain.net
.Questo manifest presenta le seguenti proprietà:
networking.gke.io/managed-certificates
: il nome del ManagedCertificate.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 GKE Ingress di creare un bilanciatore del carico delle applicazioni esterno.
Applica il manifest al cluster:
kubectl apply -f kubernetes-manifests.yaml
Verifica che l'oggetto Ingress sia stato creato:
kubectl describe ingress frontend
L'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.
Applicazione di test
Controlla lo stato del certificato SSL:
kubectl get managedcertificates.networking.gke.io networking-managed-cert
Il provisioning del certificato SSL potrebbe richiedere fino a 30 minuti. L'output seguente indica che il certificato SSL è pronto:
NAME AGE STATUS networking-managed-cert 28m Active
Esegui un comando
curl
:curl -Lv https://DOMAIN_NAME
L'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
Esegui la pulizia
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
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Elimina singole risorse
Elimina le risorse Kubernetes:
kubectl delete -f kubernetes-manifests.yaml
Elimina le risorse Terraform:
terraform destroy --auto-approve
Quando richiesto, inserisci il tuo dominio, ad esempio
my-domain.net
.
Passaggi successivi
- Scopri di più sul networking GKE.