4. 动态准入控制与 Webhook:MutatingAdmissionWebhook 与 ValidatingAdmissionWebhook 的架构、证书管理、Webhook 配置示例
动态准入控制是 Kubernetes 策略即代码体系的核心执行点。它通过 MutatingAdmissionWebhook(修改资源)和 ValidatingAdmissionWebhook(验证资源)两种机制,允许集群管理员在资源持久化之前注入自定义的业务逻辑。本章深入剖析其架构、证书信任链及生产级配置方法。
4.1 动态准入控制架构总览
Kubernetes API Server 在处理资源请求时,会依次经过认证、鉴权、准入控制链。动态准入 Webhook 位于准入控制链的末端,在资源被 etcd 存储之前执行。其核心流程如下:
4.2 MutatingAdmissionWebhook 与 ValidatingAdmissionWebhook 对比
| 特性 | MutatingAdmissionWebhook | ValidatingAdmissionWebhook |
|---|---|---|
| 执行顺序 | 先执行 | 后执行 |
| 核心功能 | 修改(Patch)资源对象,如注入 Sidecar、设置默认值 | 验证(Validate)资源对象,如检查标签合规、资源配额 |
| 响应类型 | 返回 JSON Patch 或允许/拒绝 | 返回允许/拒绝及拒绝原因 |
| 典型场景 | Istio Sidecar 注入、Pod 资源默认值设置 | Pod 安全策略检查、资源配额验证、合规性审计 |
| 幂等性要求 | 必须幂等,避免重复修改 | 无修改操作,无需幂等 |
| 配置资源 | MutatingWebhookConfiguration | ValidatingWebhookConfiguration |
4.3 证书管理与 TLS 信任链
API Server 与 Webhook 服务之间的通信必须使用 TLS 加密。证书管理是 Webhook 配置中最容易出错的部分,需要严格遵循以下信任链:
4.4 Webhook 配置示例
以下是一个完整的 ValidatingWebhookConfiguration 示例,用于验证 Pod 是否包含必需的标签。该配置展示了关键字段的含义:
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: "pod-label-validator.example.com"
webhooks:
- name: "pod-label-validator.example.com"
clientConfig:
service:
namespace: "webhook-system"
name: "webhook-service"
path: "/validate"
port: 443
caBundle: "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUyT0RFeU5qY3hOekFlRncweU5EQXlNakF4TkRNeE5UaGFGdzB6TURBeU1qQXhORE14TlRoYQpNQ014UVRBZkJnTlZCQU1UTUc1aGJXVnpjR0ZqWlhKbEtpQkRRU0JRY205a2RXTjBjeUJwY3lCd1lXTmxjaUJwCmJpQk1ZVzVrSUdOdmJYQm9iM0JsY25Nc0lGQnliM1J2Y25rd0tUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQkF3QQpNc0VHUXdRZ0VBSG9Bd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQyR0N2CkFJQ0NBUUFBZ0lDQVFBQ0lBd0RRWUpZSVpJQVdVREJBSHVnQkFBTUFvR0NDcUdTTTQ5QkFNQ0EwY0F