本教學課程適用於對下列主題感興趣的雲端架構師和作業管理員:將網頁應用程式部署至 Google Kubernetes Engine (GKE) 叢集,並透過 HTTPS 負載平衡器公開該應用程式。
建立 GKE 叢集
下列 Terraform 檔案會建立 GKE 叢集:
下列 Terraform 檔案會建立全域 IP 位址和 Cloud DNS 區域:
初始化 Terraform:
terraform init
查看基礎架構變更:
terraform plan
系統顯示提示訊息時,請輸入網域,例如
my-domain.net
。套用 Terraform 設定:
terraform apply --auto-approve
系統顯示提示訊息時,請輸入網域,例如
my-domain.net
。輸出結果會與下列內容相似:
Apply complete! Resources: 1 added, 0 changed, 0 destroyed. Outputs: cluster_name = "networking-cluster" region = "us-central1"
建立外部應用程式負載平衡器
下列資訊清單說明 ManagedCertificate、FrontendConfig、Deployment、Service 和 Ingress:
將
DOMAIN_NAME
替換為您的網域名稱,例如my-domain.net
。這個資訊清單具有下列屬性:
networking.gke.io/managed-certificates
:ManagedCertificate 的名稱。networking.gke.io/v1beta1.FrontendConfig
:FrontendConfig 資源的名稱。kubernetes.io/ingress.global-static-ip-name
:IP 位址的名稱。kubernetes.io/ingress.class
:指示 GKE Ingress 控制器建立外部應用程式負載平衡器。
將資訊清單套用至叢集:
kubectl apply -f kubernetes-manifests.yaml
確認 Ingress 是否已建立:
kubectl describe ingress frontend
輸出結果會與下列內容相似:
... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ADD 2m loadbalancer-controller default/frontend Normal CREATE 1m loadbalancer-controller ip: 203.0.113.2 ...
Ingress 可能需要幾分鐘才能完成佈建。
測試應用程式
檢查 SSL 憑證的狀態:
kubectl get managedcertificates.networking.gke.io networking-managed-cert
佈建 SSL 憑證最多可能需要 30 分鐘。下列輸出內容表示 SSL 憑證已準備就緒:
NAME AGE STATUS networking-managed-cert 28m Active
執行
curl
指令:curl -Lv https://DOMAIN_NAME
輸出結果會與下列內容相似:
* 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