trust-managerのインストール
インストール手順
1. Helmリポジトリの更新
Helm は trust-manager をインストールする最も簡単な方法であり、Debian コンテナから派生した公開的に信頼できる証明書バンドルパッケージ(useDefaultCAs
ソースの場合)が付属しています。
helm repo add jetstack https://charts.jetstack.io --force-update
2. cert-manager のインストール(オプション)
Helm を介してインストールした場合、trust-manager は、Helm で生成された証明書を明示的に使用することを選択しない限り、アプリケーション証明書のプロビジョニングのために cert-manager に依存します。
本番環境では、最初に 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 からサポートされていますが、コントローラーで明示的に有効にする必要があります。この機能は、Helm 値 --set secretTargets.enabled=true
で有効にできますが、コントローラーはシークレットの読み取りと更新に RBAC を必要とするため、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
にその名前空間を渡す必要があります。
信頼する名前空間
インストール時に考慮する必要がある重要な構成オプションの 1 つは、使用する「信頼する名前空間」です。これは、Helm 値 app.trust.namespace
を介して設定できます。
デフォルトでは、信頼する名前空間は、Secret
が読み取られる唯一の名前空間です。この制限はセキュリティ上の理由から設けられています。trust-manager にすべての名空間のすべての Secret
を読み取る権限を与えることは避けたいからです。追加の構成により、他の名前空間からシークレットを読み取ったり、他の名前空間に書き込んだりすることができます。
信頼する名前空間はデフォルトで cert-manager
に設定されていますが、cert-manager がインストールされている名前空間に設定する必要はありません。trust-manager は cert-manager にランタイム依存関係がないためです!したがって、環境に最も適した名前空間に信頼する名前空間を設定することをお勧めします。
理想的なデプロイメントは、クラスタ内で信頼ソースを変更できるアクタの数を最小限に抑えるために、trust-manager 専用の新しい名前空間です。
cert-manager なしで trust-manager をインストールする
cert-manager を使用して webhook 証明書を生成する代わりに、Helm を使用して webhook 証明書を生成することもできます。
これは、Helm で生成された証明書の監視や推論が複雑になる可能性があるため、本番環境では推奨されません。証明書は trust-manager がアップグレードされるたびにローテーションされるため、ポッドの再起動が必要になり、アップグレードプロセスが複雑になる可能性があります。
cert-manager なしでインストールすることは、実験、デモ、またはホームラボなど、リソースの制約が多い小規模なデプロイメントに最適です。
Helm で生成された証明書を使用するには、1 つのフラグが必要です。
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
出力に示されているように、Bundle
の CustomResourceDefinition
は、Helm アンインストールコマンドによって削除されません。これは、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 ドキュメントをお読みください。