如何通过GKE Ingress YAML将GCP证书管理器的证书映射到L7负载均衡器?
解决方案:通过GKE Ingress关联GCP证书管理器的证书
要将GCP证书管理器(而非GKE经典证书板块)中的证书映射到GKE Ingress创建的L7负载均衡器,不能使用原有的networking.gke.io/managed-certificates注解(该注解仅适配GKE原生的经典证书体系),需要借助FrontendConfig CRD实现关联,具体步骤如下:
1. 确认集群兼容性
- GKE集群版本需≥1.18(
FrontendConfig从该版本开始支持) - 确保集群已启用
HTTP Load Balancing插件(默认已启用,可通过gcloud container clusters describe [CLUSTER_NAME] --zone [ZONE]查看addonsConfig.httpLoadBalancing.enabled状态)
2. 创建FrontendConfig资源
该资源用于定义负载均衡器的前端配置,核心是关联GCP证书管理器的证书。替换示例中的项目ID、证书名称:
apiVersion: networking.gke.io/v1beta1 kind: FrontendConfig metadata: name: custom-frontend-config spec: sslCertificates: - certificateName: projects/[你的项目ID]/locations/global/certificates/[证书管理器中的证书名称]
若证书与集群同属一个项目,也可直接使用证书短名称,但推荐完整资源路径避免歧义。
3. 编写Ingress YAML并关联FrontendConfig
在Ingress配置中通过注解引用上述FrontendConfig,务必移除networking.gke.io/managed-certificates注解,示例如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: your-ingress annotations: networking.gke.io/frontend-config: custom-frontend-config spec: rules: - host: your-domain.example.com http: paths: - path: /* pathType: ImplementationSpecific backend: service: name: your-backend-service port: number: 80
关键注意事项
- 确保GCP证书管理器中的证书状态为
ACTIVE,否则负载均衡器无法完成关联 - 确认Ingress使用GKE默认的
gceIngress类(无需额外指定,默认生效) - 权限配置:需为GKE Ingress控制器的服务账号授予
roles/certificatemanager.certificateUser角色,允许其访问证书管理器的证书。可通过以下命令完成授权:
gcloud projects add-iam-policy-binding [你的项目ID] \ --member="serviceAccount:[集群项目编号]-compute@developer.gserviceaccount.com" \ --role="roles/certificatemanager.certificateUser"
内容的提问来源于stack exchange,提问作者rubio
相关产品推荐
相关产品推荐

