在Kubernates中,引入了istio管理流量,这时所有的入口流量均通过istio中的ingressgateway转发至目标服务,若是想要配置白名单,限制访问流量,那么需要创建一个istio的AuthorizationPolicy资源,该资源通过label绑定ingressgateway的pod。事例如下:
kubectl apply -f - <<EOF
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: ingress-policy
namespace: istio-system
spec:
selector:
matchLabels:
app: istio-ingressgateway
action: ALLOW
rules:
- from:
- source:
ipBlocks: [“*.*.*.*”]
EOF
在配置白名单中会出现sourceIP被更改的问题,此时可以去官网了解一下Kubernates的SourceIP机制。
主要有一下3种目标服务访问方式:
1、在集群外访问:集群外访问集群内的目标服务时,由于部署 了istio,此时,所有流量会通过istio的ingressgateway,流量在通过节点node时,sourceIP会被替换为node的IP地址,然后流量到达ingressgateway pods,此时白名单的配置生效,然而sourceIP已经不是原来的IP地址了。
2、在集群内的任意一个pod访问:正常情况下集群内不pod之间的访问直接通过service实现,在istio的情况下,会依赖envoy进行流量转发,然而,如果在某个pod上通过公网域名访问其他pod上的一个服务,此时流量总会通过istio的SLB,但不会出SLB,所以,与ingressgateway pods在同一个node上,或不在同一个node上,那么sourceIP也会不同。
3、在Kubernates的任意node上访问:在node上通过公网域名访问集群内部的服务,如果kube-proxy是IPVS模式,那么在每个node节点上的IPVS网卡会绑定service的IP,诚然,ingressgateway pods的service 的公网IP也被绑定上面,所以,此时流量会直接通过IPVS的网卡转发,sourceIP会改为SLB的IP。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)