不同Mutating Webhook的执行顺序是怎样的?如何指定其执行优先级?
Mutating Webhook执行顺序规则及优先级配置方法
执行顺序遵循规则
Kubernetes对Mutating Webhook的执行顺序遵循以下规则:
- 优先级由MutatingWebhookConfiguration中每个webhook的
priority字段决定,字段取值范围为-10000到10000,数值越大优先级越高,执行顺序越靠前 - 若多个webhook的
priority值相同,会按照webhook名称的字典序升序排列依次执行 - 所有Mutating Webhook全部执行完成后,才会触发Validating Webhook的执行
- 多个webhook修改同一资源字段时,后执行的webhook的修改会覆盖先执行的webhook的修改结果
指定优先执行的配置方法
要让新增的webhook早于已有webhook执行,直接调整两个webhook的priority值即可:
- 先查询已有webhook的优先级配置,执行命令:
kubectl get mutatingwebhookconfigurations <已有webhook配置名称> -o yaml
如果配置中没有显式声明priority字段,其默认值为0 - 给新增webhook的配置中设置比已有webhook更高的
priority值即可。示例配置片段如下:
webhooks: - admissionReviewVersions: - v1 clientConfig: # 你的webhook服务配置 name: your-new-webhook.example.com priority: 20 # 假设已有webhook优先级为10,此处设为20即可优先执行 rules: # 你的webhook匹配规则
- 配置提交后即可生效,无需重启其他组件
注意事项
- 优先级特性依赖Kubernetes版本支持:v1.15版本作为alpha特性引入,需要手动开启
AdmissionWebhookPriorityfeature gate;v1.19版本进入beta阶段默认开启;v1.27及以上版本为正式稳定特性 - 优先级仅在webhook匹配到当前请求时生效,需要确保新增webhook的
rules匹配规则和已有webhook的匹配范围一致,否则不会按预期顺序触发
内容的提问来源于stack exchange,提问作者D. Wang
相关产品推荐
相关产品推荐

