Conecta Spanner a un clúster de GKE

En esta página, se describe cómo otorgar permisos de clúster de Google Kubernetes Engine (GKE) para acceder a la base de datos de Spanner.

GKE es un servicio administrado de Kubernetes que facilita la implementación y la administración de aplicaciones en contenedores. Si usas GKE y Spanner juntos, puedes aprovechar la escalabilidad, la confiabilidad, la seguridad y la alta disponibilidad en la capa de aplicación y en la de base de datos.

El clúster de GKE puede acceder a la API de Spanner a través de Workload Identity. Workload Identity permite que una cuenta de servicio de Kubernetes en tu clúster funcione como una cuenta de servicio de IAM. La cuenta de servicio de IAM proporciona credenciales predeterminadas de la aplicación para tus Pods, de modo que no tengas que configurar cada Pod para que use tu credencial de usuario personal.

Después de configurar tus aplicaciones para que se autentiquen con Workload Identity, puedes usar las bibliotecas cliente de Spanner para consultar las bases de datos de Spanner. También puedes migrar tus aplicaciones a los grupos de nodos de GKE.

Para crear una conexión en un entorno de muestra, prueba el codelab Conecta Spanner con GKE Autopilot.

Habilitar Workload Identity

Si aún no lo hiciste, habilita Workload Identity para tu clúster de GKE. Puedes habilitar Workload Identity en un clúster nuevo si creas un grupo de nodos nuevo o puedes habilitar Workload Identity en un grupo de nodos existente. Los clústeres de GKE Autopilot tienen Workload Identity habilitada de forma predeterminada. Para obtener más información, consulta Habilita Workload Identity.

Autentica la conexión a Spanner con Workload Identity

Configura tus aplicaciones para que se autentiquen en Google Cloud mediante Workload Identity.

  1. Asegúrate de que el Pod de GKE use un objeto ServiceAccount de Kubernetes, como se describe en Configura la autorización y las principales.

  2. Crea una política de permisos de IAM que otorgue las funciones de IAM de Spanner necesarias al objeto ServiceAccount de Kubernetes. En el siguiente ejemplo, se otorga el rol Usuario de base de datos de 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
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto del clúster de GKE.
    • PROJECT_NUMBER: Es el número numérico de proyecto de Google Cloud.
    • NAMESPACE: El espacio de nombres de Kubernetes que contiene la ServiceAccount.
    • KSA_NAME: Es el nombre de ServiceAccount.

Conectar bases de datos de Spanner

Después de autenticar el Pod de la aplicación, puedes usar una de las bibliotecas cliente de Spanner para consultar la base de datos de Spanner.

¿Qué sigue?