Spanner を GKE クラスタに接続する

このページでは、Spanner データベースにアクセスする権限を Google Kubernetes Engine(GKE)クラスタに付与する方法について説明します。

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. 必要な Spanner IAM ロールを Kubernetes ServiceAccount オブジェクトに付与する IAM 許可ポリシーを作成します。次の例では、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 Namespace。
    • KSA_NAME: ServiceAccount の名前。

Spanner データベースを接続する

アプリケーション Pod が認証されると、Spanner クライアント ライブラリのいずれかを使用して Spanner データベースにクエリを実行できます。

次のステップ