cert-manager を使用して、データベース クラスタごとに一連の TLS 証明書をプロビジョニングします。データベース サーバー証明書に加えて、オペレーターはコントロール プレーン コンポーネントの証明書を作成して、内部接続を保護します。
cert-manager は、Certificate オブジェクトの duration フィールドと renewBefore フィールドに基づいて証明書の更新を自動化しますが、次のシナリオでは証明書のローテーションを手動でトリガーする必要があります。
- 秘密鍵が不正使用されている。
- CA 証明書がローテーションされます。
cert-managerのドキュメントによると、発行者に関連付けられた CA 証明書がローテーションされても、リーフ証明書は自動的に再発行されません。 cert-managerの自動再発行が失敗する。まれに、cert-manager のよくある質問に記載されている特定の条件により自動再発行がトリガーされない場合は、手動ローテーションをトリガーする必要があります。
始める前に
- Kubernetes クラスタにアクセスするように
kubectlが構成されていることを確認します。 - Kubernetes クラスタで
cert-managerが実行されていることを確認します。
証明書の手動ローテーション
証明書のローテーションを手動でトリガーするには、cert-manager Certificate オブジェクトに関連付けられている Secret を削除します。cert-manager コントローラはオブジェクトを調整して証明書を再発行し、新しい Secret を作成します。AlloyDB Omni Operator に関連付けられたワークロードは、TLS 構成を自動的に再読み込みして新しい証明書を使用します。
ローテーションする
cert-managerCertificateを特定します。これらのオブジェクトは、DBClusterNamespace と AlloyDB Omni Operator がインストールされている Namespace にあります。CA 証明書の名前には接頭辞dbs-al-caが付き、リーフ証明書には接頭辞dbs-al-certが付きます。以降の手順では、出力から関連付けられたシークレットの名前を使用します。kubectl get certificate CERTIFICATE_NAME -n NAMESPACE -o wideローテーションをトリガーする前に、証明書シークレットをバックアップします。
kubectl get secret SECRET_NAME -n NAMESPACE -o yaml > SECRET_NAME-NAMESPACE.yaml.bak証明書の Secret を削除します。
kubectl delete secret SECRET_NAME -n NAMESPACEcert-managerが証明書 Secret を再作成するまで待ちます。kubectl get secret SECRET_NAME -n NAMESPACE -w
証明書のローテーションを確認する
証明書を手動でローテーションしたら、新しい証明書が使用されていることを確認します。
証明書のシークレットを確認します。
creationTimestamp値は、証明書を手動でローテーションした後の時間を反映する必要があります。kubectl get secret SECRET_NAME -n NAMESPACE -o yamlCertificateのステータスを確認します。ステータス セクションのnotBeforeとnotAfterの日付が正しいことを確認します。kubectl describe certificate CERTIFICATE_NAME -n NAMESPACE