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

選取說明文件版本:

本文將說明在 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 operator 提供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 角色:使用者通過驗證後,即可使用標準資料庫角色和權限管理使用者權限。

後續步驟