0

准入控制器(插件)和准入 Webhooks 从表面上看非常相似。实际的功能差异是什么?

4

1 回答 1

2

准入控制器被专家甚至官方文档合并为准入插件和准入网络钩子。我将它们称为准入插件和准入 Webhooks 以防止混淆。

准入插件不是 API 资源。它们不能由集群管理员创建。它们被硬编码到 Kubernetes 源代码中。

具体来说,入场插件是一种功能无限的工具。由于它们被烘焙到kube-apiserver中,因此它们能够简单地请求资源而无需身份验证。他们使用这种能力来实现DefaultStorageClass准入插件,该插件会检查所有StorageClasses 以找到一个应用了默认注释的。

另一方面,Admission Webhooks 实际上是一个 Admission Plugin 的实现,去掉了额外的功能。请注意,除了当时正在验证的确切对象之外, aWebhook.Validator 无法访问任何资源。准入 Webhook是 API 资源,通常是在为 Kubernetes Operator 或 CRD 实现验证器时推荐的第一件事。尽管如此, 签名证书是必需的,这会让你放弃整个想法。

这对普通开发人员意味着什么?

要编写一个依赖于检查集群中现有对象的验证器,您需要使用Kubernetes Golang 客户端 API完成额外的步骤,该 API依赖于应用了正确 RBAC 的服务帐户令牌。

您也可以改为使用 Status 更新您的对象,解释验证失败的原因。如果您正在编写 Kubernetes Operator,则可以在协调循环中编写。

如果您为自定义资源编写了精美的 UI,您应该能够读取这些状态并以更好的方式将它们公开给用户。不幸的是,OpenShift 4.X 用户无法将精美的 UI 添加到 OpenShift Web 控制台,并且必须满足于暴露Routes。

于 2021-04-09T17:54:14.793 回答