如何为EKS中运行的应用配置特定路由的IP白名单?
EKS ALB Ingress 特定路由IP白名单配置方案
要实现仅指定IP访问目标路由、其他路由开放的需求,你可以通过拆分Ingress路径规则+ALB注解配置的方式完成,具体方案如下:
完整配置示例
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: app-ingress annotations: # 定义限制路由的匹配规则:覆盖目标的3个路由及子路径 alb.ingress.kubernetes.io/conditions.restricted-routes: | [{"field":"path-pattern","pathPatternConfig":{"values":["/myservice/api/v1/servicename/route*"]}}] # 配置允许访问限制路由的IP白名单,单个IP用/32后缀,多IP用逗号分隔 alb.ingress.kubernetes.io/whitelist-source-range: 153.197.13.192/32,153.197.13.207/32 # 可选:根据你的环境配置ALB网络模式,比如内部或公网 alb.ingress.kubernetes.io/scheme: internet-facing spec: ingressClassName: alb rules: - http: paths: # 第一组路径:匹配需要限制的路由,关联白名单规则 - backend: service: name: service-name port: number: 80 path: /myservice/api/v1/servicename/route pathType: Prefix conditions: - conditionName: restricted-routes # 第二组路径:匹配其他所有/servicename前缀的路由,无IP限制 - backend: service: name: service-name port: number: 80 path: /servicename pathType: Prefix
关键配置说明
路径匹配规则:
通过alb.ingress.kubernetes.io/conditions.restricted-routes注解定义路径匹配模板/myservice/api/v1/servicename/route*,可以同时覆盖你指定的3个路由(父路径/route和子路径/routeA、/routeB)。
若需要更精确的匹配(避免意外覆盖其他子路径),可以拆分为3条pathType: Exact的路径规则,都关联同一个restricted-routes条件。IP白名单绑定:
alb.ingress.kubernetes.io/whitelist-source-range注解指定允许访问限制路由的IP列表,仅当请求来自这些IP且匹配目标路径时,ALB才会转发流量到后端服务。路径优先级:
Ingress的路径规则按声明顺序匹配,因此需要把限制路由的规则放在前面,确保优先匹配,避免被后面的/servicename前缀规则覆盖。
注意事项
- 确保你的ALB Ingress Controller版本在v2.0及以上,该版本支持条件匹配与白名单的组合配置。
- 配置应用后,ALB会自动生成对应的Listener规则,无需手动操作负载均衡器。
内容的提问来源于stack exchange,提问作者Sarmad
相关产品推荐
相关产品推荐

