除了 OpenShift Container Platform 默认准入插件之外,还可以通过调用 Webhook 服务器的 Webhook 准入插件来实现动态准入,以扩展准入链的功能。Webhook 服务器在定义的端点上通过 HTTP 调用。
OpenShift Container Platform 中有两种类型的 Webhook 准入插件
当 API 请求进入时,修改型或验证型准入插件使用配置中的外部 Webhook 列表并并行调用它们。
-
如果所有 Webhook 都批准请求,则准入链将继续。
-
如果任何 Webhook 拒绝请求,则准入请求将被拒绝,拒绝的原因基于第一次拒绝。
-
如果多个 Webhook 拒绝准入请求,则仅将第一次拒绝的原因返回给用户。
-
如果调用 Webhook 时遇到错误,请求将根据设置的错误策略被拒绝或忽略。如果错误策略设置为忽略
,则在发生故障时会无条件接受请求。如果策略设置为失败
,则拒绝失败的请求。使用忽略
可能会导致所有客户端出现不可预测的行为。
Webhook 准入插件和 Webhook 服务器之间的通信必须使用 TLS。生成 CA 证书,并使用该证书签署 Webhook 准入服务器使用的服务器证书。PEM 编码的 CA 证书通过某种机制提供给 Webhook 准入插件,例如服务提供证书密钥。
下图说明了调用多个 Webhook 服务器的顺序准入链流程。
图 1. 具有变更和验证准入插件的 API 准入链
Webhook 准入插件的一个示例用例是所有 Pod 都必须具有公共标签集。在此示例中,变更准入插件可以注入标签,而验证准入插件可以检查标签是否符合预期。OpenShift Container Platform 随后将调度包含所需标签的 Pod 并拒绝不包含所需标签的 Pod。
|
OpenShift Container Platform 中最大的默认 Webhook 超时值为 13 秒,并且无法更改。
|