Conectar Spanner con un clúster de GKE

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

GKE es un servicio de Kubernetes gestionado que facilita el despliegue y la gestión de aplicaciones en contenedores. Si usas GKE y Spanner juntos, puedes aprovechar la escalabilidad, la fiabilidad, 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 Workload Identity Federation para GKE. Workload Identity Federation for GKE permite que una cuenta de servicio de Kubernetes de tu clúster actúe como una cuenta de servicio de gestión de identidades y accesos. La cuenta de servicio de IAM proporciona credenciales predeterminadas de la aplicación a tus pods, por lo que no tienes que configurar cada pod para que use tus credenciales de usuario personales.

Una vez que hayas configurado tus aplicaciones para que se autentiquen mediante Workload Identity Federation para GKE, podrás usar las bibliotecas de cliente de Spanner para consultar tus bases de datos de Spanner. También puedes migrar tus aplicaciones a tus grupos de nodos de GKE.

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

Habilitar Workload Identity Federation para GKE

Si aún no lo has hecho, habilita Workload Identity Federation para GKE en tu clúster de GKE. Puedes habilitar Workload Identity Federation para GKE en un clúster nuevo creando un grupo de nodos nuevo o en un grupo de nodos que ya tengas. Los clústeres de Autopilot de GKE tienen habilitada de forma predeterminada la federación de identidades de carga de trabajo para GKE. Para obtener más información, consulta Habilitar Workload Identity Federation para GKE.

Autenticar la conexión a Spanner con Workload Identity Federation para GKE

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

  1. Asegúrate de que tu pod de GKE use un objeto ServiceAccount de Kubernetes, tal como se describe en el artículo Configurar la autorización y las entidades principales.

  2. Crea una política de gestión de identidades y accesos que conceda los roles de gestión de identidades y accesos de Spanner necesarios al objeto ServiceAccount de Kubernetes. En el siguiente ejemplo se asigna 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
    

    Haz los cambios siguientes:

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

Conectar bases de datos de Spanner

Una vez que se haya autenticado el pod de tu aplicación, podrás usar una de las bibliotecas de cliente de Spanner para consultar tu base de datos de Spanner.

Siguientes pasos