將 Spanner 連結至 GKE 叢集

本頁面說明如何授予 Google Kubernetes Engine (GKE) 叢集存取 Spanner 資料庫的權限。

GKE 是代管 Kubernetes 服務,可讓您輕鬆部署及管理容器化應用程式。搭配使用 GKE 和 Spanner,您就能在應用程式層和資料庫層中享有擴充性、可靠性、安全性和高可用性的優勢。

GKE 叢集可透過 Workload Identity Federation for GKE 存取 Spanner API。GKE 適用的工作負載身分聯盟可讓叢集中的 Kubernetes 服務帳戶充當 IAM 服務帳戶。IAM 服務帳戶可為您的 Pod 提供應用程式預設憑證,讓您不必設定個別 Pod 即可使用個人使用者憑證。

設定應用程式後,即可使用 GKE 適用的工作負載身分聯盟進行驗證,並使用 Spanner 用戶端程式庫查詢 Spanner 資料庫。您也可以將應用程式遷移至 GKE 節點集區

如要在範例環境中建立連線,請試試 Connecting Spanner with GKE Autopilot codelab

為 GKE 啟用 Workload Identity Federation

如果您尚未為 GKE 叢集啟用 Workload Identity Federation for GKE,請先予以啟用。您可以在新叢集中啟用 Workload Identity Federation for GKE,方法是建立新節點集區;也可以在現有節點集區中啟用 Workload Identity Federation for GKE。GKE Autopilot 叢集預設會啟用 Workload Identity Federation for GKE。詳情請參閱「為 GKE 啟用 Workload Identity Federation」。

使用 GKE 適用的工作負載身分聯盟驗證與 Spanner 的連線

設定應用程式,以便使用 GKE 適用的工作負載身分聯盟驗證 Google Cloud 。

  1. 請確認您的 GKE Pod 使用 Kubernetes ServiceAccount 物件,如「設定授權和使用者身分」一文所述。

  2. 建立 IAM 允許政策,將必要的 Spanner IAM 角色授予 Kubernetes ServiceAccount 物件。以下範例會授予 Spanner 資料庫使用者 (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:服務帳戶名稱。

連結 Spanner 資料庫

應用程式 Pod 通過驗證後,您可以使用其中一個 Spanner 用戶端程式庫查詢 Spanner 資料庫。

後續步驟