You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Helm Chart部署中如何获取Ingress IP配置前后端通信

问题解答

查询Ingress IP地址的方法

执行kubectl get ingress不显示地址属于正常现象,GCP负载均衡器分配IP通常需要1~3分钟的初始化时间,刚部署完成时ADDRESS字段为空。可通过以下方式查询:

  • 等待资源初始化完成后,执行带宽输出参数的命令查看,ADDRESS列即为分配到的公网IP:
    kubectl get ingress -n <业务所在命名空间> -o wide
  • 直接提取Ingress资源的状态字段获取IP:
    kubectl get ingress <后端Ingress资源名> -n <业务所在命名空间> -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
  • 如果你使用的是自行部署的Nginx Ingress控制器,实际对外IP绑定在控制器的LoadBalancer类型Service上,可执行以下命令查询EXTERNAL-IP字段:
    kubectl get svc -n <Nginx Ingress控制器所在命名空间> | grep ingress-nginx-controller

自动配置后端访问地址的方案

方案1:集群内直接访问(优先推荐)

前后端同属一个GKE集群时,不需要经过公网Ingress绕转,直接使用Kubernetes集群内部DNS解析访问后端Service即可,无需等待Ingress IP分配,地址永久固定不会随部署变动:
BACKEND_URL: http://<后端Service名称>.<后端所在命名空间>.svc.cluster.local:8000
例如后端Service名为backend-service、部署在default命名空间时,配置值为http://backend-service.default.svc.cluster.local:8000。
该方案访问延迟最低,不消耗公网带宽,也不会产生额外的GCP负载均衡费用。
补充:使用Ingress暴露服务时,对应的后端Service不需要配置为LoadBalancer类型,改为ClusterIP类型即可,可避免额外创建公网负载均衡产生不必要的成本。

方案2:必须走公网Ingress访问时的自动获取方式

如果业务要求前端必须通过公网Ingress访问后端,且前后端通过同一个父Helm Chart管理,可通过Helm模板的lookup函数实时查询后端Ingress的IP,无需手动填写:

  1. 调整部署顺序,保证后端资源先部署、待Ingress IP分配完成后再部署前端,可通过Helm hook或helmfile的depends_on配置实现顺序控制
  2. 在前端Chart的Deployment环境变量模板中添加如下配置,安装/升级时Helm会自动从Kubernetes API查询对应Ingress的IP注入:
env:
  - name: BACKEND_URL
    value: {{ printf "http://%s:8000" (lookup "networking.k8s.io/v1" "Ingress" .Release.Namespace "<后端Ingress资源名>").status.loadBalancer.ingress[0].ip }}

内容的提问来源于stack exchange,提问作者Hamza Ince

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 10:09:17