This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.5.6.7. 定义 webhook
Webhook 允许 Operator 作者在资源被保存到对象存储并由 Operator 控制器处理之前,拦截、修改、接受或拒绝资源。当 webhook 与 Operator 一同提供时,Operator Lifecycle Manager(OLM)可以管理这些 webhook 的生命周期。
Operator 的集群服务版本(CSV)资源可能包含 webhookdefinitions 部分,以定义以下 Webhook 类型:
- Admission webhook(validating and mutating)
- webhook 转换
流程
在 Operator 的
spec部分添加webhookdefinitions部分,并使用ValidatingAdmissionWebhook、MutatingAdmissionWebhook或ConversionWebhooktype包括任何 webhook 定义。以下示例包含所有三种类型的 Webhook:包含 Webhook 的 CSV
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6.7.1. 针对 OLM 的 Webhook 注意事项 复制链接链接已复制到粘贴板!
使用 Operator Lifecycle Manager(OLM)部署带有 webhook 的 Operator 时,您必须定义以下内容:
-
type字段必须设置为ValidatingAdmissionWebhook、MutatingAdmissionWebhook或ConversionWebhook,否则 CSV 会进入失败的阶段。 -
CSV 必须包含一个部署,它的名称相当于
webhookdefinition的deploymentName字段中提供的值。
创建 webhook 时,OLM 确保 webhook 仅在与 Operator 部署的 Operator 组相匹配的命名空间上操作。
证书颁发机构限制
将 OLM 配置为为每个部署提供一个单独的证书颁发机构(CA)。将 CA 生成并挂载到部署的逻辑最初由 API 服务生命周期逻辑使用。因此:
-
TLS 证书文件挂载到部署的
/apiserver.local.config/certificates/apiserver.crt。 -
TLS 密钥文件挂载到部署的
/apiserver.local.config/certificates/apiserver.key。
Admission webhook 规则约束
为防止 Operator 将集群配置为无法恢复的状态,OLM 如果准入 webhook 中定义的规则拦截了以下请求中的规则,则 OLM 会将 CSV 放置到失败的阶段:
- 请求目标所有组
-
请求以
operators.coreos.com组为目标 -
请求目标为
ValidatingWebhookConfigurations或MutatingWebhookConfigurations资源
转换 Webhook 约束
如果转换 Webhook 定义未遵循以下限制,OLM 会将 CSV 放置到失败的阶段:
-
带有转换 Webhook 的 CSV 只能支持
AllNamespaces安装模式。 -
转换 Webhook 的目标 CRD 必须将其
spec.preserveUnknownFields字段设置为false或nil。 - CSV 中定义的转换 webhook 必须针对拥有的 CRD。
- 在整个集群中,给定 CRD 只能有一个转换 Webhook。