本頁面說明如何授予 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 。
請確認您的 GKE Pod 使用 Kubernetes
ServiceAccount
物件,如「設定授權和使用者身分」一文所述。建立 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 資料庫。
後續步驟
- 瞭解如何將應用程式部署至 GKE 叢集。
- 瞭解如何使用 GKE Autopilot 和 Spanner 部署應用程式。
- 進一步瞭解如何將現有工作負載遷移至 Workload Identity Federation for GKE。
- 進一步瞭解 SQL 最佳做法。
- 將 Spanner 與其他 ORM 整合,包括 Hibernate ORM、gorm 和 Django ORM。