Admission是Kubernetes中的一个术语,指的是Kubernetes API Server资源请求过程中的一个阶段。如图3-8所示,在API Server接收到资源创建请求时,首先会对请求进行认证和鉴权,然后经过Admission处理,最后再保存到etcd。

图3-8 Kubernetes Webhook机制
从图中看到,Admission有两个重要的阶段:Mutating和Validating,这两个阶段中执行的逻辑如下:
·Mutating,从字面上可以知道,在Mutating阶段可以对请求内容进行修改。
·Validating,指在该阶段不允许修改请求内容,但可以根据请求的内容判断是继续执行该请求还是拒绝该请求。
Kubernetes 1.9版本开始引入了Admission Webhook扩展机制,通过Webhook回调功能,开发者可以非常灵活地对Kubernetes API Server的功能进行扩展,在API Server创建资源时对资源进行验证或者修改。
使用Webhook的优势是不需要对API Server的源码进行修改和重新编译就可以扩展其功能。插入的逻辑实现为一个独立的进程,通过参数方式传入到Kubernetes中,由Kubernetes在进行自身逻辑处理时对扩展逻辑进行回调。
通过Admission Webhook,可以加入Mutation和Validation两种类型的Webhook插件:
·MutatingAdmissionWebhook允许你在Webhook中对资源对象进行修改。
·ValidatingAdmissionWebhook执行一些检查操作,可以拒绝用户的请求来增加额外的准入策略。
当集群管理员需要强制对某些请求(或所有请求)都进行校验(或者修改)的时候,就可以考虑使用ValidatingAdmissionWebhook或MutatingAdmissionWebhook。