admission 入场
webhook1.9beta 1.16 GA
crd 1.7 beta 1.16 GA
webhook 的本质是个 http server,因此,需要用代码实现这么一个 server,供 apiserver 调用
admission webhook 的作用我简单的总结下,当用户的请求到达 k8s apiserver 后,apiserver 根据 MutatingWebhookConfiguration 和 ValidatingWebhookConfiguration 的配置,先调用 MutatingWebhookConfiguration 去修改用户请求的配置文件,最后会调用 ValidatingWebhookConfiguration 来验证这个修改后的配置文件是否合法。
我们可以利用 mutating 的机制,将一些特殊的配置自动加上,而不用用户来操心。同时也可以在 validating 中编写代码设置自己的规则,看请求是否合法。
修改类型(mutating)
验证类型(validating)
既是修改又是验证类型(mutating&validating)
api请求到达K8S API Server,请求要先经过认证,执行一连串的admission controller,包括MutatingAdmissionWebhook和ValidatingAdmissionWebhook, 先串行执行MutatingAdmission的Webhook list,对请求对象的schema进行校验,并行执行ValidatingAdmission的Webhook list,最后写入etcd
apiserver 如何知道它要访问 webhook server?
kubectl exec登入pod
kube-apiserver --help |grep enable-admission-plugins
kubectl get MutatingWebhookConfiguration
kubectl get ValidatingWebhookConfiguration
kubectl api-versions | grep admissionregistration.k8s.io/v1beta1
需要完成几个事情:
https://github.com/morvencao/kube-mutating-webhook-tutorial