一 Admission Webhook概览
Kubernetes Admission Webhook机制作为API Server的扩展机制,可以用来灵活地在对API Server对象进行写操作时实现对象统一修改和检验等功能,详细的功能介绍可以参见官方文档。当客户端连接API Server更改对象时,会经过下图所示的过程。
总得来说,有两种Admission Webhook:
- Mutating Admission Webhook和
- Validating Admission Webhook。
在对象持久化进etcd之前,Mutating Admission Webhook被API Server首先调用用来对操作对象进行修改,然后再调用Validating Admission Webhook对对象进行合格性检查,如果检查通过则写入etcd,否则拒绝更新操作。具体来说就是返回HTTP 422 Unprocessable Entity
响应码。
1.1 使用的注意事项
- 实现Webhook的服务(就是个HTTP接口)必须提供HTTPS接口
- API Server必须信任HTTPS的证书,可以让自己的Webhook使用由Kubernetes签发的证书来保证API Server信任证书
- 配置Webhook Configuration时,可以指定拦截的API对象类型已经namespace等,如:
apiVersion: admissionregistration.k8s.io/v1beta1
kind: MutatingWebhookConfiguration
metadata:
name: prometheus-operator-rulesvalidation
webhooks:
- clientConfig:
service:
name: prometheus-operator
namespace: openshift-metrics
path: /admission-prometheusrules/mutate
port: 8081
failurePolicy: Fail
name: prometheusrulemutate.monitoring.coreos.com