istio的sidecar注入原理

博文:https://zhaohuabing.com/2018/05/23/istio-auto-injection-with-webhook/
从k8s 1.9版本以来,引入AdmissionWebhook扩展机制,允许对ApiServer创建资源的进行验证及修改。

从图中看到,Admission中有两个重要的阶段,Mutation和Validation,这两个阶段中执行的逻辑如下:
Mutation
Mutation是英文“突变”的意思,从字面上可以知道在Mutation阶段可以对请求内容进行修改。
Validation
在Validation阶段不允许修改请求内容,但可以根据请求的内容判断是继续执行该请求还是拒绝该请求。
通过Admission webhook,可以加入Mutation和Validation两种类型的webhook插件,这些插件和Kubernets提供的预编译的Admission插件具有相同的能力。可以想到的用途包括:
修改资源。例如Istio就通过Admin Webhook在Pod资源中增加了Envoy sidecar容器。
自定义校验逻辑,例如对资源名称有一些特殊要求。或者对自定义资源的合法性进行校验。