安装信任管理器
安装步骤
1. 更新 Helm 仓库
Helm 是安装 trust-manager 的最简单方法,它带有公开信任的证书包(用于 useDefaultCAs
源),该包来自 Debian 容器。
helm repo add jetstack https://charts.jetstack.io --force-update
2. 安装 cert-manager(可选)
通过 Helm 安装时,trust-manager 依赖 cert-manager 来配置应用程序证书,除非您明确选择使用 Helm 生成的证书。
在生产环境中,建议先安装 cert-manager,然后让 trust-manager 依赖于它。
如果您还没有安装 cert-manager,可以使用以下命令安装它。
# Run this command only if you haven't installed cert-manager alreadyhelm install cert-manager jetstack/cert-manager \--namespace cert-manager \--create-namespace \--version v1.16.1 \--set crds.enabled=true
如果您在没有默认审批器的情况下运行 cert-manager,请参阅 审批器策略集成 以了解如何避免安装卡住。
如果您不想依赖 cert-manager,可以使用 Helm 生成的证书进行安装;请参阅 在没有 cert-manager 的情况下安装 trust-manager。
3. 安装 trust-manager
trust-manager 很容易安装,并且包含在一个 Helm 图表中。
helm upgrade trust-manager jetstack/trust-manager \--install \--namespace cert-manager \--wait
有各种选项可用,其中一些将在下面介绍。
安装选项
启用 Secret 目标
Secret
目标从 trust-manager v0.7.0 开始受支持,但需要在控制器上显式启用。可以使用 Helm 值 --set secretTargets.enabled=true
启用该功能,但由于控制器需要 RBAC 才能读取和更新 Secret,您还需要设置 secretTargets.authorizedSecretsAll
或 secretTargets.authorizedSecrets
。有关详细信息和权衡,请参阅 trust-manager Helm 图表文档。
审批器策略集成
如果您正在运行 审批器策略,那么 cert-manager 的默认审批器将被禁用,这意味着 trust-manager 的 Webhook 证书默认情况下将在您安装 Helm 图表时被阻止,直到手动批准。
从 trust-manager v0.6.0 开始,您可以选择自动添加审批器策略 CertificateRequestPolicy
,它将批准 trust-manager Webhook 证书。
helm upgrade trust-manager jetstack/trust-manager \--install \--namespace cert-manager \--wait \--set app.webhook.tls.approverPolicy.enabled=true \--set app.webhook.tls.approverPolicy.certManagerNamespace=cert-manager
请注意,如果您将 cert-manager 安装到不同的命名空间,则需要在 app.webhook.tls.approverPolicy.certManagerNamespace
中传递该命名空间!
信任命名空间
您在安装时可能需要考虑的一个更重要的配置选项是使用哪个“信任命名空间”,可以通过 Helm 值 app.trust.namespace
设置。
默认情况下,信任命名空间是唯一一个将读取 Secret
的命名空间。此限制是为了安全原因 - 我们不想授予 trust-manager 读取所有命名空间中所有 Secret
的权限。通过额外的配置,可以从其他命名空间读取或写入 Secret。
信任命名空间默认设置为 cert-manager
,但它不需要设置为 cert-manager 所在的命名空间 - trust-manager 根本没有任何运行时依赖于 cert-manager! - 所以我们建议将信任命名空间设置为最适合您的环境的那个。
理想的部署将是一个全新的命名空间,专门用于 trust-manager,以最大限度地减少群集中可以修改您的信任来源的参与者数量。
在没有 cert-manager 的情况下安装 trust-manager
作为使用 cert-manager 生成 Webhook 证书的替代方案,可以选择使用 Helm 生成 Webhook 证书。
这不推荐用于生产环境,因为 Helm 生成的证书可能难以监控或推理。每次升级 trust-manager 时证书也会被轮换,这需要 Pod 重启,并可能使升级过程复杂化。
在没有 cert-manager 的情况下安装对于较小的、资源受限的部署(如实验、演示或家庭实验室)非常有用。
使用 Helm 生成的证书需要一个标志。
helm upgrade trust-manager jetstack/trust-manager \--install \--namespace cert-manager \--wait \--set app.webhook.tls.helmCert.enabled=true
卸载
要卸载通过 Helm 安装的 trust-manager,请运行
$ helm uninstall trust-manager -n cert-managerThese resources were kept due to the resource policy:[CustomResourceDefinition] bundles.trust.cert-manager.iorelease "trust-manager" uninstalled
如输出所示,CustomResourceDefinition
对于 Bundle
不会被 Helm 卸载命令删除。这是为了防止数据丢失,因为删除 CustomResourceDefinition
也会删除所有 Bundle
资源。
☢️ 这将从集群中删除所有
Bundle
资源。kubectl delete crd bundles.trust.cert-manager.io
⚠️ trust-manager 版本低于
v0.9.0
的版本不会在卸载时保留CustomResourceDefinition
,并将从集群中删除所有Bundle
资源。如果您使用的是低于v0.9.0
的版本,请在卸载 trust-manager 之前备份您的Bundle
资源。或者在卸载之前升级到v0.9.0
。
用法
📖 阅读 trust-manager 文档。