Questo tutorial illustra come utilizzare Google Kubernetes Engine (GKE) per esporre la tua applicazione web a internet su un indirizzo IP esterno statico e configurare un nome di dominio in modo che punti alla tua applicazione.
Questo tutorial presuppone che tu sia proprietario di un nome di dominio registrato, ad esempio example.com.
Obiettivi
Questo tutorial illustra i seguenti passaggi:
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
Per abilitare l'API Kubernetes Engine, segui questi passaggi:- Visita la pagina di Kubernetes Engine nella Google Cloud console.
- Crea o seleziona un progetto.
- Attendi che l'API e i relativi servizi siano abilitati. L'operazione può richiedere diversi minuti.
-
Verifica che la fatturazione sia abilitata per il tuo Google Cloud progetto.
Installa i seguenti strumenti a riga di comando utilizzati in questo tutorial:
-
gcloudviene utilizzato per creare ed eliminare i cluster Kubernetes Engine.gcloudè incluso nellagcloudCLI. -
kubectlviene utilizzato per gestire Kubernetes, il sistema di orchestrazione dei cluster utilizzato da Kubernetes Engine. Puoi installarekubectlutilizzandogcloud:gcloud components install kubectl
Clona il codice campione da GitHub:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples
cd kubernetes-engine-samples/quickstarts/hello-app/manifests
Imposta i valori predefiniti per lo strumento a riga di comando gcloud
Per risparmiare tempo durante la digitazione dell'ID progetto
e delle opzioni della zona Compute Engine nello strumento a riga di comando gcloud, puoi impostare i valori predefiniti:
gcloud config set project project-id gcloud config set compute/zone compute-zone
Crea un cluster
Crea un cluster:
gcloud container clusters create-auto domain-test
Esegui il deployment dell'applicazione web
Il seguente manifest descrive un deployment che esegue un'immagine container di un'applicazione web di esempio:
Crea il deployment:
kubectl apply -f helloweb-deployment.yaml
Esporre l'applicazione
Puoi esporre la tua applicazione su GKE utilizzando uno dei seguenti metodi:
Utilizza un servizio, che crea un bilanciatore del carico di rete passthrough esterno che funziona con gli indirizzi IP regionali.
Utilizza un Ingress, che crea un bilanciatore del carico delle applicazioni e supporta gli indirizzi IP globali.
Per scoprire di più sui vantaggi e sugli svantaggi di ogni metodo, consulta Configurare un bilanciatore del carico delle applicazioni esterno con Ingress.
Utilizza un servizio
Per assicurarti che la tua applicazione abbia un indirizzo IP esterno statico, devi prenotare un indirizzo IP statico.
Se scegli di esporre la tua applicazione utilizzando un servizio, devi creare un indirizzo IP regionale. Gli indirizzi IP globali funzionano solo con il tipo di risorsa Ingress, come spiegato nella sezione successiva.
Per utilizzare un servizio, crea un indirizzo IP statico denominato helloweb-ip nella regione us-central1:
gcloud
gcloud compute addresses create helloweb-ip --region us-central1
Trova l'indirizzo IP statico che hai creato:
gcloud compute addresses describe helloweb-ip --region us-central1
L'output è simile al seguente:
...
address: 203.0.113.32
...
Config Connector
Nota: questo passaggio richiede Config Connector. Segui le istruzioni di installazione per installare Config Connector sul tuo cluster.
Salva il manifest come compute-address-regional.yaml.
Applica il manifest al tuo cluster:
kubectl apply -f compute-address-regional.yaml
Trova l'indirizzo IP statico che hai creato:
kubectl get computeaddress helloweb-ip -o jsonpath='{.spec.address}'
Il seguente manifest descrive un servizio di tipo LoadBalancer, che crea un bilanciatore del carico di rete passthrough esterno per esporre i pod con un indirizzo IP esterno.
Crea il servizio:
kubectl apply -f helloweb-service-static-ip.yaml
Visualizza l'indirizzo IP prenotato associato al bilanciatore del carico:
kubectl get service
L'output è simile al seguente:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
helloweb 10.31.254.176 203.0.113.32 80:30690/TCP 54s
Utilizza un Ingress
Se scegli di esporre la tua applicazione utilizzando un
Ingress,
devi
prenotare un indirizzo IP statico globale.
Utilizza l'annotazione kubernetes.io/ingress.global-static-ip-name per specificare un indirizzo IP globale.
Per esporre la tua applicazione a client e servizi in una regione, utilizza un indirizzo IP interno statico regionale durante il deployment di una risorsa Ingress interna per GKE insieme alle annotazioni richieste.
Per creare un indirizzo IP statico globale denominato helloweb-ip:
gcloud
gcloud compute addresses create helloweb-ip --global
Trova l'indirizzo IP statico che hai creato:
gcloud compute addresses describe helloweb-ip --global
L'output è simile al seguente:
...
address: 203.0.113.32
...
Config Connector
Nota: questo passaggio richiede Config Connector. Segui le istruzioni di installazione per installare Config Connector sul tuo cluster.
Salva il manifest come compute-address-global.yaml.
Applica il manifest al tuo cluster:
kubectl apply -f compute-address-global.yaml
Il seguente manifest descrive un Ingress che espone un'applicazione web su un IP statico con due risorse:
- Un
Servicecontype:NodePort - Un
Ingressconfigurato con il nome del servizio e l'annotazione IP statica
L'annotazione kubernetes.io/ingress.global-static-ip-name specifica il nome della risorsa di indirizzo IP globale da associare al bilanciatore del carico.
Applica il manifest al tuo cluster:
kubectl apply -f helloweb-ingress-static-ip.yaml
Visualizza l'indirizzo IP associato al bilanciatore del carico:
kubectl get ingress
L'output è simile al seguente
NAME HOSTS ADDRESS PORTS AGE
helloweb * 203.0.113.32 80 4m
Visualizza l'indirizzo IP statico prenotato
Per verificare che il bilanciatore del carico sia configurato correttamente, puoi utilizzare un browser web per visitare l'indirizzo IP o utilizzare curl:
curl http://203.0.113.32/
L'output è simile al seguente:
Hello, world!
Hostname: helloweb-3766687455-8lvqv
Configura i record del nome di dominio
Per fare in modo che i browser che eseguono query sul tuo nome di dominio, ad esempio example.com, o sul nome del sottodominio, ad esempio blog.example.com, puntino all'indirizzo IP statico che hai prenotato,
devi aggiornare i record DNS (Domain Name Server) del tuo nome di dominio.
Devi creare un record DNS di tipo A (indirizzo) per il tuo nome di dominio o sottodominio e configurarne il valore con l'indirizzo IP prenotato
I record DNS del tuo dominio sono gestiti dal tuo server dei nomi. Il server dei nomi potrebbe essere il "registrar" presso cui hai registrato il tuo dominio, un servizio DNS come Cloud DNS o un altro provider di terze parti.
Se il tuo server dei nomi è Cloud DNS: segui la guida rapida di Cloud DNS per configurare il record A DNS per il tuo nome di dominio con l'indirizzo IP prenotato della tua applicazione.
Se il tuo server dei nomi è un altro provider: consulta la documentazione del tuo provider DNS per configurare il tuo nome di dominio impostando i record A DNS. Se scegli di utilizzare Cloud DNS, consulta Migrazione a Cloud DNS.
Visita il tuo nome di dominio
Per verificare che i record A DNS del tuo nome di dominio si risolvano nell'indirizzo IP che hai prenotato, visita il tuo nome di dominio.
Per eseguire una query DNS per il record A del tuo nome di dominio, esegui il comando host:
host example.com
L'output è simile al seguente:
example.com has address 203.0.113.32
Ora puoi puntare il browser web al tuo nome di dominio e visitare il tuo sito web.
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 servizio e l'Ingress:
kubectl delete ingress,service -l app=helloRilascia l'IP statico prenotato. Dopo l'eliminazione del bilanciatore del carico, l'indirizzo IP inutilizzato ma prenotato viene fatturato in base ai prezzi degli indirizzi IP inutilizzati.
Se hai utilizzato un servizio:
gcloud compute addresses delete helloweb-ip --region us-central1Se hai utilizzato un Ingress:
gcloud compute addresses delete helloweb-ip --global
Elimina l'applicazione di esempio:
kubectl delete -f helloweb-deployment.yamlElimina il cluster:
gcloud container clusters delete domain-test
Passaggi successivi
- Scopri come configurare un bilanciatore del carico delle applicazioni esterno con Ingress.
- Scopri di più su GKE Ingress per i bilanciatori del carico delle applicazioni.
- Scopri come utilizzare i certificati SSL gestiti da Google.
- Esplora altri tutorial su Kubernetes Engine.
- Esplora architetture, diagrammi e best practice di riferimento su Google Cloud. Consulta il nostro Cloud Architecture Center.