- ネットワーキング: Kubernetes
ClusterIPService を使用した内部アクセスまたは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を設定します。通常、LoadBalancerService がプロビジョニングされます。 - きめ細かい制御を実装する:
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:
UserDefinedAuthenticationCR を使用して管理されます。これは、次のものを使用して GSSAPI と LDAP グループの同期をサポートします。spec.keytabSecretRef: Kerberos keytab 用。spec.ldapConfiguration: グループ マッピングと LDAP 設定。spec.pgHbaEntries:pg_hba.confルールを構成します(例:gss、ldap)。
詳細については、UserDefinedAuthentication CRD リファレンスをご覧ください。
証明書ベース(予定): パスワードレス TLS 証明書認証のサポートは、今後のリリースで予定されています。
認証とアクセス制御
- Kubernetes ネットワーク ポリシー: Pod レベルのルールを定義して、アプリケーションと AlloyDB Omni または
PgBouncerPod 間のトラフィックを保護します。 - 送信元 CIDR の範囲:
LoadBalancerレベルでトラフィックを制限します。 - PostgreSQL ロール: 標準のデータベース ロールと権限を使用して、ユーザーの認証後にユーザー権限を管理します。
次のステップ
- すべての構成オプションについては、DBCluster CRD リファレンスをご覧ください。
- PgBouncer CRD リファレンスで接続プーリングをデプロイする方法を学習する。
- UserDefinedAuthentication CRD リファレンスで Active Directory 統合について理解する。
- 完全な例については、完全な DBCluster のサンプルをご覧ください。
- ネットワーク ポリシーに関する Kubernetes のドキュメントを参照する。