コンテナ オーケストレーター接続の概要

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

この概要では、Kubernetes クラスタにデプロイされた AlloyDB Omni データベースの重要な接続とアクセス構成について説明し、柔軟で安全な接続を確立する方法について詳しく説明します。「つながり」には、次の領域が含まれます。

  • ネットワーキング: Kubernetes ClusterIP Service を使用した内部アクセスまたは LoadBalancer を使用した外部アクセス用に AlloyDB Omni データベース クラスタを構成する方法について説明します。これには、ソースのクラスレス ドメイン間ルーティング(CIDR)の範囲を使用して外部トラフィックを制限する方法も含まれます。
  • 接続プーリング: PgBouncer カスタム リソースを使用して接続プーリングを実装し、効率的な接続管理とデータベース インスタンスの負荷軽減を実現します。
  • 認証と認可: パスワードベース、Active Directory、Kerberos 統合などのサポートされている方法を使用してアクセスを保護します。また、Kubernetes ネットワーク ポリシーと PostgreSQL ロールを介してきめ細かい制御を実装します。

ネットワーキング

DBCluster カスタム リソースで管理される AlloyDB Omni データベース クラスタを、内部アクセスまたは外部アクセス用に構成できます。

DBCluster ネットワーキング オプションの詳細については、DBCluster CRD リファレンスをご覧ください。

内部接続

デフォルトでは、AlloyDB Omni インスタンスは Kubernetes ClusterIP Service を使用して公開されます。これにより、同じ Kubernetes クラスタで実行されている他のアプリケーションからのみインスタンスにアクセスできるようになります。プライマリ インスタンスのエンドポイントは DBCluster ステータスで確認できます。

外部接続

Kubernetes クラスタの外部からの接続を許可するには、DBCluster 仕様を更新します。

  • 外部トラフィックを有効にする: spec.allowExternalIncomingTraffic: true を設定します。通常、LoadBalancer Service がプロビジョニングされます。
  • きめ細かい制御を実装する: spec.primarySpec.dbLoadBalancerOptions を使用します。たとえば、Google Cloudで、gcp.loadBalancerType: "External" を設定して、公共のインターネットからアクセス可能な IP アドレスを取得します。

アクセスを制限

外部接続を保護するには、spec.primarySpec.sourceCidrRanges を使用して、許可される CIDR の範囲のリストを定義します。これらの範囲外の IP アドレスからの接続はブロックされます。

PgBouncer を使用した接続プーリング

接続を効率的に管理し、インスタンスの負荷を軽減するには、PgBouncer を使用します。AlloyDB Omni Operator には、このオペレーションを簡素化する PgBouncer カスタム リソース(CR)が用意されています。

PgBouncer の構成の詳細については、PgBouncer CRD リファレンスをご覧ください。

デプロイと構成

PgBouncer リソースを作成し、spec.dbclusterRef でデータベース クラスタを参照します。spec.parameters の主なパラメータは次のとおりです。

  • pool_mode: 接続が再利用されるタイミングを決定します(session、transaction、statement)。
  • default_pool_size: ユーザーとデータベースあたりのサーバー接続数。
  • max_client_conn: 許可されるクライアント接続の最大数。
  • max_db_connections: AlloyDB Omni インスタンスに対して開かれる最大接続数。

PgBouncer を公開する

spec.serviceOptions.type を使用して公開設定を制御します。

  • ClusterIP: 内部クラスタ アクセスのみ。
  • LoadBalancer: 外部アクセス。これは、CIDR ブロックを使用して spec.serviceOptions.loadBalancerSourceRanges で制限できます。

認証と認可

AlloyDB Omni は、ID の検証とアクセス制御に複数の方法をサポートしています。

認証方法

  • パスワード ベース: 標準の PostgreSQL ユーザー名とパスワードによる認証。管理者パスワードは、通常、完全な DBCluster のサンプルに示すように、Kubernetes Secret を使用して指定されます。
  • Active Directory と Kerberos: UserDefinedAuthentication CR を使用して管理されます。これは、次のものを使用して GSSAPI と LDAP グループの同期をサポートします。

    • spec.keytabSecretRef: Kerberos keytab 用。
    • spec.ldapConfiguration: グループ マッピングと LDAP 設定。
    • spec.pgHbaEntries: pg_hba.conf ルールを構成します(例: gss、ldap)。

    詳細については、UserDefinedAuthentication CRD リファレンスをご覧ください。

  • 証明書ベース(予定): パスワードレス TLS 証明書認証のサポートは、今後のリリースで予定されています。

認証とアクセス制御

  • Kubernetes ネットワーク ポリシー: Pod レベルのルールを定義して、アプリケーションと AlloyDB Omni または PgBouncer Pod 間のトラフィックを保護します。
  • 送信元 CIDR の範囲: LoadBalancer レベルでトラフィックを制限します。
  • PostgreSQL ロール: 標準のデータベース ロールと権限を使用して、ユーザーの認証後にユーザー権限を管理します。

次のステップ