部署在Azure Kubernetes Service的Spring Boot应用访问存储账号报未授权错误
排查与解决步骤
- 确认真实出口IP与白名单匹配
直接进入部署了应用的Pod内部执行命令curl ifconfig.me,获取到的IP才是Pod访问公网的实际出口地址。如果你的AKS集群配置了NAT网关、Azure防火墙、自定义路由规则,或者集群有多个公网出口IP,默认查询到的AKS服务出口IP和实际Pod出口IP会不一致。将实际出口IP以IP/32格式添加到存储账户防火墙白名单后重试。 - 检查存储账户防火墙配置项
确认你添加的IP规则没有设置错误的掩码段,单IP必须使用/32掩码才能生效。如果希望不用配置公网IP白名单,可以开启存储账户防火墙的「允许受信任的Azure服务访问」开关,符合条件的AKS集群资源可以直接通过认证访问存储。 - 使用私有网络访问规避公网限制
如果AKS集群与存储账户位于同一Azure区域,更稳定的方案是通过内网访问,无需配置公网白名单:- 为AKS节点所在的子网开启Microsoft.Storage服务端点,之后在存储账户防火墙的虚拟网络允许列表中添加该子网即可。
- 也可以为存储账户配置私有端点,绑定到AKS集群所在的虚拟网络,所有访问存储的流量都会走Azure内部链路,完全不受公网防火墙规则限制。
- 排查集群出口代理配置
若你的AKS集群部署了Istio等服务网格,或者配置了全局HTTP/HTTPS代理,Pod的出口流量会被转发到代理节点,出口IP会和集群默认出口IP不同,需要将代理节点的出口IP也添加到存储账户白名单中。
内容的提问来源于stack exchange,提问作者Karthick
相关产品推荐
相关产品推荐

