Questo tutorial mostra come utilizzare Google Kubernetes Engine (GKE) per esporre i tuoi un'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 possieda un nome di dominio registrato, ad esempio example.com
.
Obiettivi
Questo tutorial illustra i seguenti passaggi:
- Prenotare un indirizzo IP esterno statico per l'applicazione
- Configura Servizio o Risorse in entrata per utilizzare indirizzo IP statico
- Aggiorna i record DNS del tuo nome di dominio in modo che puntino alla tua applicazione
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
Per abilitare l'API Kubernetes Engine, segui questi passaggi:- Visita la pagina di Kubernetes Engine nella console Google Cloud.
- Crea o seleziona un progetto.
- Attendi che l'API e i relativi servizi siano abilitati. L'operazione può richiedere diversi minuti.
-
Make sure that billing is enabled for your Google Cloud project.
Installa i seguenti strumenti a riga di comando usati in questo tutorial:
-
gcloud
viene utilizzato per creare ed eliminare i cluster Kubernetes Engine.gcloud
è incluso nell'interfaccia a riga di comandogcloud
. -
kubectl
viene utilizzato per gestire Kubernetes, il sistema di orchestrazione dei cluster utilizzato in Kubernetes Engine. Puoi installarekubectl
utilizzandogcloud
:gcloud components install kubectl
Clona il codice di esempio da GitHub:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples
cd kubernetes-engine-samples/quickstarts/hello-app/manifests
Configura valori predefiniti per lo strumento a riga di comando gcloud
Per risparmiare tempo, digita il tuo ID progetto
e le opzioni per la zona di Compute Engine in gcloud
a strumento a riga di comando, puoi configurare 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 della tua applicazione web
Il manifest seguente 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 a livello di regione.
Utilizza una risorsa Ingress, che crea un Bilanciatore del carico delle applicazioni e supporta indirizzi IP globali.
Per saperne di più sui vantaggi e sugli svantaggi di ciascun metodo, vedi Configurazione di un bilanciatore del carico delle applicazioni esterno con Ingress.
Utilizzare un servizio
Per assicurarti che la tua applicazione abbia un indirizzo IP esterno statico, devi prenotare un indirizzo IP statico.
Se scegli di esporre l'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 nel cluster.
Salva il file manifest come compute-address-regional.yaml
.
Applica il manifest al 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.
Sostituisci YOUR.IP.ADDRESS.HERE
con l'indirizzo IP statico:
Crea il servizio:
kubectl apply -f helloweb-service-static-ip.yaml
Visualizza l'indirizzo IP riservato 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 traffico Ingress
Se scegli di esporre l'applicazione utilizzando un
In entrata,
devi
riserva un indirizzo IP statico globale.
Utilizza l'annotazione kubernetes.io/ingress.global-static-ip-name
per specificare un indirizzo IP globale.
Per esporre l'applicazione a client e servizi in una regione, utilizza un indirizzo IP interno statico regionale durante il deployment di una risorsa di ingresso interna per GKE insieme alle annotazioni richieste.
Per scoprire come utilizzare Ingress per esporre le tue applicazioni al internet, vedi Configurazione di un bilanciatore del carico delle applicazioni esterno con Ingress.
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 Connettore di configurazione. Segui le istruzioni per l'installazione per installare Config Connector sul tuo cluster.
Salva il manifest come compute-address-global.yaml
.
Applica il manifest al cluster:
kubectl apply -f compute-address-global.yaml
Il seguente manifest descrive un Ingress che espone un'applicazione web su un indirizzo IP statico con due risorse:
- Un
Service
contype:NodePort
- Un elemento
Ingress
configurato con il nome del servizio e l'annotazione IP statico
L'annotazione kubernetes.io/ingress.global-static-ip-name
specifica il nome della risorsa indirizzo IP globale da associare al bilanciatore del carico.
Applica il manifest al 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 il tuo 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 curl
:
curl http://203.0.113.32/
L'output è simile al seguente:
Hello, world!
Hostname: helloweb-3766687455-8lvqv
Configurare i record dei nomi di dominio
Per fare in modo che i browser eseguano query sul tuo nome di dominio, ad esempio example.com
o sul sottodominio
qualsiasi nome, ad esempio blog.example.com
, punta 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 dominio o sottodominio nome e hanno il suo valore configurato con l'indirizzo IP riservato
I record DNS del tuo dominio sono gestiti dal tuo server dei nomi. Il tuo 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 di