将 Spanner 与 GKE 集群相关联

本页介绍了如何向 Google Kubernetes Engine (GKE) 集群授予访问 Spanner 数据库的权限。

GKE 是一种托管式 Kubernetes 服务,可让您轻松部署和管理容器化应用。通过将 GKE 与 Spanner 结合使用,您可以在应用层和数据库层中利用可伸缩性、可靠性、安全性和高可用性。

您的 GKE 集群可以通过 Workload Identity Federation for GKE 访问 Spanner API。Workload Identity Federation for GKE 支持集群中的 Kubernetes 服务账号充当 IAM 服务账号。IAM 服务账号会为您的 Pod 提供应用默认凭证,因此您无需配置每个 Pod 即可使用您的个人用户凭证。

将应用配置为使用 Workload Identity Federation for GKE 进行身份验证后,您可以使用 Spanner 客户端库查询 Spanner 数据库。您还可以将应用迁移到 GKE 节点池

如需在示例环境中创建连接,请尝试“将 Spanner 与 GKE Autopilot 相关联”Codelab

启用 Workload Identity Federation for GKE

如果您尚未为 GKE 集群启用 Workload Identity Federation for GKE,请先执行此操作。您可以通过创建新的节点池在新的集群上启用 Workload Identity Federation for GKE,也可以在现有节点池上启用 Workload Identity Federation for GKE。默认情况下,GKE Autopilot 集群会启用 Workload Identity Federation for GKE。如需了解详情,请参阅启用 Workload Identity Federation for GKE

使用 Workload Identity Federation for GKE 对 Spanner 连接进行身份验证

将应用配置为使用 Workload Identity Federation for GKE 向 Google Cloud 进行身份验证。

  1. 确保您的 GKE Pod 使用 Kubernetes ServiceAccount 对象,如配置授权和主账号中所述。

  2. 创建 IAM 允许政策,用于向 Kubernetes ServiceAccount 对象授予必要的 Spanner IAM 角色。以下示例会授予 Spanner Database User (roles/spanner.databaseUser) 角色:

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/KSA_NAME \
          --role=roles/spanner.databaseUser \
          --condition=None
    

    替换以下内容:

    • PROJECT_ID:GKE 集群的项目 ID。
    • PROJECT_NUMBER:数字式Google Cloud 项目编号。
    • NAMESPACE:包含 ServiceAccount 的 Kubernetes 命名空间。
    • KSA_NAME:ServiceAccount 的名称。

连接 Spanner 数据库

对应用 Pod 进行身份验证后,您可以使用其中一个 Spanner 客户端库查询 Spanner 数据库。

后续步骤