Dieses Tutorial zeigt, wie Sie mit Google Kubernetes Engine (GKE) Ihre Webanwendung über eine statische externe IP-Adresse im Internet verfügbar machen und einen Domänennamen konfigurieren, der auf Ihre Anwendung verweist Dieses Tutorial geht davon aus, dass Sie einen registrierten Domainnamen besitzen, wie z beispiel.com Sie können einen Domainnamen über Google registrieren Domains oder einem anderen Domain-Registrar von Ihnen Wahl, wenn Sie keine haben ## Ziele Dieses Tutorial zeigt die folgenden Schritte: ## Kosten In dieser Anleitung werden die folgenden kostenpflichtigen Komponenten von Google Cloud verwendet: Um einen Kostenvoranschlag basierend auf Ihrer voraussichtlichen Nutzung zu erstellen, nutzen Sie den Preisrechner Wenn Sie dieses Lernprogramm abgeschlossen haben, können Sie eine fortgesetzte Abrechnung vermeiden, indem Sie die von Ihnen erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Aufräumen ## Bevor Sie beginnenFühren Sie die folgenden Schritte aus, um die Kubernetes Engine API zu aktivieren: - Besuchen Sie die Kubernetes Engine-Seite in der Google Cloud-Konsole - Erstellen oder wählen Sie ein Projekt aus - Warten Sie, bis die API und die zugehörigen Dienste aktiviert sind. Dies kann einige Minuten dauern - Stellen Sie sicher, dass die Abrechnung für Ihr Cloud-Projekt aktiviert ist. Erfahren Sie, wie Sie prüfen, ob die Abrechnung für ein Projekt aktiviert ist Installieren Sie die folgenden Befehlszeilentools, die in diesem Tutorial verwendet werden: - gcloudwird zum Erstellen und Löschen von Kubernetes Engine-Clustern verwendet gcloud ist in der enthalten gcloudCLI - kubectlis zur Verwaltung von Kubernetes, dem von Kubernetes Engine verwendeten Cluster-Orchestrierungssystem. Sie können installieren kubectlusing gcloud: gcloud-Komponenten installieren kubectl Klonen Sie den Beispielcode von GitHub: Git-Klon httpsgithub.com/GoogleCloudPlatform/kubernetes-engine-samples cd kubernetes-engine-samples/hello-app/manifests Legen Sie die Standardeinstellungen für die fest Um Zeit zu sparen, geben Sie Ihre Projekt-ID ein und Compute Engine-Zonenoptionen in der gcloud-Befehlszeilentool gcloud-Befehlszeilentool können Sie die Standardeinstellungen festlegen: gcloud config set-Projekt project-idgcloud config set compute/zone compute-zone Erstellen Sie einen Cluster Erstellen Sie einen Container-Cluster mit dem Namen domain-test zum Bereitstellen Ihrer Webanwendung: gcloud-Container-Cluster erstellen domain-test ## Bereitstellen Ihrer Webanwendung Das folgende Manifest beschreibt eine Bereitstellung, die ein Beispiel-Webanwendungs-Container-Image ausführt: # Copyright 2021 Google LLC # # Lizenziert unter der Apache-Lizenz, Version 2.0 (die "Lizenz # Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. # Eine Kopie der Lizenz erhalten Sie unter # # httpwww.apache.org /licenses/LICENSE-2.0 # # Sofern nicht durch geltendes Recht vorgeschrieben oder schriftlich vereinbart, wird Software #, die unter der Lizenz vertrieben wird, „WIE BESEHEN“, # ​​OHNE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNGEN ODER BEDINGUNGEN JEGLICHER ART vertrieben. # Siehe die Lizenz für die spezifische Sprache, die Berechtigungen und # Einschränkungen unter der Lizenz regelt. Labels: App: Hallo Tier: Webspezifikation: Container: - Name: Hallo-App-Image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 Ports: - ContainerPort: 8080 Ressourcen: Anfragen : CPU: 200m Führen Sie den folgenden Befehl aus, um die Bereitstellung zu erstellen: kubectl apply -f helloweb-deployment.yaml ## Offenlegung Ihrer Anwendung Sie können Ihre Anwendung mit einer der folgenden Methoden in GKE verfügbar machen: Verwenden Sie einen Dienst, der einen TCP-Netzwerk-Load-Balancer erstellt, der mit regionalen IP-Adressen arbeitet. Verwenden Sie einen Ingress, der einen HTTP(S)-Load-Balancer erstellt und globale IP-Adressen unterstützt Weitere Informationen zu den Vor- und Nachteilen der einzelnen Methoden finden Sie unter HTTP(S)-Load-Balancing mit Ingress einrichten Verwenden Sie einen Dienst Um sicherzustellen, dass Ihre Anwendung eine statische öffentliche IP-Adresse hat, müssen Sie eine statische IP-Adresse reservieren Wenn Sie Ihre Anwendung über einen Dienst bereitstellen möchten, müssen Sie eine regionale IP-Adresse erstellen. Globale IP-Adressen funktionieren nur mit dem Ingress-Ressourcentyp, wie im nächsten Abschnitt erläutert Um einen Dienst zu verwenden, erstellen Sie eine statische IP-Adresse mit dem Namen helloweb-ip in der Region us-central1: gcloud gcloud compute-Adressen erstellen helloweb-ip --region us-central1 Führen Sie den folgenden Befehl aus, um die von Ihnen erstellte statische IP-Adresse zu finden: gcloud compute-Adressen beschreiben helloweb-ip --region us-central1Output: Adresse: 203.0.113.32 .. Konfig-Connector **Hinweis Dieser Schritt erfordert Konfig-Connector. Folge dem Installationsanleitung um Config Connector auf Ihrem Cluster zu installieren apiVersion: compute.cnrm.cloud.google.com/v1beta1 Art: ComputeAddress-Metadaten: Name: helloweb-ip-Spezifikation: Standort: us-central1 kubectl apply -f compute-address-regional.yamlUm die statische IP-Adresse zu finden, führen Sie den folgenden Befehl aus: kubectl erhalte Computeadresse helloweb-ip -o jsonpathspec.address}'Das folgende Manifest beschreibt einen Dienst vom Typ LoadBalancer, der einen Netzwerk-Load-Balancer erstellt, um Pods mit einer öffentlichen IP-Adresse verfügbar zu machen Ersetzen `YOUR.IP.ADDRESS.HERE` mit der statischen IP-Adresse: # Copyright 2021 Google LLC # # Lizenziert unter der Apache-Lizenz, Version 2.0 (die "Lizenz # Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. # Eine Kopie der Lizenz erhalten Sie unter # # httpwww.apache.org /licenses/LICENSE-2.0 # # Sofern nicht durch geltendes Recht vorgeschrieben oder schriftlich vereinbart, wird Software #, die unter der Lizenz vertrieben wird, „WIE BESEHEN“, # ​​OHNE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNGEN ODER BEDINGUNGEN JEGLICHER ART vertrieben. # Siehe die Lizenz für die spezifische Sprache, die Berechtigungen und # Einschränkungen unter der Lizenz regelt. 8080 Typ: LoadBalancer loadBalancerIP: "IHRE.IP.ADRESSE.HIER"Erstellen Sie dann den Dienst: kubectl apply -f helloweb-service-static-ip.yaml So zeigen Sie die dem Load Balancer zugeordnete reservierte IP-Adresse an: kubectl get serviceOutput: NAME CLUSTER-IP EXTERNAL-IP PORT(S) ALTER helloweb 10.31.254.176 203.0.113.32 80:30690/TCP 54s Verwenden Sie einen Ingress Wenn Sie Ihre Anwendung mithilfe eines Ingress verfügbar machen, der einen HTTP(S)-Load-Balancer erstellt, müssen Sie eine globale statische IP-Adresse reservieren. Regionale IP-Adressen funktionieren nicht mit Ingress Weitere Informationen zur Verwendung von Ingress zur Bereitstellung Ihrer Anwendungen im Internet finden Sie im Tutorial zum Einrichten von HTTP(S)-Load-Balancing mit Ingress So erstellen Sie eine globale statische IP-Adresse mit dem Namen helloweb-ip: gcloud gcloud compute-Adressen erstellen helloweb-ip --global So finden Sie die von Ihnen erstellte statische IP-Adresse: gcloud compute-Adressen beschreiben helloweb-ip --globalOutput: Adresse: 203.0.113.32 .. Konfig-Connector **Hinweis Dieser Schritt erfordert Konfig-Connector. Folge dem Installationsanleitung um Config Connector auf Ihrem Cluster zu installieren apiVersion: compute.cnrm.cloud.google.com/v1beta1 kind: ComputeAddress metadata: name: helloweb-ip spec: location: global kubectl apply -f compute-address-global.yaml Das folgende Manifest beschreibt ein Ingress, das eine Webanwendung auf einer statischen IP mit zwei Ressourcen ist: - EIN Servicemit Typ: NodePort - Ein Ingress mit dem Dienstnamen und der statischen IP-Anmerkung konfiguriert # Copyright 2021 Google LLC # # Lizenziert unter der Apache-Lizenz, Version 2.0 (die "Lizenz # Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. # Eine Kopie der Lizenz erhalten Sie unter # # httpwww.apache.org /licenses/LICENSE-2.0 # # Sofern nicht durch geltendes Recht vorgeschrieben oder schriftlich vereinbart, wird Software #, die unter der Lizenz vertrieben wird, „WIE BESEHEN“, # ​​OHNE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNGEN ODER BEDINGUNGEN JEGLICHER ART vertrieben. # Siehe die Lizenz für die spezifische Sprache, die Berechtigungen und # Einschränkungen unter der Lizenz regelt -ip Labels: App: Hallo Spezifikation: Standard-Backend: Dienst: Name: HelloWeb-Backend-Port: Nummer: 8080apiVersion: v1 Art: Service-Metadaten: Name: HelloWeb-Backend-Labels: App: Hallo Spezifikation: Typ: NodePort-Selektor: App: Hallo Tier: Webports: - Port: 8080 Zielport: 8080 Das Die Annotation kubernetes.io/ingress.global-static-ip-name gibt den Namen an der globalen IP-Adressressource, die dem HTTP(S)-Laden zugeordnet werden soll Ausgleicher Wenden Sie die Ressource auf den Cluster an: kubectl apply -f helloweb-ingress-static-ip.yamlAusgabe: Eingang "helloweb"erstellt Service "helloweb-backend"erstellt So zeigen Sie die mit dem Load Balancer verknüpfte Reserve-IP-Adresse an: kubectl get ingressOutput: NAME HOSTS ADRESSE PORTS ALTER helloweb * 203.0.113.32 80 4m ## Besuch Ihrer reservierten statischen IP-Adresse Um zu überprüfen, ob der Load Balancer richtig konfiguriert ist, können Sie entweder a Webbrowser, um die IP-Adresse zu besuchen oder zu verwenden locken: curl http203.0.113.32/Ausgabe: Hallo Welt! Hostname: helloweb-3766687455-8lvqv ## Konfigurieren Ihrer Domainnamen-Einträge Damit Browser Ihren Domainnamen abfragen, wie z example.com oder Subdomain Namen, wie z blog.example.com, verweisen auf die statische IP-Adresse, die Sie reserviert haben, Sie müssen die DNS-Einträge (Domain Name Server) Ihres Domänennamens aktualisieren Sie müssen eine erstellen DNS-Eintrag vom Typ **A** (Adresse) für Ihre Domain oder Subdomain Name und lassen Sie seinen Wert mit der reservierten IP-Adresse konfigurieren DNS-Einträge Ihrer Domain werden von Ihrem Nameserver verwaltet. Ihr Nameserver kann der „Registrar“, bei dem Sie Ihre Domain registriert haben, ein DNS-Dienst wie Cloud DNS oder ein anderer Drittanbieter sein Wenn Ihr Nameserver Cloud DNS ist: Folgen Sie der Cloud DNS-Schnellstartanleitung, um den DNS-A-Eintrag für Ihren Domainnamen mit der reservierten IP-Adresse Ihrer Anwendung zu konfigurieren. Wenn Ihr Nameserver ein anderer Anbieter ist: Lesen Sie die Dokumentation Ihres DNS-Dienstes zum Festlegen von DNS-A-Einträgen, um Ihren Domänennamen zu konfigurieren. Wenn Sie sich stattdessen für die Verwendung von Cloud DNS entscheiden, finden Sie weitere Informationen unter Migrieren zu Cloud DNS ## Besuch Ihres Domainnamens Um zu überprüfen, ob die DNS-A-Einträge Ihres Domainnamens in die von Ihnen reservierte IP-Adresse aufgelöst werden, besuchen Sie Ihren Domainnamen Um eine DNS-Abfrage für den A-Eintrag Ihres Domainnamens durchzuführen, führen Sie die Gastgeber Befehl: host example.comAusgabe: example.com hat die Adresse 203.0.113.32 An diesem Punkt können Sie Ihren Webbrowser auf Ihren Domainnamen verweisen und Ihre Website besuchen! ## Aufräumen Um Gebühren für Ihr Google Cloud-Konto für die in dieser Anleitung verwendeten Ressourcen zu vermeiden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder behalten Sie das Projekt bei und löschen Sie die einzelnen Ressourcen Löschen Sie die Load-Balancing-Ressourcen: kubectl delete ingress, service -l app=hello Geben Sie die reservierte statische IP frei. Nachdem der Load Balancer gelöscht wurde, ist die ungenutzte, aber reservierte IP-Adresse nicht mehr kostenlos und wird zum Preis der ungenutzten IP-Adresse abgerechnet. Führen Sie die folgenden Befehle aus, um die statische IP-Ressource freizugeben: Wenn Sie einen Dienst verwendet haben: gcloud compute-Adressen löschen helloweb-ip --region us-central1 Wenn Sie ein Ingress verwendet haben: gcloud compute-Adressen löschen helloweb-ip --global - Löschen Sie die Beispielanwendung: kubectl delete -f helloweb-deployment.yaml Warten Sie, bis der Load Balancer gelöscht ist, indem Sie die Ausgabe des folgenden Befehls beobachten. Die Ausgabe sollte keine Weiterleitungsregel zeigen, die "helloweb"in ihrem Namen enthält: gcloud compute forwarding-rules list Löschen Sie den Container-Cluster: gcloud-Container-Cluster löschen domain-test ## Was kommt als nächstes Registrieren Sie Ihren eigenen Domainnamen über Google Domains Erkunden Sie andere Kubernetes Engine-Tutorials Erkunden Sie Referenzarchitekturen, Diagramme, Tutorials und Best Practices zu Google Cloud. Werfen Sie einen Blick in unser Cloud Architecture Center.