Istio之Sidecar注入( 二 )


全局设置
包含tracing, 是否启用istio-cni等配置项 。
template
包括 istio-init,istio-proxy 和 enable-core-dump 容器模板 。
policy
默认为enabled 。 关于Policy有以下两种可能值:

  • disabled :sidecar 注入器默认不会注入到 pod 中 。 添加pod模板定义中的注解 sidecar.istio.io/inject 值为 true会启用注入功能 。
  • enabled :sidecar 注入器默认会注入到 pod 中 。 添加pod模板定义中的注解 sidecar.istio.io/inject 值为 false会禁止注入功能 。
从应用容器到 Sidecar 代理的流量既然我们已经清楚了如何将 sidecar 容器和 init 容器注入到应用清单中 , 那么 sidecar 代理如何捕获容器之间的入站和出站流量?我们曾简要提到过 , 这是通过在 pod 命名空间中设置 iptable 规则来完成的 , 而规则又是由 istio-init 容器完成的 。
istio-iptables -p PORT -u UID -g GID [-m mode] [-b ports] [-d ports] [-i CIDR] [-x CIDR] [-h]-p: 指定重定向所有 TCP 流量的 Envoy 端口(默认为 $ENVOY_PORT = 15001)-u: 指定未应用重定向的用户的 UID 。 通常 , 这是代理容器的 UID(默认为 $ENVOY_USER 的 uid , istio_proxy 的 uid 或 1337)-g: 指定未应用重定向的用户的 GID 。 (与 -u param 相同的默认值)-m: 指定入站连接重定向到 Envoy 的模式 , “REDIRECT” 或 “TPROXY”(默认为 $ISTIO_INBOUND_INTERCEPTION_MODE)-b: 逗号分隔的入站端口列表 , 其流量将重定向到 Envoy(可选) 。 使用通配符 “*” 表示重定向所有端口 。 为空时表示禁用所有入站重定向(默认为 $ISTIO_INBOUND_PORTS)-d: 指定要从重定向到 Envoy 中排除(可选)的入站端口列表 , 以逗号格式分隔 。 使用通配符“*” 表示重定向所有入站流量(默认为 $ISTIO_LOCAL_EXCLUDE_PORTS)-i: 指定重定向到 Envoy(可选)的 IP 地址范围 , 以逗号分隔的 CIDR 格式列表 。 使用通配符 “*” 表示重定向所有出站流量 。 空列表将禁用所有出站重定向(默认为 $ISTIO_SERVICE_CIDR)-x: 指定将从重定向中排除的 IP 地址范围 , 以逗号分隔的 CIDR 格式列表 。 使用通配符 “*” 表示重定向所有出站流量(默认为 $ISTIO_SERVICE_EXCLUDE_CIDR) 。 我们通过一个 helloworld 示例项目 , init容器执行了如下命令:
- istio-iptables- -p- "15001"- -z- "15006"- -u- "1337"- -m- REDIRECT- -i- '*'- -x- ""- -b- '*'- -d- 15090,15021,15020结合上面的规则 , 可以看出 , 除15090,15021,15020端口外 , 所有端口流量都被重定向到15001端口 , 此端口正是istio-proxy的端口 。
作者:iyacontrol
出处: