编写一个准入控制器,实现自动注入nginx sidecar pod
- 编写准入控制器,并运行
- 最终的效果就是指定命名空间下的应用pod都会被注入一个简单的nginx sidecar
istio 自动注入envoy 说明
- 现在非常火热的的 Service Mesh 应用istio 就是通过k8s apiserver的 mutating webhooks 来自动将Envoy这个 sidecar 容器注入到 Pod 中去的 ,相关文档
- 为了利用 Istio 的所有功能,网格中的 pod 必须运行 Istio sidecar 代理。
- 当在 pod 的命名空间中启用时,自动注入会在 pod 创建时使用准入控制器注入代理配置,最后你的pod旁边有envoy 运行了
流程说明
-
检查集群中是否启用了 admission webhook 控制器,并根据需要进行配置。
-
编写 mutating webhook代码
- 启动tls-http server
- 实现/mutate方法
- 当用户调用create/update 方法创建/更新 pod时
- apiserver调用这个mutating webhook,修改其中的方法,添加nginx sidecar容器
- 返回给apiserver,打到注入的目的
-
创建证书完成ca签名
-
创建MutatingWebhookConfiguration
-
部署服务验证注入结果