安裝 trust-manager
安裝步驟
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 目標
trust-manager v0.7.0 及更新版本支援Secret
目標,但需要在控制器上明確啟用。可以使用 Helm 值 --set secretTargets.enabled=true
啟用此功能,但由於控制器需要 RBAC 才能讀取和更新 Secret,您還需要設定 secretTargets.authorizedSecretsAll
或 secretTargets.authorizedSecrets
。請參閱trust-manager Helm 圖表文件,以了解詳細資訊和權衡。
批准者政策整合
如果您正在執行批准者政策,則 cert-manager 的預設批准者將會停用,這表示當您安裝 Helm 圖表時,trust-manager 的 Webhook 憑證預設會遭到封鎖,直到手動批准為止。
自 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
如輸出所示,Helm 解除安裝命令不會移除 Bundle
的 CustomResourceDefinition
。這是為了防止資料遺失,因為移除 CustomResourceDefinition
也會移除所有 Bundle
資源。
☢️ 這將會移除叢集中的所有
Bundle
資源kubectl delete crd bundles.trust.cert-manager.io
⚠️
v0.9.0
之前的 trust-manager 版本不會在解除安裝時保留CustomResourceDefinition
,並且會移除叢集中的所有Bundle
資源。如果您使用的是v0.9.0
之前的版本,請務必在解除安裝 trust-manager 之前備份您的Bundle
資源。或者在解除安裝之前升級到v0.9.0
。
用法
📖 閱讀 trust-manager 文件。