Conectar o Spanner a um cluster do GKE

Esta página descreve como conceder permissões de cluster do Google Kubernetes Engine (GKE) para acessar seu banco de dados do Spanner.

O GKE é um serviço gerenciado do Kubernetes que facilita a implantação e o gerenciamento de aplicativos conteinerizados. Ao usar o GKE e o Spanner juntos, você pode aproveitar a escalabilidade, a confiabilidade, a segurança e a alta disponibilidade na camada do aplicativo e do banco de dados.

O cluster do GKE pode acessar a API Spanner usando a Federação de Identidade da Carga de Trabalho para GKE. A Federação de Identidade da Carga de Trabalho para GKE permite que uma conta de serviço do Kubernetes no cluster atue como uma conta de serviço do IAM. A conta de serviço do IAM fornece Application Default Credentials para seus pods, para que você não precise configurar cada pod para usar sua credencial de usuário pessoal.

Depois de configurar seus aplicativos para autenticação usando a federação de identidade da carga de trabalho para o GKE, use as bibliotecas de cliente do Spanner para consultar seus bancos de dados do Spanner. Também é possível migrar seus aplicativos para os pools de nós do GKE.

Para criar uma conexão em um ambiente de exemplo, tente o codelab Como conectar o Spanner ao Autopilot do GKE.

Ativar a federação de identidade da carga de trabalho do GKE

Se ainda não fez isso, ative a Federação de Identidade da Carga de Trabalho para GKE no seu cluster do GKE. É possível ativar a federação de identidade da carga de trabalho para o GKE em um novo cluster criando um novo pool de nós ou ativando a federação de identidade da carga de trabalho para o GKE em um pool de nós atual. A federação de identidade da carga de trabalho do GKE está ativada por padrão nos clusters do Autopilot do GKE. Para mais informações, consulte Ativar a Federação de Identidade da Carga de Trabalho para o GKE.

Autentique a conexão com o Spanner usando a Federação de Identidade da Carga de Trabalho para GKE

Configure seus aplicativos para se autenticarem no Google Cloud usando a federação de identidade da carga de trabalho do GKE.

  1. Verifique se o pod do GKE usa um objeto ServiceAccount do Kubernetes, conforme descrito em Configurar autorizações e principais.

  2. Crie uma política de permissão do IAM que conceda os papéis do IAM do Spanner necessários ao objeto ServiceAccount do Kubernetes. O exemplo a seguir concede o papel de usuário do banco de dados do 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
    

    Substitua:

    • PROJECT_ID: o ID do projeto do cluster do GKE.
    • PROJECT_NUMBER: o número do projeto do Google Cloud .
    • NAMESPACE: o namespace do Kubernetes que contém a ServiceAccount.
    • KSA_NAME: o nome da ServiceAccount.

Conectar bancos de dados do Spanner

Depois que o pod do aplicativo for autenticado, você poderá usar uma das bibliotecas de cliente do Spanner para consultar o banco de dados do Spanner.

A seguir