使用Kubernetes ingress Istio将IP列入白名单以访问部署

时间:2017-09-20 13:44:55

标签: kubernetes whitelist istio kubernetes-security docker-ingress

我尝试将IP列入白名单以访问Kubernetes集群内的部署。

我在网上搜索了一些关于此的文档,但我只找到了

ingress.kubernetes.io/whitelist-source-range

用于允许访问某些IP范围的入口。但是,我仍然无法隔离部署。

这是入口配置YAML文件:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-internal
  annotations:
    kubernetes.io/ingress.class: "istio"
    ingress.kubernetes.io/whitelist-source-range: "xxx.xx.xx.0/24, xx.xxx.xx.0/24"
spec:
  rules:
  - host: white.example.com
    http:
      paths:
      - backend:
          serviceName: white
          servicePort: 80

我可以通过白名单IP和手机访问部署(不同的IP不在配置中列入白名单)

有没有人使用ingress和Istio处理同样的问题?

非常感谢任何帮助,提示,文档或替代配置。

2 个答案:

答案 0 :(得分:1)

看看annotation overview istio 似乎不支持whitelist-source-range

  

whitelist-source-range:用于启用访问权限的逗号分隔的IP地址列表。

     

nginx,haproxy,trafficserver

答案 1 :(得分:0)

我设法使用NetworkPolicy解决了基于istio的服务(使用istio代理并通过istio入口网关通过公共LB公开的应用)的白名单ip地址问题。

对于我来说,这是拓扑:

公共负载均衡器(在GKE中,使用preserve clientIP mode ==> 专用的Istio网关控制器盒(请参阅我的回答here ==> 我的豆荚(istio-proxy Sidecar容器,我的主容器)。

因此,我设置了2个网络策略:

  1. NetworkPolicy,用于保护从 internet连接我的Istio Ingress Gateway Controller Pods 的传入连接。在我的网络策略配置中,我只需要将spec.podSelector.matchLabels字段设置为专用Istio Ingress网关控制器Pod

  2. 的Pod标签。
  3. 另一种限制从我的部署->仅从Istio Ingress Gateway Controller吊舱/部署的传入连接的网络策略。