Questo tutorial mostra 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 che punti alla tua applicazione Questo tutorial presuppone che tu possieda un nome di dominio registrato, ad esempio esempio.com Puoi registrare un nome di dominio tramite Google Domains o un altro tuo registrar di domini scelta se non ne hai uno ## Obiettivi Questo tutorial illustra i seguenti passaggi: ## Costi Questo tutorial utilizza i seguenti componenti fatturabili di Google Cloud: Per generare una stima dei costi basata sull'utilizzo previsto, utilizzare il calcolatore dei prezzi Al termine di questo tutorial, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, vedere Pulizia ## Prima di iniziareEsegui i seguenti passaggi per abilitare l'API Kubernetes Engine: - Visita la pagina di Kubernetes Engine nella console di Google Cloud - Crea o seleziona un progetto - Attendere l'abilitazione dell'API e dei relativi servizi. Questo può richiedere diversi minuti - Assicurati che la fatturazione sia abilitata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto Installa i seguenti strumenti della riga di comando utilizzati in questo tutorial: - gcloud viene utilizzato per creare ed eliminare i cluster Kubernetes Engine gcloud è incluso nel gcloudCLI - kubectlis utilizzato per gestire Kubernetes, il sistema di orchestrazione del cluster utilizzato da Kubernetes Engine. Puoi installare kubectlusing cloud: I componenti gcloud installano kubectl Clonare il codice di esempio da GitHub: clone git httpsgithub.com/GoogleCloudPlatform/kubernetes-engine-samples cd kubernetes-engine-samples/hello-app/manifests Imposta i valori predefiniti per il Per risparmiare tempo, digita il tuo ID progetto e le opzioni di zona Compute Engine in strumento da riga di comando gcloud gcloudcommand-line tool, puoi impostare le impostazioni predefinite: progetto set di configurazione gcloud set di configurazione project-idgcloud compute/zone compute-zone Crea un cluster Crea un cluster di contenitori denominato domain-test per distribuire la tua applicazione web: i cluster di contenitori gcloud creano domain-test ## Distribuzione della tua applicazione web Il seguente manifest descrive una distribuzione che esegue un'immagine del contenitore dell'applicazione Web di esempio: # Copyright 2021 Google LLC # # Concesso in licenza in base alla Licenza Apache, versione 2.0 (la "Licenza # non è possibile utilizzare questo file se non in conformità con la Licenza. # È possibile ottenere una copia della Licenza all'indirizzo # # http://www.apache.org /licenses/LICENSE-2.0 # # A meno che non sia richiesto dalla legge applicabile o concordato per iscritto, il software # distribuito sotto la Licenza è distribuito "COSÌ COM'È", # SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, esplicite o implicite. # Consulta la Licenza per la lingua specifica che regola le autorizzazioni e # limitazioni ai sensi della Licenza. apiVersion: apps/v1 kind: Deployment metadata: name: helloweb labels: app: hello spec: selector: matchLabels: app: hello tier: web template: metadata: etichette: app: hello livello: specifica web: contenitori: - nome: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 porte: - containerPort: 8080 risorse: richieste : processore: 200 m Eseguire il comando seguente per creare il deployment: kubectl apply -f helloweb-deployment.yaml ## Esporre la tua applicazione Puoi esporre la tua applicazione su GKE utilizzando uno dei seguenti metodi: Utilizza un servizio, che crea un bilanciamento del carico di rete TCP che funziona con indirizzi IP regionali. Utilizza un Ingress, che crea un bilanciatore del carico HTTP(S) e supporta gli indirizzi IP globali Per ulteriori informazioni sui vantaggi e gli svantaggi di ciascun metodo, fare riferimento a Configurazione del bilanciamento del carico HTTP(S) con Ingress Usa un servizio Per assicurarti che la tua applicazione disponga di un indirizzo IP pubblico statico, devi riservare 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, creare un indirizzo IP statico denominato helloweb-ip nel regione us-central1: gcloud gli indirizzi di calcolo gcloud creano helloweb-ip --region us-central1 Per trovare l'indirizzo IP statico che hai creato, esegui il seguente comando: gli indirizzi di calcolo gcloud descrivono helloweb-ip --region us-central1Output: indirizzo: 203.0.113.32 .. Connettore di configurazione **Nota Questo passaggio richiede Connettore di configurazione. Segui il Istruzioni per l'installazione per installare Config Connector sul tuo cluster apiVersion: compute.cnrm.cloud.google.com/v1beta1 tipo: metadati ComputeAddress: nome: helloweb-ip spec: posizione: us-central1 kubectl apply -f compute-address-regional.yamlPer trovare l'indirizzo IP statico, eseguire il comando seguente: kubectl get computeaddress helloweb-ip -o jsonpathspec.address}'Il seguente manifest descrive un servizio di tipo LoadBalancer, che crea un bilanciatore del carico di rete per esporre i pod con un IP pubblico Sostituire `YOUR.IP.ADDRESS.HERE` con l'indirizzo IP statico: # Copyright 2021 Google LLC # # Concesso in licenza in base alla Licenza Apache, versione 2.0 (la "Licenza # non è possibile utilizzare questo file se non in conformità con la Licenza. # È possibile ottenere una copia della Licenza all'indirizzo # # http://www.apache.org /licenses/LICENSE-2.0 # # A meno che non sia richiesto dalla legge applicabile o concordato per iscritto, il software # distribuito sotto la Licenza è distribuito "COSÌ COM'È", # SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, esplicite o implicite. # Consulta la Licenza per la lingua specifica che regola le autorizzazioni e # limitazioni ai sensi della Licenza. apiVersion: v1 kind: Service metadata: name: helloweb labels: app: hello spec: selector: app: hello tier: web ports: - port: 80 targetPort: 8080 tipo: LoadBalancer loadBalancerIP: "YOUR.IP.ADDRESS.HERE"Quindi, crea il servizio: kubectl apply -f helloweb-service-static-ip.yaml Per visualizzare l'indirizzo IP riservato associato al sistema di bilanciamento del carico: kubectl get serviceOutput: NOME CLUSTER-IP EXTERNAL-IP PORT(S) ETÀ helloweb 10.31.254.176 203.0.113.32 80:30690/TCP 54s Usa un ingresso Se scegli di esporre la tua applicazione utilizzando un ingresso, che crea un bilanciatore del carico HTTP(S), devi prenotare un indirizzo IP statico globale. Gli indirizzi IP regionali non funzionano con Ingress Per ulteriori informazioni su come utilizzare Ingress per esporre le tue applicazioni a Internet, fai riferimento al tutorial Configurazione del bilanciamento del carico HTTP(S) con Ingress Per creare un indirizzo IP statico globale denominato helloweb-ip: gcloud gli indirizzi di calcolo gcloud creano helloweb-ip --global Per trovare l'indirizzo IP statico che hai creato: gli indirizzi di calcolo gcloud descrivono helloweb-ip --globalOutput: indirizzo: 203.0.113.32 .. Connettore di configurazione **Nota Questo passaggio richiede Connettore di configurazione. Segui il Istruzioni per l'installazione per installare Config Connector sul tuo cluster apiVersion: compute.cnrm.cloud.google.com/v1beta1 tipo: metadati ComputeAddress: nome: helloweb-ip spec: posizione: globale kubectl apply -f compute-address-global.yaml Il seguente manifest descrive un'applicazione web Ingress su un IP statico con due risorse: - UN Serviziocon digitare:NodePort - Un Ingressconfigurato con il nome del servizio e l'annotazione dell'IP statico # Copyright 2021 Google LLC # # Concesso in licenza in base alla Licenza Apache, versione 2.0 (la "Licenza # non è possibile utilizzare questo file se non in conformità con la Licenza. # È possibile ottenere una copia della Licenza all'indirizzo # # http://www.apache.org /licenses/LICENSE-2.0 # # A meno che non sia richiesto dalla legge applicabile o concordato per iscritto, il software # distribuito sotto la Licenza è distribuito "COSÌ COM'È", # SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, esplicite o implicite. # Consulta la Licenza per la lingua specifica che regola le autorizzazioni e # limitazioni ai sensi della Licenza. apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: helloweb annotations: kubernetes.io/ingress.global-static-ip-name: helloweb -ip label: app: hello spec: defaultBackend: service: name: helloweb-backend port: number: 8080apiVersion: v1 kind: Service metadata: name: helloweb-backend labels: app: hello spec: type: NodePort selector: app: hello livello: porte web: - porta: 8080 targetPort: 8080 Il L'annotazione kubernetes.io/ingress.global-static-ip-name specifica il nome della risorsa indirizzo IP globale da associare al caricamento HTTP(S). Bilanciatore Applicare la risorsa al cluster: kubectl apply -f helloweb-ingress-static-ip.yamlOutput: ingress "helloweb"creato servizio "helloweb-backend"creato Per visualizzare l'indirizzo IP di riserva associato al sistema di bilanciamento del carico: kubectl get ingressoUscita: NOME HOST INDIRIZZO PORTI ETÀ helloweb * 203.0.113.32 80 4m ## Visitando il tuo indirizzo IP statico riservato Per verificare che il bilanciamento del carico sia configurato correttamente, puoi utilizzare a browser Web per visitare l'indirizzo IP o utilizzare arricciare: curl http203.0.113.32/Uscita: Ciao mondo! Nome host: helloweb-3766687455-8lvqv ## Configurazione dei record del nome di dominio Per fare in modo che i browser interroghino il tuo nome di dominio, ad esempio esempio.com o sottodominio nome, ad es 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 file 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 nameserver. Il tuo nameserver potrebbe essere il "registrar"in 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 DNS A per il tuo nome di dominio con l'indirizzo IP riservato della tua applicazione. Se il tuo nameserver è un altro provider: fai riferimento alla documentazione del tuo servizio DNS sull'impostazione dei record DNS A per configurare il tuo nome di dominio. Se invece scegli di utilizzare Cloud DNS, fai riferimento a Migrazione a Cloud DNS ## Visitando il tuo nome di dominio Per verificare che i record DNS A del tuo nome di dominio vengano risolti 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 file ospite comando: host esempio.comUscita: example.com ha l'indirizzo 203.0.113.32 A questo punto, puoi indirizzare il tuo browser web al tuo nome di dominio e visitare il tuo sito web! ## Ripulire Per evitare di incorrere in addebiti sul tuo account Google Cloud per le risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse Elimina le risorse di bilanciamento del carico: kubectl delete ingress,service -l app=hello Rilascia l'IP statico riservato. Dopo l'eliminazione del sistema di bilanciamento del carico, l'indirizzo IP inutilizzato ma riservato non è più gratuito e viene fatturato in base al prezzo dell'indirizzo IP inutilizzato. Eseguire i seguenti comandi per rilasciare la risorsa IP statico: Se hai utilizzato un Servizio: gli indirizzi di calcolo di gcloud eliminano helloweb-ip --region us-central1 Se hai utilizzato un Ingress: gli indirizzi di calcolo gcloud eliminano helloweb-ip --global - Elimina l'applicazione di esempio: kubectl delete -f helloweb-deployment.yaml Attendere fino a quando il bilanciamento del carico non viene eliminatoosservando l'output del seguente comando. L'output non dovrebbe mostrare una regola di inoltro che contiene "helloweb"nel suo nome: elenco delle regole di inoltro di gcloud compute Elimina il cluster di contenitori: i cluster di contenitori gcloud eliminano domain-test ## Qual è il prossimo Registra il tuo nome di dominio tramite Google Domains Esplora altri tutorial su Kubernetes Engine Esplora architetture di riferimento, diagrammi, tutorial e best practice su Google Cloud. Dai un'occhiata al nostro Cloud Architecture Center.