Istio CNI插件提供了一个Helm Chart的安装选项,对于大多数Kubernetes环境来说,该Helm Chart参数的默认值将以表10-1所示的与Kubernetes安装兼容的方式配置Istio CNI插件。
表10-1 Helm Chart参数的默认值及描述

可以通过以下两种方式安装配置Istio CNI插件:
1)通过Helm安装配置
为你的Kubernetes环境构建helm template或helm install命令,如下所示:
$ helm template deployments/kubernetes/install/helm/istio-cni --values deployments/ kubernetes/install/helm/istio-cni/values.yaml --namespace kube-system --set hub=$HUB --set tag=$TAG > $HOME/istio-cni.yaml
2)通过kubectl安装配置
在istio-cni.yaml中修改如下值:
·设置CNI_CONF_NAME为Kubernetes集群在/etc/cni/net.d下的CNI配置文件的名称。
·设置exclude_namespaces为包含安装Istio控制平面的命名空间,即默认的istio-system。
·设置cni_bin_dir为Kubernetes集群安装的CNI二进制文件的位置,默认是/opt/cni/bin,可以通过查看kubelet的参数--cni-bin-dir来获取该值。
然后通过以下kubectl命令安装istio-cni:
kubectl apply -f $ HOME /istio-cni.yaml
接下来按照以下步骤使得CNI插件生效:
·修改Istio的配置,从Istio Helm Chart中的YAML文件istio/templates/sidecar-injectorconf igmap.yaml中删除initContainers部分,并应用它来替换配置项istio-sidecar-injector。或者,直接编辑配置项istio-sidecar-injector,从中删除initContainers部分并保存。
·然后通过执行命令kubectl delete pod{istio-sidecar-injector},重启Podistio-sidecar-injector。
这样一来,通过自动sidecar注入方式,init容器将不再添加到应用程序pod中,CNI将扮演为pod设置iptables的组件。