Denna handledning visar hur du använder Google Kubernetes Engine (GKE) för att exponera din webbapplikation för internet på en statisk extern IP-adress och konfigurera ett domännamn så att det pekar på din applikation Denna handledning förutsätter att du äger ett registrerat domännamn, t.ex exempel.com Du kan registrera ett domännamn via Google Domäner eller annan domänregistrator för din val om du inte har en ## Mål Denna handledning visar följande steg: ## Kostar Denna handledning använder följande fakturerbara komponenter i Google Cloud: För att generera en kostnadsuppskattning baserad på din beräknade användning, använd priskalkylatorn När du är klar med den här självstudien kan du undvika fortsatt fakturering genom att ta bort resurserna du skapade. Mer information finns i Rensa ## Innan du börjar Utför följande steg för att aktivera Kubernetes Engine API: - Besök Kubernetes Engine-sidan i Google Cloud-konsolen - Skapa eller välj ett projekt - Vänta tills API och relaterade tjänster aktiveras. Detta kan ta flera minuter - Se till att fakturering är aktiverat för ditt molnprojekt. Lär dig hur du kontrollerar om fakturering är aktiverat för ett projekt Installera följande kommandoradsverktyg som används i denna handledning: - gcloudis används för att skapa och ta bort Kubernetes Engine-kluster gcloudis ingår i gcloudCLI - kubectlis används för att hantera Kubernetes, klusterorkestreringssystemet som används av Kubernetes Engine. Du kan installera kubectlusing gcloud: gcloud-komponenter installerar kubectl Klona exempelkoden från GitHub: git-klon httpsgithub.com/GoogleCloudPlatform/kubernetes-engine-samples cd kubernetes-engine-samples/hello-app/manifests Ställ in standardinställningar för För att spara tid genom att skriva ditt projekt-ID och Compute Engine-zonalternativ i gcloud kommandoradsverktyg gcloudcommand-line-verktyget kan du ställa in standardinställningarna: gcloud config set projekt project-idgcloud config set compute/zone compute-zone Skapa ett kluster Skapa ett behållarkluster med namnet domäntest för att distribuera din webbapplikation: gcloud-behållarkluster skapar domäntest ## Distribuerar din webbapplikation Följande manifest beskriver en distribution som kör ett exempel på en webbapplikationscontaineravbildning: # Copyright 2021 Google LLC # # Licensierad under Apache-licensen, version 2.0 ("Licens # du får inte använda den här filen förutom i enlighet med Licensen. # Du kan få en kopia av Licensen på # # httpwww.apache.org /licenses/LICENSE-2.0 # # Såvida det inte krävs enligt tillämplig lag eller skriftligen överenskommits, distribueras programvara # som distribueras under Licensen "I BEFINTLIGT SKICK", # UTAN GARANTIER ELLER VILLKOR AV NÅGOT SLAG, varken uttryckliga eller underförstådda. # Se licensen för det specifika språket som styr behörigheter och # begränsningar under licensen.apiVersion: apps/v1 typ: Implementeringsmetadata: namn: helloweb etiketter: app: hello spec: selector: matchLabels: app: hello tier: webbmall: metadata: etiketter: app: hello tier: webbspecifikation: containrar: - namn: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 portar: - containerPort: 8080 resurser: förfrågningar : CPU: 200m Kör följande kommando för att skapa distributionen: kubectl application -f helloweb-deployment.yaml ## Exponera din applikation Du kan exponera din applikation på GKE med någon av följande metoder: Använd en tjänst som skapar en TCP Network Load Balancer som fungerar med regionala IP-adresser. Använd en Ingress, som skapar en HTTP(S) Load Balancer och stöder globala IP-adresser För att lära dig mer om fördelarna och nackdelarna med varje metod, se Konfigurera HTTP(S) lastbalansering med Ingress Använd en tjänst För att säkerställa att din applikation har en statisk offentlig IP-adress måste du reservera en statisk IP-adress Om du väljer att exponera din applikation med hjälp av en tjänst måste du skapa en regional IP-adress. Globala IP-adresser fungerar bara med Ingress-resurstyp, som förklaras i nästa avsnitt För att använda en tjänst, skapa en statisk IP-adress med namnet helloweb-ip i område us-central1: gmoln gcloud compute-adresser skapar helloweb-ip --region us-central1 För att hitta den statiska IP-adressen du skapade, kör följande kommando: gcloud compute-adresser beskriver helloweb-ip --region us-central1Output: adress: 203.0.113.32 .. Config Connector **Obs Detta steg kräver Config Connector. Följ installations instruktioner för att installera Config Connector på ditt kluster apiVersion: compute.cnrm.cloud.google.com/v1beta1 typ: ComputeAddress metadata: namn: helloweb-ip spec: plats: us-central1 kubectl apply -f compute-address-regional.yamlFör att hitta den statiska IP-adressen, kör följande kommando: kubectl get computeaddress helloweb-ip -o jsonpathspec.address}'Följande manifest beskriver en tjänst av typen LoadBalancer, som skapar en nätverksbelastningsbalanserare för att exponera Pods med en offentlig IP Byta ut `DIN.IP.ADRES.HÄR` med den statiska IP-adressen: # Copyright 2021 Google LLC # # Licensierad under Apache-licensen, version 2.0 ("Licens # du får inte använda den här filen förutom i enlighet med Licensen. # Du kan få en kopia av Licensen på # # httpwww.apache.org /licenses/LICENSE-2.0 # # Såvida det inte krävs enligt tillämplig lag eller skriftligen överenskommits, distribueras programvara # som distribueras under Licensen "I BEFINTLIGT SKICK", # UTAN GARANTIER ELLER VILLKOR AV NÅGOT SLAG, varken uttryckliga eller underförstådda. # Se licensen för det specifika språket som styr behörigheter och # begränsningar under licensen apiVersion: v1 typ: Tjänstens metadata: namn: helloweb etiketter: app: hello spec: selector: app: hello tier: webbportar: - port: 80 targetPort: 8080-typ: LoadBalancer loadBalancerIP: "DIN.IP.ADRESS.HÄR"Skapa sedan tjänsten: kubectl tillämpa -f helloweb-service-static-ip.yaml Så här ser du den reserverade IP-adressen som är kopplad till lastbalanseraren: kubectl få serviceOutput: NAMN CLUSTER-IP EXTERN-IP-PORT(AR) ÅLDER helloweb 10.31.254.176 203.0.113.32 80:30690/TCP 54s Använd en Ingress Om du väljer att exponera din applikation med en Ingress, som skapar en HTTP(S) Load Balancer, måste du reservera en global statisk IP-adress. Regionala IP-adresser fungerar inte med Ingress För att lära dig mer om hur du använder Ingress för att exponera dina applikationer för internet, se självstudien Konfigurera HTTP(S) belastningsbalansering med Ingress För att skapa en global statisk IP-adress med namnet helloweb-ip: gmoln gcloud compute-adresser skapar helloweb-ip --global Så här hittar du den statiska IP-adressen du skapade: gcloud compute-adresser beskriver helloweb-ip --globalOutput: adress: 203.0.113.32 .. Config Connector **Obs Detta steg kräver Config Connector. Följ installations instruktioner för att installera Config Connector på ditt kluster apiVersion: compute.cnrm.cloud.google.com/v1beta1 typ: ComputeAddress metadata: namn: helloweb-ip spec: plats: global kubectl tillämpa -f compute-address-global.yaml Följande manifest beskriver en Ingress som är en webbapplikation på en statisk IP med två resurser: -A Servicemed typ:NodePort - Ett Ingress konfigurerad med tjänstens namn och statisk IP-anteckning # Copyright 2021 Google LLC # # Licensierad under Apache-licensen, version 2.0 ("Licens # du får inte använda den här filen förutom i enlighet med Licensen. # Du kan få en kopia av Licensen på # # httpwww.apache.org /licenses/LICENSE-2.0 # # Såvida det inte krävs enligt tillämplig lag eller skriftligen överenskommits, distribueras programvara # som distribueras under Licensen "I BEFINTLIGT SKICK", # UTAN GARANTIER ELLER VILLKOR AV NÅGOT SLAG, varken uttryckliga eller underförstådda. # Se licensen för det specifika språket som styr behörigheter och # begränsningar under licensen apiVersion: networking.k8s.io/v1 typ: Ingress metadata: namn: helloweb annotations: kubernetes.io/ingress.global-static-ip-name: helloweb -ip-etiketter: app: hello spec: defaultBackend: tjänst: namn: helloweb-backend-port: nummer: 8080apiVersion: v1-typ: Tjänstens metadata: namn: helloweb-backend-etiketter: app: hej spec: typ: NodePort-väljare: app: hello nivå: webbportar: - port: 8080 målport: 8080 De kubernetes.io/ingress.global-static-ip-name annotation anger namnet av den globala IP-adressresurs som ska associeras med HTTP(S)-belastningen Balanserare Tillämpa resursen på klustret: kubectl apply -f helloweb-ingress-static-ip.yamlOutput: ingress "helloweb"skapad tjänst "helloweb-backend"skapad Så här ser du reserv-IP-adressen som är kopplad till lastbalanseraren: kubectl få ingressOutput: NAMN VÄRDAR ADRESS PORTAR ÅLDER helloweb * 203.0.113.32 80 4m ## Besöker din reserverade statiska IP-adress För att verifiera att lastbalanseraren är korrekt konfigurerad kan du antingen använda en webbläsare för att besöka IP-adressen eller använda ringla: curl http203.0.113.32/Output: Hej världen! Värdnamn: helloweb-3766687455-8lvqv ## Konfigurera dina domännamnsposter Att ha webbläsare som frågar efter ditt domännamn, som t.ex exempel.com eller underdomän namn, som t.ex blog.example.com, peka på den statiska IP-adressen du reserverade, du måste uppdatera DNS-posterna (Domain Name Server) för ditt domännamn Du måste skapa en **A** (Adress) typ DNS-post för din domän eller underdomän namn och få dess värde konfigurerat med den reserverade IP-adressen DNS-poster för din domän hanteras av din namnserver. Din namnserver kan vara "registratorn"där du registrerade din domän, en DNS-tjänst som Cloud DNS eller en annan tredjepartsleverantör Om din namnserver är Cloud DNS: Följ Cloud DNS Quickstart guide för att konfigurera DNS En post för ditt domännamn med den reserverade IP-adressen för din applikation. Om din namnserver är en annan leverantör: Se din DNS-tjänsts dokumentation om hur du ställer in DNS A-poster för att konfigurera ditt domännamn. Om du väljer att använda Cloud DNS istället, se Migrera till Cloud DNS ## Besöker ditt domännamn För att verifiera att ditt domännamns DNS A-poster löser sig till den IP-adress du reserverade, besök ditt domännamn För att göra en DNS-fråga för ditt domännamns A-post, kör värd kommando: host example.comOutput: example.com har adressen 203.0.113.32 Vid det här laget kan du peka din webbläsare till ditt domännamn och besöka din webbplats! ## Städa För att undvika att belasta ditt Google Cloud-konto för resurserna som används i denna handledning, antingen ta bort projektet som innehåller resurserna eller behålla projektet och ta bort de enskilda resurserna Ta bort lastbalanseringsresurserna: kubectl radera ingress,service -l app=hej Släpp den reserverade statiska IP-adressen. Efter att lastbalanseraren har tagits bort är den oanvända men reserverade IP-adressen inte längre gratis och faktureras per prissättning för oanvänd IP-adress. Kör följande kommandon för att frigöra den statiska IP-resursen: Om du använde en tjänst: gcloud compute-adresser radera helloweb-ip --region us-central1 Om du använde en Ingress: gcloud compute-adresser radera helloweb-ip --global - Ta bort exempelapplikationen: kubectl delete -f helloweb-deployment.yaml Vänta tills lastbalanseraren har raderats genom att titta på resultatet av följande kommando. Utdata ska inte visa en vidarebefordranregel som innehåller "helloweb"i sitt namn: gcloud compute vidarebefordran-regler lista Ta bort behållarklustret: gcloud-behållarkluster tar bort domäntest ## Vad kommer härnäst Registrera ditt eget domännamn via Google Domains Utforska andra självstudier för Kubernetes Engine Utforska referensarkitekturer, diagram, självstudier och bästa metoder om Google Cloud. Ta en titt på vårt Cloud Architecture Center.