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.
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 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