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.
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.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?
- Obtén más información sobre cómo implementar tu aplicación en el clúster de GKE.
- Obtén información sobre cómo implementar tu aplicación con GKE Autopilot y Spanner.
- Obtén más información para migrar cargas de trabajo existentes a Workload Identity.
- Obtén más información sobre las prácticas recomendadas sobre SQL.
- Integra Spanner a otros ORM, incluido Hibernate ORM, gorm y Django ORM.