在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地址了。