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.
Vorbereitung
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.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Enable the Google Kubernetes Engine, Cloud DNS APIs.
-
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Enable the Google Kubernetes Engine, Cloud DNS APIs.
- Sie müssen Inhaber des Domainnamens sein. Der Domainname darf maximal 63 Zeichen haben. Sie können Google Domains oder einen anderen Registrator verwenden.
Umgebung einrichten
In dieser Anleitung verwenden Sie Cloud Shell zum Verwalten von Ressourcen, die in Google Cloud gehostet werden. Die Software, die Sie für diese Anleitung benötigen, ist in Cloud Shell vorinstalliert, einschließlich Docker, kubectl
und der gcloud CLI.
Legen Sie Umgebungsvariablen fest:
PROJECT_ID=$(gcloud config get-value project) gcloud config set project $PROJECT_ID gcloud config set compute/region us-central1
Klonen Sie das Code-Repository:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.git
Wechseln Sie in das Arbeitsverzeichnis:
cd kubernetes-engine-samples/autopilot/networking-tutorial
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:
Initialisieren Sie Terraform:
terraform init
Rufen Sie die Infrastrukturänderungen auf:
terraform plan
Geben Sie bei entsprechender Aufforderung Ihre Domain ein, z. B.
my-domain.net
.Wenden Sie die Terraform-Konfiguration an:
terraform apply --auto-approve
Geben 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"
Externen Application Load Balancer erstellen
Das folgende Manifest beschreibt ManagedCertificate, FrontendConfig, Deployment, Service und Ingress:
Ersetzen Sie
DOMAIN_NAME
durch Ihren Domainnamen, z. B.my-domain.net
.Dieses Manifest hat folgende Attribute:
networking.gke.io/managed-certificates
ist der Name des ManagedCertificate.networking.gke.io/v1beta1.FrontendConfig
ist der Name der FrontendConfig-Ressource.kubernetes.io/ingress.global-static-ip-name
ist 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.yaml
Prüfen Sie, ob das Ingress erstellt wurde:
kubectl describe ingress frontend
Die 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.
App testen
Prüfen Sie den Status des SSL-Zertifikats:
kubectl get managedcertificates.networking.gke.io networking-managed-cert
Die 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 Active
Führen Sie einen
curl
-Befehl aus:curl -Lv https://DOMAIN_NAME
Die 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
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.
Projekt löschen
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Einzelne Ressourcen löschen
Löschen Sie die Kubernetes-Ressourcen:
kubectl delete -f kubernetes-manifests.yaml
Löschen Sie die Terraform-Ressourcen:
terraform destroy --auto-approve
Geben Sie bei entsprechender Aufforderung Ihre Domain ein, z. B.
my-domain.net
.