Cómo conectar Spanner con un clúster de GKE

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

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

Tu clúster de GKE puede acceder a la API de Spanner a través de la federación de identidades para cargas de trabajo para GKE. La federación de identidades para cargas de trabajo para GKE permite que una cuenta de servicio de Kubernetes en el clúster actúe 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 uno para usar tus credenciales de usuario personal.

Después de configurar tus aplicaciones para que se autentiquen con la federación de identidades para cargas de trabajo para GKE, puedes usar las bibliotecas cliente de Spanner para consultar tus 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 ejemplo, prueba el codelab Conecta Spanner con GKE Autopilot.

Habilita la federación de identidades para cargas de trabajo para GKE

Si aún no lo hiciste, habilita Workload Identity Federation for GKE en tu clúster de GKE. Para habilitar la federación de identidades para cargas de trabajo para GKE en un clúster nuevo, crea un grupo de nodos nuevo o habilita la federación de identidades para cargas de trabajo para GKE en un grupo de nodos existente. Los clústeres de Autopilot de GKE tienen habilitada la federación de identidades para cargas de trabajo para GKE de forma predeterminada. Para obtener más información, consulta Habilita Workload Identity Federation for GKE.

Cómo autenticar la conexión a Spanner con Workload Identity Federation for GKE

Configura tus aplicaciones para que se autentiquen en Google Cloud con la federación de identidades para cargas de trabajo de GKE.

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

  2. Crea una política de permisos de IAM que otorgue los roles de IAM necesarios de Spanner al objeto ServiceAccount de Kubernetes. En el siguiente ejemplo, se otorga el rol de usuario de la 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 del proyecto deGoogle Cloud .
    • NAMESPACE: El espacio de nombres de Kubernetes que contiene la ServiceAccount.
    • KSA_NAME: Es el nombre de la cuenta de servicio.

Cómo conectar bases de datos de Spanner

Una vez que se autentique el pod de tu aplicación, puedes usar una de las bibliotecas cliente de Spanner para consultar tu base de datos de Spanner.

¿Qué sigue?