除了 OpenShift Dedicated 默认的 admission 插件外,还可以通过调用 webhook 服务器的 webhook admission 插件来实现动态 admission,以扩展 admission 链的功能。Webhook 服务器通过 HTTP 在定义的端点进行调用。
OpenShift Dedicated 中有两种类型的 webhook admission 插件
当 API 请求到来时,更改或校验 admission 插件将使用配置中的外部 webhook 列表并并行调用它们。
-
如果所有 webhook 都批准了请求,则 admission 链将继续。
-
如果任何 webhook 拒绝了请求,则 admission 请求将被拒绝,拒绝的原因基于第一个拒绝。
-
如果多个 webhook 拒绝了 admission 请求,则只将第一个拒绝原因返回给用户。
-
如果在调用 webhook 时遇到错误,则根据设置的错误策略拒绝请求或忽略 webhook。如果错误策略设置为忽略
,则在发生故障时无条件接受请求。如果策略设置为失败
,则拒绝失败的请求。使用忽略
可能会导致所有客户端出现不可预测的行为。
下图说明了其中调用多个 webhook 服务器的顺序 admission 链过程。
图 1. 带有更改和校验 admission 插件的 API admission 链
Webhook admission 插件的一个示例用例是所有 Pod 都必须具有通用标签集。在此示例中,更改 admission 插件可以注入标签,而校验 admission 插件可以检查标签是否符合预期。随后,OpenShift Dedicated 将调度包含所需标签的 Pod 并拒绝不包含所需标签的 Pod。
一些常见的 webhook admission 插件用例包括:
|
OpenShift Dedicated 中最大的默认 webhook 超时值为 13 秒,并且无法更改。
|