Kubernetes 中的 AlloyDB Omni 連線總覽

本文將說明部署在 Kubernetes 叢集上的 AlloyDB Omni 資料庫,其重要的連線和存取設定,並詳細說明如何建立彈性且安全的連線。「連結」包括下列領域:

  • 網路:瞭解如何設定 AlloyDB Omni 資料庫叢集,以使用 Kubernetes ClusterIP 服務進行內部存取,或使用 LoadBalancer 進行外部存取,包括如何使用來源無類別跨網域路由 (CIDR) 範圍限制外部流量。
  • 連線集區:使用 PgBouncer 自訂資源實作連線集區,有效管理連線並減少資料庫執行個體的負載。
  • 驗證和授權:使用支援的方法 (例如以密碼為基礎的驗證,以及 Active Directory/Kerberos 整合) 安全存取,並透過 Kubernetes 網路政策和 PostgreSQL 角色實作精細的控制。

網路

您可以設定 AlloyDB Omni 資料庫叢集 (由 DBCluster 自訂資源管理),以供內部或外部存取。

如要進一步瞭解 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 運算子提供 PgBouncer 自訂資源 (CR),可簡化這項作業。

如要深入瞭解如何設定 PgBouncer,請參閱 PgBouncer CRD 參考資料

部署和設定

建立 PgBouncer 資源,並在 spec.dbclusterRef 中參照資料庫叢集。spec.parameters 的主要參數包括:

  • pool_mode:決定何時重複使用連線 (sessiontransactionstatement)。
  • default_pool_size:每個使用者和資料庫的伺服器連線數。
  • max_client_conn:允許的用戶端連線數上限。
  • max_db_connections:開啟至 AlloyDB Omni 執行個體的連線數上限。

公開 PgBouncer

使用 spec.serviceOptions.type 控制瀏覽權限。

  • ClusterIP:僅限內部叢集存取。
  • LoadBalancer:外部存取權。您可以使用 CIDR 區塊,透過 spec.serviceOptions.loadBalancerSourceRanges 限制這項存取權。

驗證及授權

AlloyDB Omni 支援多種方法,可驗證身分及控管存取權。

驗證方法

  • 以密碼為準:標準 PostgreSQL 使用者名稱和密碼驗證。管理員密碼通常是透過 Kubernetes Secret 提供,如完整的 DBCluster 範例所示。
  • Active Directory 和 Kerberos:使用 UserDefinedAuthentication CR 管理。這項功能支援 GSSAPI 和 LDAP 群組同步,方法如下:

    • spec.keytabSecretRef:適用於 Kerberos 金鑰標籤。
    • spec.ldapConfiguration:用於群組對應和 LDAP 設定。
    • spec.pgHbaEntries:設定 pg_hba.conf 規則,例如 gssldap

    詳情請參閱 UserDefinedAuthentication CRD 參考資料

  • 憑證型 (預計):後續版本預計支援無密碼 TLS 憑證驗證。

授權和存取權控管

  • Kubernetes 網路政策:定義 Pod 層級的規則,確保應用程式與 AlloyDB Omni 或 PgBouncer Pod 之間的流量安全。
  • 來源 CIDR 範圍:LoadBalancer 層級限制流量。
  • PostgreSQL 角色:使用者通過驗證後,即可使用標準資料庫角色和權限管理使用者權限。

後續步驟