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

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

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

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

ネットワーキング

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

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

内部接続

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

外部接続

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

  • 外部トラフィックを有効にする: spec.allowExternalIncomingTraffic: true を設定します。これにより、通常は LoadBalancer サービスがプロビジョニングされます。
  • きめ細かい制御を実装する: 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 ユーザー名とパスワード認証。管理者パスワードは通常、 Kubernetes Secret を使用して提供されます。これは、完全な DBCluster サンプルに示されています。
  • 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 ネットワーク ポリシー: アプリケーションと AlloyDB Omni または PgBouncer Pod 間のトラフィックを保護するための Pod レベルのルールを定義します。
  • 送信元の CIDR の範囲: LoadBalancer レベルでトラフィックを制限します。
  • PostgreSQL ロール: 標準のデータベース ロールと権限を使用して、ユーザーの認証後にユーザー権限を管理します。

次のステップ