Conectar o Spanner com um cluster do GKE

Nesta página, descrevemos como conceder permissões ao cluster do Google Kubernetes Engine (GKE) para acessar o 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, é possível aproveitar a escalonabilidade, a confiabilidade, a segurança e a alta disponibilidade na camada do aplicativo e do banco de dados.

Seu cluster do GKE pode acessar a API Spanner por meio da Identidade da carga de trabalho. A Identidade da carga de trabalho 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 aos pods para que você não precise configurar cada pod para usar a credencial pessoal de usuário.

Depois de configurar seus aplicativos para autenticação usando a Identidade da carga de trabalho, é possível usar as bibliotecas de cliente do Spanner para consultar os 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 amostra, tente o codelab Como conectar o Spanner com o Autopilot do GKE.

Ativar a Identidade da carga de trabalho

Ative a Identidade da carga de trabalho para seu cluster do GKE, se ainda não tiver feito isso. É possível ativar a Identidade da carga de trabalho em um novo cluster criando um novo pool de nós ou em um pool de nós atual. Os clusters do Autopilot do GKE têm a Identidade da carga de trabalho ativada por padrão. Para mais informações, consulte Ativar a Identidade da carga de trabalho.

Autenticar a conexão ao Spanner com a Identidade da carga de trabalho

Configure seus aplicativos para autenticação no Google Cloud usando a Identidade da carga de trabalho.

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

  2. Crie uma política de permissão do IAM que conceda os papéis de IAM necessários do Spanner 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 numérico do projeto do Google Cloud.
    • NAMESPACE: o namespace do Kubernetes que contém a ServiceAccount.
    • KSA_NAME: o nome da conta de serviço.

Conectar bancos de dados do Spanner

Depois que o pod do aplicativo for autenticado, use uma das bibliotecas de cliente do Spanner para consultar o banco de dados do Spanner.

A seguir