NEW: 在TwitterMastodon获取项目更新。

安装信任管理器

安装步骤

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 already
helm 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.authorizedSecretsAllsecretTargets.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-manager
These resources were kept due to the resource policy:
[CustomResourceDefinition] bundles.trust.cert-manager.io
release "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 文档