Deze zelfstudie laat zien hoe u Google Kubernetes Engine (GKE) gebruikt om uw webtoepassing op internet beschikbaar te maken op een statisch extern IP-adres en hoe u een domeinnaam configureert die naar uw toepassing verwijst Deze zelfstudie gaat ervan uit dat u een geregistreerde domeinnaam bezit, zoals voorbeeld.com U kunt een domeinnaam registreren via Google Domains of een andere domeinregistreerder van uw keuze als je er geen hebt ## Doelstellingen Deze zelfstudie demonstreert de volgende stappen: ## Kosten In deze zelfstudie worden de volgende factureerbare componenten van Google Cloud gebruikt: Om een ​​kostenraming te genereren op basis van uw verwachte gebruik, gebruik de prijscalculator Wanneer u deze tutorial voltooit, kunt u verdere facturering voorkomen door de resources die u hebt gemaakt te verwijderen. Zie Opschonen voor meer informatie ## Voordat u begintVoer de volgende stappen uit om de Kubernetes Engine API in te schakelen: - Bezoek de Kubernetes Engine-pagina in de Google Cloud-console - Maak of selecteer een project - Wacht tot de API en gerelateerde services zijn ingeschakeld. Dit kan enkele minuten duren - Zorg ervoor dat facturering is ingeschakeld voor uw Cloud-project. Lees hoe u kunt controleren of facturering is ingeschakeld voor een project Installeer de volgende opdrachtregelprogramma's die in deze zelfstudie worden gebruikt: - gcloud wordt gebruikt om Kubernetes Engine-clusters te maken en te verwijderen gcloud is opgenomen in de gcloudCLI - kubectlis werd gebruikt om Kubernetes te beheren, het clusterorkestratiesysteem dat wordt gebruikt door Kubernetes Engine. U kunt installeren kubectluseren gcloud: gcloud-componenten installeren kubectl Kloon de voorbeeldcode van GitHub: git clone httpsgithub.com/GoogleCloudPlatform/kubernetes-engine-samples cd kubernetes-engine-samples/hello-app/manifests Standaardinstellingen instellen voor de Om tijd te besparen bij het typen van uw project-ID en Compute Engine-zoneopties in de gcloud-opdrachtregelprogramma gcloudcommand-line tool, kunt u de standaardinstellingen instellen: gcloud-configuratiesetproject project-idgcloud configuratieset compute/zone compute-zone Maak een cluster Maak een containercluster met de naam domeintest om uw webtoepassing te implementeren: gcloud-containerclusters maken domeintest ## Uw webtoepassing implementeren Het volgende manifest beschrijft een implementatie die een voorbeeld van een containerimage van een webtoepassing uitvoert: # Copyright 2021 Google LLC # # Gelicentieerd onder de Apache-licentie, versie 2.0 (de "licentie # u mag dit bestand alleen gebruiken in overeenstemming met de licentie. # U kunt een kopie van de licentie verkrijgen op # # httpwww.apache.org /licenses/LICENSE-2.0 # # Tenzij vereist door de toepasselijke wetgeving of schriftelijk overeengekomen, # wordt software gedistribueerd onder de Licentie # gedistribueerd op "AS IS"-BASIS, # ZONDER ENIGE VORM VAN GARANTIE OF VOORWAARDEN, expliciet of impliciet. Zie de Licentie voor de specifieke taal die machtigingen en # beperkingen onder de Licentie regelt. apiVersion: apps/v1 soort: Implementatie metadata: naam: helloweb labels: app: hello spec: selector: matchLabels: app: hello tier: websjabloon: metadata: labels: app: hallo laag: webspecificatie: containers: - naam: hello-app afbeelding: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 poorten: - containerPort: 8080 bronnen: verzoeken : processor: 200m Voer de volgende opdracht uit om de implementatie te maken: kubectl apply -f helloweb-deployment.yaml ## Je applicatie blootleggen U kunt uw app op GKE beschikbaar stellen op een van de volgende manieren: Gebruik een service die een TCP-netwerkloadbalancer maakt die werkt met regionale IP-adressen. Gebruik een Ingress, die een HTTP(S) Load Balancer maakt en globale IP-adressen ondersteunt Raadpleeg voor meer informatie over de voor- en nadelen van elke methode HTTP(S) Load Balancing instellen met Ingress Gebruik een dienst Om ervoor te zorgen dat uw toepassing een statisch openbaar IP-adres heeft, moet u een statisch IP-adres reserveren Als u ervoor kiest om uw applicatie beschikbaar te stellen met behulp van een Service, moet u een regionaal IP-adres aanmaken. Globale IP-adressen werken alleen met het brontype Ingress, zoals uitgelegd in de volgende sectie Om een ​​Service te gebruiken, maakt u een statisch IP-adres met de naam helloweb-ip in de regio us-central1: gcloud gcloud rekenadressen create helloweb-ip --region us-central1 Voer de volgende opdracht uit om het statische IP-adres te vinden dat u hebt gemaakt: gcloud rekenadressen beschrijven helloweb-ip --region us-central1Output: adres: 203.0.113.32 .. Config-connector **Opmerking Deze stap vereist Config-connector. Volg de Installatie instructies om Config Connector op uw cluster te installeren apiVersion: compute.cnrm.cloud.google.com/v1beta1 soort: ComputeAddress metadata: naam: helloweb-ip spec: locatie: us-central1 kubectl apply -f compute-address-regional.yaml Voer de volgende opdracht uit om het statische IP-adres te vinden: kubectl krijg computeaddress helloweb-ip -o jsonpathspec.address}'Het volgende manifest beschrijft een service van het type LoadBalancer, waarmee een netwerkloadbalancer wordt gemaakt om pods met een openbaar IP-adres weer te geven Vervangen `UW.IP.ADRES.HIER` met het statische IP-adres: # Copyright 2021 Google LLC # # Gelicentieerd onder de Apache-licentie, versie 2.0 (de "licentie # u mag dit bestand alleen gebruiken in overeenstemming met de licentie. # U kunt een kopie van de licentie verkrijgen op # # httpwww.apache.org /licenses/LICENSE-2.0 # # Tenzij vereist door de toepasselijke wetgeving of schriftelijk overeengekomen # wordt software gedistribueerd onder de licentie # # ZONDER ENIGE VORM VAN GARANTIE OF VOORWAARDEN, expliciet of impliciet. Zie de Licentie voor de specifieke taal die machtigingen en # beperkingen onder de Licentie regelt apiVersion: v1 soort: Service metadata: name: helloweb labels: app: hello spec: selector: app: hello tier: web ports: - port: 80 targetPort: 8080 type: LoadBalancer loadBalancerIP: "UW.IP.ADRES.HIER"Maak vervolgens de service: kubectl apply -f helloweb-service-static-ip.yaml Om het gereserveerde IP-adres te zien dat is gekoppeld aan de load balancer: kubectl service ophalenUitvoer: NAAM CLUSTER-IP EXTERN IP-POORT(EN) LEEFTIJD helloweb 10.31.254.176 203.0.113.32 80:30690/TCP 54s Gebruik een Ingress Als u ervoor kiest om uw toepassing bloot te stellen met behulp van een Ingress, die een HTTP(S) Load Balancer maakt, moet u een globaal statisch IP-adres reserveren. Regionale IP-adressen werken niet met Ingress Raadpleeg de zelfstudie HTTP(S) Load Balancing instellen met Ingress voor meer informatie over het gebruik van Ingress om uw toepassingen op het internet bloot te stellen Om een ​​globaal statisch IP-adres met de naam helloweb-ip: gcloud gcloud rekenadressen maken helloweb-ip --global Om het statische IP-adres te vinden dat u hebt gemaakt: gcloud rekenadressen beschrijven helloweb-ip --globalOutput: adres: 203.0.113.32 .. Config-connector **Opmerking Deze stap vereist Config-connector. Volg de Installatie instructies om Config Connector op uw cluster te installeren apiVersion: compute.cnrm.cloud.google.com/v1beta1 soort: ComputeAddress metadata: naam: helloweb-ip spec: locatie: wereldwijd kubectl apply -f compute-address-global.yaml Het volgende manifest beschrijft een Ingress die een webtoepassing is op een statisch IP-adres met twee bronnen: - EEN Servicemet typ:NodePort - Een Ingress geconfigureerd met de servicenaam en statische IP-annotatie # Copyright 2021 Google LLC # # Gelicentieerd onder de Apache-licentie, versie 2.0 (de "licentie # u mag dit bestand alleen gebruiken in overeenstemming met de licentie. # U kunt een kopie van de licentie verkrijgen op # # httpwww.apache.org /licenses/LICENSE-2.0 # # Tenzij vereist door de toepasselijke wetgeving of schriftelijk overeengekomen # wordt software gedistribueerd onder de licentie # # ZONDER ENIGE VORM VAN GARANTIE OF VOORWAARDEN, expliciet of impliciet. Zie de Licentie voor de specifieke taal die machtigingen en # beperkingen onder de Licentie regelt apiVersion: networking.k8s.io/v1 type: Ingress metadata: name: helloweb annotations: kubernetes.io/ingress.global-static-ip-name: helloweb -ip labels: app: hallo spec: defaultBackend: service: naam: helloweb-backend poort: nummer: 8080apiVersion: v1 soort: Service metadata: naam: helloweb-backend labels: app: hallo spec: type: NodePort selector: app: hallo laag: webpoorten: - poort: 8080 doelpoort: 8080 De kubernetes.io/ingress.global-static-ip-name annotatie specificeert de naam van de globale IP-adresbron die moet worden gekoppeld aan de HTTP(S) Load Balancer Pas de resource toe op het cluster: kubectl apply -f helloweb-ingress-static-ip.yamlOutput: ingress "helloweb"gemaakt service "helloweb-backend"gemaakt Om het gereserveerde IP-adres te zien dat is gekoppeld aan de load balancer: kubectl krijgt ingangsuitgang: NAAM HOSTS ADRES HAVENS LEEFTIJD helloweb * 203.0.113.32 80 4m ## Uw gereserveerde statische IP-adres bezoeken Om te controleren of de load balancer correct is geconfigureerd, kunt u een webbrowser om het IP-adres te bezoeken of te gebruiken Krul: krul http203.0.113.32/Uitvoer: Hallo Wereld! Hostnaam: helloweb-3766687455-8lvqv ## Uw domeinnaamrecords configureren Om browsers uw domeinnaam te laten opvragen, zoals voorbeeld.com of subdomein naam, zoals blog.example.com, wijs naar het statische IP-adres dat je hebt gereserveerd, u moet de DNS-records (Domain Name Server) van uw domeinnaam bijwerken U moet een **A** (Adres) type DNS-record voor uw domein of subdomein naam en laat de waarde ervan configureren met het gereserveerde IP-adres DNS-records van je domein worden beheerd door je nameserver. Uw naamserver kan de "registrar"zijn waar u uw domein heeft geregistreerd, een DNS-service zoals Cloud DNS of een andere externe provider Als uw naamserver Cloud DNS is: volg de Cloud DNS-snelstartgids om DNS A-record voor uw domeinnaam te configureren met het gereserveerde IP-adres van uw applicatie. Als uw nameserver een andere provider is:Raadpleeg de documentatie van uw DNS-service over het instellen van DNS A-records om uw domeinnaam te configureren. Als u ervoor kiest om in plaats daarvan Cloud DNS te gebruiken, raadpleegt u Migreren naar Cloud DNS ## Uw domeinnaam bezoeken Ga naar je domeinnaam om te controleren of de DNS A-records van je domeinnaam verwijzen naar het IP-adres dat je hebt gereserveerd Om een ​​DNS-query te maken voor het A-record van uw domeinnaam, voert u het gastheer opdracht: host voorbeeld.comUitvoer: voorbeeld.com heeft adres 203.0.113.32 Op dit punt kunt u uw webbrowser naar uw domeinnaam verwijzen en uw website bezoeken! ## Schoonmaken Om te voorkomen dat er kosten in rekening worden gebracht voor uw Google Cloud-account voor de bronnen die in deze zelfstudie worden gebruikt, verwijdert u het project dat de bronnen bevat, of behoudt u het project en verwijdert u de afzonderlijke bronnen Verwijder de load balancing-resources: kubectl delete ingang, service -l app=hallo Geef het gereserveerde statische IP-adres vrij. Nadat de load balancer is verwijderd, is het ongebruikte maar gereserveerde IP-adres niet langer gratis en wordt het gefactureerd per ongebruikt IP-adres. Voer de volgende opdrachten uit om de statische IP-bron vrij te geven: Als je een Dienst hebt gebruikt: gcloud rekenadressen delete helloweb-ip --region us-central1 Als je een Ingress hebt gebruikt: gcloud rekenadressen delete helloweb-ip --global - Verwijder de voorbeeldtoepassing: kubectl delete -f helloweb-deployment.yaml Wacht tot de load balancer is verwijderd door de uitvoer van de volgende opdracht te bekijken. De uitvoer zou geen doorstuurregel moeten tonen die "helloweb"in zijn naam bevat: gcloud compute lijst met doorstuurregels Verwijder het containercluster: gcloud-containerclusters verwijderen domeintest ## Wat is het volgende Registreer uw eigen domeinnaam via Google Domains Ontdek andere Kubernetes Engine-tutorials Verken referentie-architecturen, diagrammen, tutorials en best practices over Google Cloud. Neem een ​​kijkje in ons Cloud Architecture Center.