istio---网格内访问外网限制

305 11天前 37


最新版本的istio默认启用了istio的pod所有出站流量均是放开的,原理是istio的pod的所有出站流量都会重定向到其sidecar代理中,尤其sidecer进行访问外网。

主要有三种模式

1、允许envoy代理将请求传递给未在网格内部配置的服务。

2、配置服务条目以提供对外部服务的受控访问。

2、完全绕过envoy代理获取特定的范围IP。

实验环节(实验案例均是来自官网)

1、kubectl apply -f samples/sleep/sleep.yaml   #启动一个pod,用于测试访问外网信息。

2、export SOURCE_POD=$(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name})  #设定环境变量,可操作

3kubectl get configmap istio -n istio-system -o yaml | grep -o "mode: ALLOW_ANY" #查看默认配置是否,已对外访问进行放开或拒绝。

4、kubectl exec -it $SOURCE_POD -c sleep -- curl -I https://www.baidu.com | grep  "HTTP/"; kubectl exec -it $SOURCE_POD -c sleep -- curl -I https://www.qq.com | grep "HTTP/" #测试是否正常可以访问

5、修改默认配置,将访问外网策略改成拒绝。

6、再次访问,发现已无法连接百度和腾讯官网。

7、建立serviceentry规则,开放访问外网权限。

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: httpbin-ext
spec:
  hosts:
  - www.baidu.com
  ports:
  - number: 443
    name: https
    protocol: HTTPS
  resolution: DNS
  location: MESH_EXTERNAL

#生效配置信息

8、再次访问百度,发现已可以访问


最后于 11天前 被305编辑 ,原因:
最新回复 (0)
    • 运维开源项目互助社区—致敬开源
      2
        立即登录 立即注册 
返回