本文使用的版本号:1.4.2
可以看出,istio預設sidecar注入規則是,namespace帶有标簽istio-injection: enabled才會注入sidecar。
檢視哪些namespace已經配置注入:
為namespace打上注入sidecar标簽:
預設情況,是沒有設定。
有些k8s系統元件namespace不應該注入sidecar,如kube-system等,參考如下設定
為namespace打上不注入sidecar标簽:
sidecar配置儲存在configmap-istio-sidecar-injector中,更多配置可以在install/kubernetes/helm/istio/charts/sidecarInjectorWebhook/values.yaml中檢視。
主要配置,預設政策:
允許的值為<code>disabled</code>和<code>enabled</code>。僅當Webhook <code>namespaceSelector</code>比對目标名稱空間時,才應用預設政策。無法識别的政策導緻注入被完全禁用。
注意:①政策為<code>disabled</code>,但是想要為POD注入sidecar,增加annotation sidecar.istio.io/inject: "true"即可
②政策為<code>enabled</code>,但是不想要為POD注入sidecar,增加annotation sidecar.istio.io/inject: "false"即可
為一個寫好的yaml檔案手動注入sidecar,我們可以使用<code>istioctl kube-inject:</code>
預設情況下,這将使用叢集内配置。或者,可以使用配置的本地副本來完成注入。下面指令可以将預設配置導出到檔案:
然後再将檔案中配置注入到已建好的YAML中并運作:
這和第一條指令效果一樣。驗證sidecar已經注入:
示例:
如果POD配置了注解、neverInjectSelector/alwaysInjectSelector也都配置了,預設政策也配置了,那麼他們之間的優先級參考如下:
Pod Annotations → NeverInjectSelector → AlwaysInjectSelector → Default Policy
解除安裝istio中sidecar元件
删除某個namespace自動注入
更多可以參考官網.