无法将Google托管证书绑定到GKE Ingress负载均衡器
问题分析与解决方案
核心问题
你的Ingress配置同时混用了GKE托管Ingress和Nginx Ingress的标识,导致GKE托管证书无法被正确绑定:
- metadata中配置了
kubernetes.io/ingress.class: "gce"(指定使用GKE托管Ingress) - spec中却设置了
ingressClassName: nginx(实际生效的是Nginx Ingress控制器) - Nginx Ingress不支持
networking.gke.io/managed-certificates注解,因此托管证书无法关联到负载均衡器
修正后的配置
1. 原ManagedCertificate配置(无需修改)
apiVersion: networking.gke.io/v1 kind: ManagedCertificate metadata: name: managed-cert-ssl spec: domains: - apis.binarybunon.com
2. 修正Ingress配置(统一使用GKE托管Ingress)
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-srv annotations: kubernetes.io/ingress.global-static-ip-name: my-apis-zone networking.gke.io/managed-certificates: managed-cert-ssl # 如需正则路径,需关联FrontendConfig(见下方) networking.gke.io/v1beta1.FrontendConfig: frontend-config-with-regex spec: # GKE 1.21+版本推荐使用该字段替代旧类注解 # ingressClassName: gce rules: - host: apis.binarybunon.com http: paths: - pathType: ImplementationSpecific path: /api/user/* backend: service: name: customer-api-srv port: number: 5001 - pathType: ImplementationSpecific path: /api/administration/* backend: service: name: admin-api-srv port: number: 5000
若需要支持正则路径匹配,需额外创建FrontendConfig:
apiVersion: networking.gke.io/v1beta1 kind: FrontendConfig metadata: name: frontend-config-with-regex spec: redirectToHttps: enabled: true pathMatcher: regexMatch: true
操作步骤
- 若使用正则路径,先应用FrontendConfig:
kubectl apply -f frontend-config.yaml - 重新应用修正后的Ingress配置:
kubectl apply -f ingress-srv.yaml - 检查托管证书状态,等待其变为
ACTIVE(证书颁发通常需10-30分钟):kubectl describe managedcertificate managed-cert-ssl
关键验证点
- 确认域名
apis.binarybunon.com已正确解析到静态IPmy-apis-zone - 证书状态变为
ACTIVE后,负载均衡器会自动关联证书,此时访问https://apis.binarybunon.com验证SSL是否生效
内容的提问来源于stack exchange,提问作者Alamgir Ahamed saif
相关产品推荐
相关产品推荐

