部署 cert-manager
我们建议使用 cert-manager 为 Webhook 服务器提供证书。只要它们将证书放在所需的位置,其他解决方案也应该可以正常工作。
您可以按照 cert-manager 文档 进行安装。
cert-manager 还有一个名为 CA 注入器 的组件,负责将 CA bundle 注入到 MutatingWebhookConfiguration
/ ValidatingWebhookConfiguration
中。
为了实现这一点,您需要在 MutatingWebhookConfiguration
/ ValidatingWebhookConfiguration
对象中使用一个带有键 cert-manager.io/inject-ca-from
的注释。注释的值应该指向一个现有的 证书请求实例,格式为 <证书命名空间>/<证书名称>
。
这是我们用于给 MutatingWebhookConfiguration
/ ValidatingWebhookConfiguration
对象添加注释的 kustomize 补丁:
# 这个补丁会向准入 Webhook 配置添加注释
# CERTIFICATE_NAMESPACE 和 CERTIFICATE_NAME 将由 kustomize 替换
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
labels:
app.kubernetes.io/name: mutatingwebhookconfiguration
app.kubernetes.io/instance: mutating-webhook-configuration
app.kubernetes.io/component: webhook
app.kubernetes.io/created-by: project
app.kubernetes.io/part-of: project
app.kubernetes.io/managed-by: kustomize
name: mutating-webhook-configuration
annotations:
cert-manager.io/inject-ca-from: CERTIFICATE_NAMESPACE/CERTIFICATE_NAME
---
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
labels:
app.kubernetes.io/name: validatingwebhookconfiguration
app.kubernetes.io/instance: validating-webhook-configuration
app.kubernetes.io/component: webhook
app.kubernetes.io/created-by: project
app.kubernetes.io/part-of: project
app.kubernetes.io/managed-by: kustomize
name: validating-webhook-configuration
annotations:
cert-manager.io/inject-ca-from: CERTIFICATE_NAMESPACE/CERTIFICATE_NAME