AlloyDB Omni on Kubernetes 连接概览

本概览介绍了部署在 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 服务公开。这可确保实例只能由在同一 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 keytab。
    • spec.ldapConfiguration:用于群组映射和 LDAP 设置。
    • spec.pgHbaEntries:用于配置 pg_hba.conf 规则,例如 gssldap

    如需了解详情,请参阅 UserDefinedAuthentication CRD 参考文档

  • 基于证书(计划中):我们计划在未来版本中支持无密码 TLS 证书身份验证。

授权和访问权限控制

  • Kubernetes 网络政策:定义 pod 级规则,以确保应用与 AlloyDB Omni 或 PgBouncer pod 之间的流量安全。
  • 来源 CIDR 范围:在 LoadBalancer 级别限制流量。
  • PostgreSQL 角色:使用标准数据库角色和权限在用户通过身份验证后管理用户权限。

后续步骤