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