Prepare-se para configurar a malha de serviço na nuvem com serviços gRPC sem proxy

A configuração do Cloud Service Mesh inclui várias fases. Este documento descreve a primeira fase: instruções para se preparar para configurar a Cloud Service Mesh com aplicações gRPC sem proxy. Este documento aplica-se quando usa as APIs de equilíbrio de carga. No entanto, recomendamos vivamente que use as APIs de encaminhamento de serviços. As outras fases são abordadas nos guias específicos da plataforma indicados em Continue com o processo de configuração mais adiante neste documento.

Antes de ler este guia, familiarize-se com os seguintes documentos, que oferecem uma vista geral da utilização da Cloud Service Mesh com aplicações gRPC sem proxy:

Pré-requisitos

Prepare o seu ambiente concluindo as seguintes tarefas:

  1. Ative a faturação.
  2. Conceda as autorizações necessárias.
  3. Ative a API Traffic Director para o seu projeto.
  4. Certifique-se de que a conta de serviço tem autorizações suficientes para aceder à API Traffic Director.

As secções seguintes fornecem instruções para cada tarefa.

Ativar faturação

Certifique-se de que a faturação está ativada para o seu Google Cloud projeto. Para mais informações, consulte Ative, desative ou altere a faturação de um projeto.

Conceda as autorizações de IAM necessárias

Tem de ter autorizações de gestão de identidade e de acesso (IAM) suficientes para criar instâncias de VMs e modificar uma rede para configurar a Cloud Service Mesh. Se tiver a função de proprietário ou editor (roles/owner ou roles/editor) no projeto onde está a ativar o Cloud Service Mesh, tem automaticamente as autorizações corretas.

Caso contrário, tem de ter todas as funções do IAM apresentadas na tabela seguinte. Se tiver estas funções, também tem as respetivas autorizações associadas, conforme descrito na documentação do IAM do Compute Engine.

