デフォルトでは、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_NAME と CERT_MANAGER_ISSUER_KIND が設定されていることを確認するには、次のコマンドを実行します。
kubectl get deployments local-controller-manager -n alloydb-omni-system -o yaml
正しい発行者が使用されていることを確認するには、次のように Certificate オブジェクトを調べます。
kubectl get certificate -n NAMESPACE
出力の各証明書の issuerRef フィールドを確認して、カスタム発行者と一致していることを確認します。