如何在GCP的ingress.yaml中配置全局负载均衡器而非默认传统款
解决GKE Ingress使用Global HTTP(S) Load Balancer的方法
要在GKE上部署Ingress时使用Global HTTP(S) Load Balancer而非Classic版本,核心是启用Network Endpoint Groups (NEG)——这是触发GKE创建Global LB的关键条件。你只需在现有Ingress配置中添加一个核心注解,并调整部分注解的版本格式即可:
修改后的Ingress配置
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress annotations: ingress.gcp.kubernetes.io/pre-shared-cert: project-stage kubernetes.io/ingress.global-static-ip-name: project-ip kubernetes.io/ingress.allow-http: "false" networking.gke.io/frontend-config: lb-http-to-https # 替换原v1beta1版本注解,使用当前推荐格式 networking.gke.io/use-neg: "true" # 核心注解:启用NEG,自动创建Global HTTP(S) Load Balancer spec: defaultBackend: service: name: project-service port: number: 80 rules: - host: your-domain.com # 替换为你的实际域名 http: paths: - backend: service: name: project-service port: number: 80 path: /* pathType: ImplementationSpecific
关键注解说明
networking.gke.io/use-neg: "true":该注解会让GKE为Ingress关联的后端服务创建NEG,替代传统的NodePort暴露方式。使用NEG时,GKE会自动创建Global HTTP(S) Load Balancer,而非Classic版本。networking.gke.io/frontend-config:替换原有的networking.gke.io/v1beta1.FrontendConfig,这是当前GKE推荐的FrontendConfig引用格式,避免版本兼容性问题。
验证方法
部署修改后的Ingress后,可通过以下方式确认配置生效:
- 执行
kubectl describe ingress ingress查看事件日志,确认NEG已创建并成功关联 - 登录GCP控制台,进入「负载均衡」页面,查看创建的负载均衡器类型为「Global HTTP(S) Load Balancer」
内容的提问来源于stack exchange,提问作者terraform-ftw
相关产品推荐
相关产品推荐