Tarefa Função necessária
Definir a Política IAM para uma conta de serviço. Administrador da conta de serviço
(roles/iam.serviceAccountAdmin)
Ative o Cloud Service Mesh. Administrador de utilização de serviços
(roles/serviceusage.serviceUsageAdmin)
Crie redes, sub-redes e componentes do balanceador de carga. Administrador de rede de Calcular
(roles/compute.networkAdmin)
Adicionar e remover regras de firewall. Administrador de segurança do Compute
(roles/compute.securityAdmin)
Crie instâncias. Administrador de instância de cálculo
(roles/compute.instanceAdmin)
Criar e modificar um cluster do GKE, se estiver a usar pods. Administrador do cluster
(roles/container.clusterAdmin)
Permite o acesso a contas de serviço. Utilizador da conta de serviço
(roles/iam.serviceAccountUser

As VMs do Compute Engine têm de ter o âmbito https://www.googleapis.com/auth/cloud-platform. Para mais informações, consulte o artigo Resolução de problemas de implementações que usam gRPC sem proxy.

Com a xDS v3, conceda à conta de serviço usada pelos clientes gRPC do Cloud Service Mesh a função roles/trafficdirector.client.

Ative a API Traffic Director

Consola

  1. Na Google Cloud consola, aceda à página Biblioteca de APIs do seu projeto.

    Aceda à Biblioteca de APIs

  2. No campo Pesquisar APIs e serviços, introduza Traffic Director.

  3. Na lista de resultados da pesquisa, clique em API Traffic Director. Se não vir a API Traffic Director listada, significa que não tem as autorizações necessárias para ativar a API Traffic Director.

  4. Na página API Traffic Director, clique em Ativar.

gcloud

Execute o seguinte comando:

gcloud services enable trafficdirector.googleapis.com

Ative a conta de serviço para aceder à API Traffic Director

Quando configura o plano de dados e o associa ao Cloud Service Mesh, os clientes xDS estabelecem ligação ao servidor xDS.trafficdirector.googleapis.com Estes clientes xDS apresentam uma identidade de conta de serviço ao servidor xDS para garantir que as comunicações entre o plano de dados e o plano de controlo estão devidamente autorizadas.

Para uma VM do Compute Engine, o cliente xDS usa a conta de serviço atribuída à VM.

Precisa das seguintes autorizações. A versão do protocolo xDS é especificada no ficheiro de arranque. Apenas é suportado o xDS v3.

Se estiver a usar o xDS v2, tem de migrar para o xDS v3. Para obter informações sobre como migrar, consulte o artigo Migre da xDS v2 para a xDS v3.

Quando usa o xDS v3, a conta de serviço usada pelas suas aplicações gRPC tem de ter as autorizações trafficdirector.networks.reportMetrics e trafficdirector.networks.getConfigs. Pode usar a função de cliente do Cloud Service Mesh do IAM (roles/trafficdirector.client), que envolve ambas as autorizações.

Consola

  1. Na Google Cloud consola, aceda à página IAM e administração.

    Aceda a IAM e administrador

  2. Selecione o seu projeto.

  3. Identifique a conta de serviço à qual quer adicionar uma função:

    • Se a conta de serviço ainda não estiver na lista de Membros, não tem funções atribuídas. Clique em Adicionar e introduza o endereço de email da conta de serviço.
    • Se a conta de serviço já estiver na lista de membros, tem funções existentes. Selecione a conta de serviço e, de seguida, clique no separador Funções.
  4. Expanda a função. Para a conta de serviço que quer editar, clique em Editar.

  5. Selecione a função Outro > Cliente do Cloud Service Mesh.

  6. Para aplicar a função à conta de serviço, clique em Guardar.

gcloud

Execute o seguinte comando:

gcloud projects add-iam-policy-binding PROJECT \
    --member serviceAccount:SERVICE_ACCOUNT_EMAIL \
    --role=roles/trafficdirector.client

Substitua o seguinte:

  • PROJECT: introduza gcloud config get-value project
  • SERVICE_ACCOUNT_EMAIL: o email associado à conta de serviço

Depois, siga este procedimento geral para configurar aplicações gRPC sem proxy numa malha de serviços:

  1. Atualize os seus clientes gRPC para a versão mais recente do gRPC com o patch mais recente.
  2. Atualize o esquema do resolvedor de nomes gRPC dos seus clientes quando criar um canal e especificar um ficheiro de arranque do Cloud Service Mesh.
  3. Configure recursos do Cloud Service Mesh e do Cloud Load Balancing.

Este documento fornece informações para concluir os dois primeiros passos. O processo de configuração que usa para o passo 3 depende de a sua implementação usar VMs do Compute Engine ou grupos de pontos finais de rede (NEGs) do GKE.

Versões e idiomas gRPC suportados

O gRPC é um projeto de código aberto e o respetivo suporte de lançamento é descrito nas Perguntas frequentes do gRPC. Recomendamos que use a versão mais recente do gRPC para garantir que as vulnerabilidades de segurança conhecidas são mitigadas. Isto também garante que as suas aplicações têm acesso às funcionalidades mais recentes suportadas pela malha de serviços na nuvem. As funcionalidades de malha de serviços suportadas em várias implementações e versões do gRPC estão listadas no GitHub. Para ver uma lista de idiomas e funcionalidades gRPC suportados com a Cloud Service Mesh e os serviços gRPC sem proxy, consulte as funcionalidades da Cloud Service Mesh.

O Cloud Service Mesh mantém a compatibilidade com as versões atuais e suportadas do gRPC e esforça-se por ser compatível com as versões do gRPC com menos de um ano, sujeito aos Google Cloud Termos de Utilização da Plataforma.

Atualize os seus clientes gRPC

Atualize a biblioteca gRPC na sua aplicação para a versão que suporta as funcionalidades de que precisa. Para mais detalhes, consulte a secção anterior.

Adicione o resolvedor de nomes xDS como uma dependência às suas aplicações gRPC. Os requisitos por idioma para Java e Go são apresentados nas secções seguintes. Os outros idiomas não têm requisitos adicionais.

Requisitos do Java

Em Java, se estiver a usar o Gradle, adicione a dependência grpc-xds ao ficheiro build.gradle. Substitua LATEST_GRPC_VERSION pela versão mais recente do gRPC.

dependencies {
  runtimeOnly 'io.grpc:grpc-xds:LATEST_GRPC_VERSION'
}

Se estiver a usar o Maven, adicione o seguinte à secção <dependencies> de pom.xml. Substitua LATEST_GRPC_VERSION pela versão mais recente do gRPC.

    <dependency>
      <groupId>io.grpc</groupId>
      <artifactId>grpc-xds</artifactId>
      <version>LATEST_GRPC_VERSION</version>
      <scope>runtime</scope>
    </dependency>

Requisitos de destino

Se estiver a usar o Go, importe o pacote Go xds.

Defina o resolvedor de nomes gRPC para usar xds

Defina ou altere as suas aplicações gRPC para usar o esquema de resolução de nomes xds no URI de destino, em vez do DNS ou de qualquer outro esquema de resolução. Para tal, use o prefixo xds:/// no nome do destino quando criar um canal gRPC. O equilíbrio de carga para clientes gRPC é feito por canal.

Inclua o nome do serviço usado no URI de destino na configuração da malha de serviços na nuvem. Por exemplo, em Java, cria o canal através desta estrutura, em que o nome do serviço é helloworld:

ManagedChannelBuilder.forTarget("xds:///helloworld[:PORT_NUMBER]")

Crie e configure um ficheiro de arranque

O esquema do resolvedor xds indica à aplicação gRPC que se ligue ao Cloud Service Mesh para obter informações de configuração para o serviço de destino. Por conseguinte, faça o seguinte:

  • Crie um ficheiro de arranque, como mostrado no exemplo seguinte. Este ficheiro indica ao gRPC que se ligue a um servidor xDS (Cloud Service Mesh) para obter a configuração de serviços específicos.
  • Defina uma variável de ambiente denominada GRPC_XDS_BOOTSTRAP, com o nome do ficheiro de arranque como o valor da variável de ambiente.

As instruções de configuração têm exemplos que mostram como gerar o ficheiro de arranque. Para sua conveniência, pode usar a versão mais recente do gerador de arranque do gRPC do Cloud Service Mesh.

Tem de incluir um ficheiro de arranque com as informações necessárias para estabelecer ligação ao Cloud Service Mesh juntamente com a aplicação. Um ficheiro de arranque de exemplo tem o seguinte aspeto:

{
  "xds_servers": [
    {
      "server_uri": "trafficdirector.googleapis.com:443",
      "channel_creds": [
        {
          "type": "google_default"
        }
      ],
      "server_features": ["xds_v3"]
    }
  ],
  "node": {
    "id": "projects/123456789012/networks/default/nodes/b7f9c818-fb46-43ca-8662-d3bdbcf7ec18",
    "metadata": {
      "TRAFFICDIRECTOR_NETWORK_NAME": "default"
    },
    "locality": {
      "zone": "us-central1-a"
    }
  }
}

A tabela seguinte explica os campos no ficheiro de arranque.

Campo Valor e descrição
xds_servers Uma lista de servidores xDS. O gRPC usa apenas o primeiro da lista.
server_uri Especifique, pelo menos, um. O gRPC tenta estabelecer ligação apenas ao primeiro servidor xDS na lista de xds_servers. O valor predefinido é trafficdirector.googleapis.com:443.
channel_creds Credenciais a usar com o servidor xDS.
type Use o valor google_default. Para mais informações sobre como as credenciais são obtidas, consulte o artigo Como funcionam as Credenciais padrão da aplicação.
server_features Uma lista de funcionalidades suportadas pelo servidor, como o suporte do xDS v3. O valor predefinido está vazio.
node Informações sobre o cliente que se liga ao servidor xDS.
id

O elemento id tem de estar no seguinte formato, conforme mostrado no exemplo anterior:

projects/PROJECT_NUMBER/networks/NETWORK_NAME/nodes/ID

Indique uma string única como o valor de ID. Isto ajuda a identificar o cliente gRPC que está a estabelecer ligação ao Cloud Service Mesh.

metadata Informações específicas do servidor xDS.
TRAFFICDIRECTOR_NETWORK_NAME Se o campo estiver vazio ou não for especificado, o valor é definido como default.
locality A Google Cloud zona na qual o cliente gRPC está a ser executado.

Continue o processo de configuração

Depois de concluir os pré-requisitos descritos neste documento, continue com um destes documentos: