証明書を管理

ドキュメントのバージョンを選択してください。

このページでは、カスタム証明書発行者を使用して、Kubernetes ベースの AlloyDB Omni データベース クラスタで Transport Layer Security(TLS)証明書を管理する方法について説明します。

デフォルトでは、AlloyDB Omni Kubernetes オペレーターは cert-manager を使用して、データベース クラスタごとに一連の TLS 証明書をプロビジョニングします。オペレーターは、データベース サーバー証明書に加えて、コントロール プレーン コンポーネントの証明書も作成し、内部接続のセキュリティも確保します。デフォルトでは、各証明書はオペレータが管理する発行者によって署名されます。

AlloyDB Omni Operator バージョン 1.6.0 以降では、コントロール プレーン コンポーネントの証明書を含むすべての証明書を独自の信頼できるルート CA にチェーンバックする場合は、任意の発行者を使用するように Operator を構成できます。これにより、各内部エンティティの実装の詳細を公開することなく、コントロール プレーン機能に使用される証明書など、すべての証明書を独自の公開鍵基盤(PKI)にチェーンできます。

始める前に

証明書発行者を構成するには、まず、証明書に署名する CA に関連付けられた ClusterIssuer または Issuer タイプの cert-manager 発行者を作成する必要があります。AlloyDB Omni オペレーターは、証明書を作成するときにこの発行者を参照します。

カスタム発行者を構成する

データベース クラスタ、AlloyDB Omni オペレーター、PgBouncer 用にカスタム証明書発行者を構成できます。

データベース クラスタの証明書

この機能を使用するには、関連するデータベース クラスタのマニフェストの controlPlaneAgentsVersion が 1.6.0 以降である必要があります。

証明書発行者を構成するデータベース クラスタの仕様フィールドは 2 つあります。

  • spec.primarySpec.dataPlaneCertIssuer: データ プレーン証明書をプロビジョニングする cert-manager 発行者への参照。発行者 CA は、TLS 接続中にデータベースを検証するためにデータベース クライアントが信頼できる CA です。

  • spec.primarySpec.controlPlaneAgentsCertIssuer: コントロール プレーン証明書をプロビジョニングする cert-manager 発行者への参照。これらの証明書は内部接続に使用されます。

spec:
  primarySpec:
    tls:
      dataPlaneCertIssuer:
        name: DATA_PLANE_ISSUER_NAME
        kind: DATA_PLANE_ISSUER_KIND
      controlPlaneAgentsCertIssuer:
        name: CONTROL_PLANE_ISSUER_NAME
        kind: CONTROL_PLANE_ISSUER_KIND

次のように置き換えます。

  • DATA_PLANE_ISSUER_NAME: データベース サーバーなどのデータプレーン証明書をプロビジョニングする cert-manager 発行者の名前。

  • DATA_PLANE_ISSUER_KIND: Issuer または ClusterIssuer のいずれかを指定する必要があります。

  • CONTROL_PLANE_ISSUER_NAME: 内部コンポーネントのコントロール プレーン証明書をプロビジョニングする cert-manager 発行者の名前。

  • CONTROL_PLANE_ISSUER_KIND: Issuer または ClusterIssuer のいずれかを指定する必要があります。

オペレーター証明書

オペレータ証明書の cert-manager 発行者を構成する手順は、AlloyDB Omni のインストールに使用した方法によって異なります。

Helm を使用して構成する

AlloyDB Omni オペレーター バージョン 1.6.0 以降を初めてインストールする場合は、Helm を使用してインストールし、適切な値を設定します。これは、インストール手順に沿って操作することを前提としています。

helm install alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \
--create-namespace \
--namespace alloydb-omni-system \
--set operatorCertIssuer.certManagerIssuerName="OPERATOR_CERT_ISSUER_NAME" \
--set operatorCertIssuer.certManagerIssuerKind="OPERATOR_CERT_ISSUER_KIND" \
--atomic \
--timeout 5m

オペレーターがすでにインストールされていて、証明書発行者を設定する必要がある場合は、helm upgrade を使用して適切な値を設定します。

helm upgrade alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \
--create-namespace \
--namespace alloydb-omni-system \
--set operatorCertIssuer.certManagerIssuerName="OPERATOR_CERT_ISSUER_NAME" \
--set operatorCertIssuer.certManagerIssuerKind="OPERATOR_CERT_ISSUER_KIND" \
--atomic \
--timeout 5m

次のように置き換えます。

  • OPERATOR_CERT_ISSUER_NAME: 内部接続に使用されるオペレーター証明書をプロビジョニングする cert-manager 発行者の名前。

  • OPERATOR_CERT_ISSUER_KIND: Issuer または ClusterIssuer のいずれかを指定する必要があります。

Operator Lifecycle Manager を使用して構成する

Operator Lifecycle Manager(OLM)を使用して AlloyDB Omni Operator をインストールした場合は、Subscription リソースの spec.config.env フィールドを変更して、オペレーターの Deployment の CERT_MANAGER_ISSUER_NAME 環境変数と CERT_MANAGER_ISSUER_KIND 環境変数を設定できます。

spec:
  config:
    env:
    - name: CERT_MANAGER_ISSUER_NAME
      value: OPERATOR_CERT_ISSUER_NAME
    - name: CERT_MANAGER_ISSUER_KIND
      value: OPERATOR_CERT_ISSUER_KIND

次のように置き換えます。

  • OPERATOR_CERT_ISSUER_NAME: 内部接続に使用されるオペレーター証明書をプロビジョニングする cert-manager 発行者の名前。

  • OPERATOR_CERT_ISSUER_KIND: Issuer または ClusterIssuer のいずれかを指定する必要があります。

PgBouncer 証明書

カスタム発行者をサポートするために、PgBouncer コントローラは DBCluster の spec.primarySpec.tls.dataPlaneCertIssuer フィールドをチェックし、それを使用して PgBouncer 証明書をプロビジョニングできます。これにより、PgBouncer はデータベースと同じ CA の証明書を使用します。

確認

オペレーターの Deployment が正常で、環境変数 CERT_MANAGER_ISSUER_NAMECERT_MANAGER_ISSUER_KIND が設定されていることを確認するには、次のコマンドを実行します。

kubectl get deployments local-controller-manager -n alloydb-omni-system -o yaml

正しい発行者が使用されていることを確認するには、次のように Certificate オブジェクトを調べます。

kubectl get certificate -n NAMESPACE

出力の各証明書の issuerRef フィールドを確認して、カスタム発行者と一致していることを確認します。