Diese Anleitung richtet sich an Cloud-Architekten und Betriebsadministratoren, die eine Webanwendung in einem GKE-Cluster (Google Kubernetes Engine) bereitstellen und mit einem HTTPS-Load-Balancer verfügbar machen möchten.
Ziele
In dieser Anleitung erhalten Sie Informationen zu folgenden Themen:
- einen GKE-Cluster installieren
- Erstellen Sie eine globale IP-Adresse und eine Cloud DNS-Zone mit Terraform.
- Konfigurieren Sie das HTTPS-Load-Balancing.
- Stellen Sie eine Beispielwebanwendung bereit.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Hinweise
Projekt einrichten
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
Roles required to create a project
To create a project, you need the Project Creator role (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. -
Verify that billing is enabled for your Google Cloud project.
-
Enable the Google Kubernetes Engine, Cloud DNS APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
Roles required to create a project
To create a project, you need the Project Creator role (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. -
Verify that billing is enabled for your Google Cloud project.
-
Enable the Google Kubernetes Engine, Cloud DNS APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - Sie müssen Inhaber des Domainnamens sein. Der Domainname darf maximal 63 Zeichen haben. Sie können Google Domains oder einen anderen Registrator verwenden.
Legen Sie Umgebungsvariablen fest:
PROJECT_ID=$(gcloud config get-value project) gcloud config set project $PROJECT_ID gcloud config set compute/region us-central1Klonen Sie das Code-Repository:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.gitWechseln Sie in das Arbeitsverzeichnis:
cd kubernetes-engine-samples/autopilot/networking-tutorialInitialisieren Sie Terraform:
terraform initRufen Sie die Infrastrukturänderungen auf:
terraform planGeben Sie bei entsprechender Aufforderung Ihre Domain ein, z. B.
my-domain.net.Wenden Sie die Terraform-Konfiguration an:
terraform apply --auto-approveGeben Sie bei entsprechender Aufforderung Ihre Domain ein, z. B.
my-domain.net.Die Ausgabe sieht in etwa so aus:
Apply complete! Resources: 1 added, 0 changed, 0 destroyed. Outputs: cluster_name = "networking-cluster" region = "us-central1"Das folgende Manifest beschreibt ManagedCertificate, FrontendConfig, Deployment, Service und Ingress:
Ersetzen Sie
DOMAIN_NAMEdurch Ihren Domainnamen, z. B.my-domain.net.Dieses Manifest hat folgende Attribute:
networking.gke.io/managed-certificatesist der Name des ManagedCertificate.networking.gke.io/v1beta1.FrontendConfigist der Name der FrontendConfig-Ressource.kubernetes.io/ingress.global-static-ip-nameist der Name der IP-Adresse.kubernetes.io/ingress.class: weist den GKE-Ingress-Controller an, einen externen Anwendungs-Load-Balancer zu erstellen.
Wenden Sie das Manifest auf Ihren Cluster an:
kubectl apply -f kubernetes-manifests.yamlPrüfen Sie, ob das Ingress erstellt wurde:
kubectl describe ingress frontendDie Ausgabe sieht in etwa so aus:
... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ADD 2m loadbalancer-controller default/frontend Normal CREATE 1m loadbalancer-controller ip: 203.0.113.2 ...Es kann einige Minuten dauern, bis Ingress bereitgestellt wird.
Prüfen Sie den Status des SSL-Zertifikats:
kubectl get managedcertificates.networking.gke.io networking-managed-certDie Bereitstellung des SSL-Zertifikats kann bis zu 30 Minuten dauern. Die folgende Ausgabe zeigt an, dass das SSL-Zertifikat bereit ist:
NAME AGE STATUS networking-managed-cert 28m ActiveFühren Sie einen
curl-Befehl aus:curl -Lv https://DOMAIN_NAMEDie Ausgabe sieht in etwa so aus:
* Trying 34.160.115.33:443... * Connected to DOMAIN_NAME (34.160.115.33) port 443 (#0) ... * TLSv1.3 (IN), TLS handshake, Certificate (11): ... * Server certificate: * subject: CN=DOMAIN_NAME ... > Host: DOMAIN_NAME- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Löschen Sie die Kubernetes-Ressourcen:
kubectl delete -f kubernetes-manifests.yamlLöschen Sie die Terraform-Ressourcen:
terraform destroy --auto-approveGeben Sie bei entsprechender Aufforderung Ihre Domain ein, z. B.
my-domain.net.
Umgebung einrichten
In dieser Anleitung verwenden Sie Cloud Shell zum Verwalten von Ressourcen, die inGoogle Cloudgehostet werden. Die Software, die Sie für diese Anleitung benötigen, ist in Cloud Shell vorinstalliert, einschließlich Terraform, kubectl und der gcloud CLI.
GKE-Cluster erstellen
Mit der folgenden Terraform-Datei wird ein GKE-Cluster erstellt:
Die folgende Terraform-Datei erstellt eine globale IP-Adresse und eine Cloud DNS-Zone:
Externen Application Load Balancer erstellen
App testen
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.