如何通过Traefik Ingress为GKE负载均衡器配置多个公网IP
在GKE的Traefik Ingress控制器前端为GCP负载均衡器添加多IP并通过IngressRouteTCP路由
步骤1:创建额外的静态公网IP
GCP临时IP可能随LB变动,必须使用静态IP。根据Traefik Service的区域属性选择创建:
- 区域性IP(适配单区域GKE集群):
gcloud compute addresses create traefik-extra-ip-1 --region=YOUR_REGION
- 全球性IP(适配多区域集群或全球访问场景):
gcloud compute addresses create traefik-extra-ip-1 --global
重复命令创建多个IP,记录每个IP的地址:
# 查看区域性IP gcloud compute addresses describe traefik-extra-ip-1 --region=YOUR_REGION --format='value(address)' # 查看全球性IP gcloud compute addresses describe traefik-extra-ip-1 --global --format='value(address)'
步骤2:定位Traefik对应的GCP Backend Service
Traefik的LoadBalancer类型Service会自动生成GCP Backend Service,通过以下方式查找:
- 查看Traefik Service的元数据:
kubectl get svc traefik-ingress-controller -o yaml
- 过滤查找关联的Backend Service:
gcloud compute backend-services list --filter="description~'traefik-ingress-controller'"
记录Backend Service的名称及区域/全球属性(需与Traefik Service一致)。
步骤3:创建新的Forwarding Rule绑定额外IP
为每个额外IP创建转发规则,将指定TCP端口的流量导向Traefik的Backend Service:
区域性转发规则(对应区域性IP和Backend Service)
gcloud compute forwarding-rules create traefik-tcp-rule-1 \ --region=YOUR_REGION \ --address=traefik-extra-ip-1 \ --ports=YOUR_TCP_PORT \ --backend-service=YOUR_BACKEND_SERVICE_NAME \ --backend-service-region=YOUR_REGION
全球性转发规则(对应全球性IP和Backend Service)
gcloud compute forwarding-rules create traefik-tcp-rule-1 \ --global \ --address=traefik-extra-ip-1 \ --ports=YOUR_TCP_PORT \ --backend-service=YOUR_BACKEND_SERVICE_NAME \ --backend-service-region=YOUR_REGION
如需暴露多端口,可使用--ports=PORT1,PORT2,或创建多条转发规则分别对应端口。
步骤4:配置Traefik的IngressRouteTCP实现IP路由
通过IngressRouteTCP的match规则匹配指定IP,将流量转发到对应后端服务:
apiVersion: traefik.containo.us/v1alpha1 kind: IngressRouteTCP metadata: name: tcp-service-route spec: entryPoints: - tcp # 需确保Traefik静态配置中已启用该entryPoint,对应监听端口 routes: - match: HostSNI(`*`) && ClientIP(`X.X.X.X/32`) # X.X.X.X为新增的静态IP services: - name: your-tcp-service port: YOUR_SERVICE_PORT
如需匹配多个IP,可扩展为ClientIP(X.X.X.X/32, Y.Y.Y.Y/32)。
关键注意事项
- 确保Traefik的静态配置(如ConfigMap或启动参数)中已监听转发规则指定的端口:
entryPoints: tcp: address: ":YOUR_TCP_PORT" - GCP转发规则的端口必须与Traefik entryPoint监听的端口一致,否则流量无法到达Traefik。
- 仅Traefik v2+支持IngressRouteTCP,需确保CRD已正确安装。
内容的提问来源于stack exchange,提问作者thevops
相关产品推荐
相关产品推荐

