容器自動化調度管理工具連線總覽

本總覽說明在 Kubernetes 叢集部署 AlloyDB Omni 資料庫時,重要的連線和存取權設定,並詳細說明如何建立彈性且安全的連線。連線包括下列區域:

  • 網路:瞭解如何設定 AlloyDB Omni 資料庫叢集,以便使用 Kubernetes ClusterIP 服務進行內部存取,或使用 LoadBalancer 進行外部存取,包括如何使用來源無類別跨網域路由 (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 服務。
  • 實施精細控管:使用 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 支援多種驗證身分和控管存取權的方法。

驗證方式

  • 密碼型:標準 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 網路政策:定義 Pod 層級規則,保護應用程式與 AlloyDB Omni 或 PgBouncer Pod 之間的流量。
  • 來源 CIDR 範圍:在 LoadBalancer 層級限制流量。
  • PostgreSQL 角色:使用標準資料庫角色和權限,在使用者通過驗證後管理其使用者授權。

後續步驟