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.8.5. 配置动态准入
此流程概述了配置动态准入的高级步骤。通过配置 webhook 准入插件来调用 webhook 服务器以扩展准入链的功能。
webhook 服务器也被配置为一个聚合的 API 服务器。这允许其他 OpenShift Container Platform 组件使用内部凭证与 webhook 通信,并可使用 oc
命令进行测试。另外,这还可在 webhook 中启用基于角色的访问控制(RBAC),并防止向 webhook 公开其他 API 服务器的令牌信息。
先决条件
- 一个具有集群管理员权限的 OpenShift Container Platform 账户。
-
已安装 OpenShift Container Platform CLI (
oc
)。 - 公布的 webhook 服务器容器镜像。
流程
- 使用镜像 registry 构建 webhook 服务器容器镜像,并将其提供给集群。
- 创建本地 CA 密钥和证书,并使用它们为 webhook 服务器的证书签名请求(CSR)签名。
为 webhook 资源创建新项目:
oc new-project my-webhook-namespace
$ oc new-project my-webhook-namespace
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 请注意,webhook 服务器可能会需要一个特定的名称。
在名为
rbac.yaml
的文件中为聚合的 API 服务定义 RBAC 规则:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将这些 RBAC 规则应用到集群:
oc auth reconcile -f rbac.yaml
$ oc auth reconcile -f rbac.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
webhook-daemonset.yaml
的 YAML 文件,用于将 webhook 部署为命名空间中的守护进程设置服务器:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署守护进程集:
oc apply -f webhook-daemonset.yaml
$ oc apply -f webhook-daemonset.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在名为
webhook-secret.yaml
的 YAML 文件中为 service serving 证书签名程序定义 secret:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 secret:
oc apply -f webhook-secret.yaml
$ oc apply -f webhook-secret.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在名为
webhook-service.yaml
的 YAML 文件中定义服务帐户和服务:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在集群中公开 webhook 服务器:
oc apply -f webhook-service.yaml
$ oc apply -f webhook-service.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在名为
webhook-crd.yaml
的文件中为 webhook 服务器定义自定义资源定义:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用自定义资源定义:
oc apply -f webhook-crd.yaml
$ oc apply -f webhook-crd.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在名为
webhook-api-service.yaml
的文件中配置 webhook 服务器也作为一个聚合的 API 服务器:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 为 webhook 服务器使用的服务器证书签名的 PEM 编码的 CA 证书。将
<ca_signing_certificate>
替换为采用 base64 格式的适当证书。
部署聚合的 API 服务:
oc apply -f webhook-api-service.yaml
$ oc apply -f webhook-api-service.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在名为
webhook-config.yaml
的文件中定义 webhook 准入插件配置。本例使用验证准入插件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
ValidatingWebhookConfiguration
对象的名称。在这个示例中使用namespacereservations
资源。- 2
- 要调用的 webhook 的名称。在这个示例中使用
namespacereservations
资源。 - 3
- 通过聚合的 API 启用对 webhook 服务器的访问。
- 4
- 用于准入请求的 webhook URL。在这个示例中使用
namespacereservation
资源。 - 5
- 为 webhook 服务器使用的服务器证书签名的 PEM 编码的 CA 证书。将
<ca_signing_certificate>
替换为采用 base64 格式的适当证书。
部署 webhook:
oc apply -f webhook-config.yaml
$ oc apply -f webhook-config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证 webhook 是否如预期运行。例如,如果您配置了动态准入以保留特定的命名空间,请确认创建这些命名空间的请求会被拒绝,并且创建非保留命名空间的请求会成功。