新機能: プロジェクトの最新情報についてはTwitterMastodonでご確認いただけます。

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 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 ターゲットは 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-manager
These resources were kept due to the resource policy:
[CustomResourceDefinition] bundles.trust.cert-manager.io
release "trust-manager" uninstalled

出力に示されているように、BundleCustomResourceDefinition は、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 ドキュメントをお読みください。