Kubernetes Nginx Ingress下集群服务访问IP白名单外部API被拒咨询
问题核心原因
你加白的Ingress IP是完全错误的,当前Ingress配置和你遇到的出站访问被拒问题没有关联。
为什么Ingress IP没用
Ingress是K8s集群的入站流量入口,仅负责处理外部客户端主动访问集群内部服务的流量,你集群内部的site-api服务主动发起对外请求(访问第三方外部API)的流量,走的是集群节点的公网出口链路,和Ingress的IP完全无关。
正确的解决方案
- 首先获取集群服务对外访问的真实出口IP:进入site-api对应的Pod内部,执行命令
curl ifconfig.me,返回的IP就是你服务对外发起请求的真实源IP,将该IP添加到外部API的白名单即可恢复访问。 - 如果你使用的是AKS集群(从配置里的
aks-ingress-tls密钥可以判断),如果集群配置了公网NAT网关,直接将NAT网关的公网IP加白即可,所有集群出站流量都会统一走该IP,不会随节点扩缩容变更,稳定性更高。
关于Ingress配置的补充说明
你提供的Ingress配置本身不存在影响出站访问的缺失项,仅存在版本兼容问题:networking.k8s.io/v1beta1版本的Ingress API在K8s 1.19及以上版本已经废弃,建议后续升级为networking.k8s.io/v1版本的语法格式,避免后续集群升级后Ingress规则失效。
内容的提问来源于stack exchange,提问作者Leonardo Calcagno
相关产品推荐
相关产品推荐

