本教程适用于希望将 Web 应用部署到 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