Preparação para configurar o Traffic Director com serviços gRPC sem proxy

Este guia contém instruções para preparar a configuração do Traffic Director com aplicativos gRPC sem proxy.

Antes de começar

Familiarize-se com os conceitos gerais do Traffic Director. Leia os seguintes documentos:

Esses documentos oferecem uma visão geral do uso do Traffic Director com aplicativos gRPC sem proxy.

Preparação geral

Primeiro, prepare o ambiente executando as tarefas descritas nas seções a seguir.

Ativar faturamento

Verifique se a cobrança está ativada para o seu projeto do Google Cloud. Para mais informações, consulte Ativar, desativar ou alterar o faturamento de um projeto.

Como conceder as permissões necessárias do IAM

Você precisa ter permissões suficientes para criar instâncias de VM e modificar uma rede para configurar o Traffic Director. Se você tem o papel de proprietário ou editor do projeto em que está ativando o Traffic Director, você já tem as permissões corretas.

Caso contrário, você precisará ter todos os papéis de IAM do Compute Engine a seguir. Se tiver esses papéis, você também terá as permissões associadas, conforme descrito na documentação do IAM do Compute Engine.

Tarefa Papel necessário
Definir a política de IAM em uma conta de serviço Administrador da conta de serviço
Acessar o recurso de regra de encaminhamento global Leitor da rede do Compute
Ativar o Traffic Director Administrador do Service Usage
Criar redes, sub-redes e componentes do balanceador de carga Administrador de rede
Adicionar e remover regras de firewall Administrador de segurança
Criar instâncias Administrador da instância do Compute

Além disso, as VMs do Compute Engine precisam ter o escopo https://www.googleapis.com/auth/cloud-platform.

Como ativar a API Traffic Director

Console

  1. No Console do Cloud, acesse "APIs e serviços" do seu projeto.
    Acessar a página "Biblioteca de APIs"
  2. Para encontrar a API Traffic Director, use o campo de pesquisa. Se ela não estiver listada, isso significa que você não tem as permissões necessárias para ativar a API Traffic Director.
  3. Clique na API Traffic Director.
  4. Na página que exibe informações sobre a API, clique em Ativar.

gcloud

gcloud services enable trafficdirector.googleapis.com

Como ativar a conta de serviço para acessar a API Traffic Director

Quando você configura o plano de dados e o conecta ao Traffic Director, os clientes xDS se conectam ao servidor xDS trafficdirector.googleapis.com. Esses 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 controle sejam devidamente autorizadas.

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

Você precisa das seguintes permissões, dependendo da versão do protocolo xDS que o aplicativo gRPC está usando. A versão do protocolo xDS é especificada no arquivo de inicialização. Recomendamos que você configure seu aplicativo usando o xDS v3 ou migre para o xDS v3, caso tenha uma implantação que use o xDS v2.

  • Ao usar o xDS v3, a conta de serviço usada pelos seus aplicativos gRPC precisa ter as permissões trafficdirector.networks.reportMetrics e trafficdirector.networks.getConfigs. É possível usar o papel de IAM trafficdirector.client, que abrange as duas permissões.
  • Quando você usa xDS v2, a conta de serviço usada pelos seus aplicativos gRPC precisa ter a permissão de IAM compute.globalForwardingRules.get para envolvidos no projeto. Também é possível conceder essa permissão atribuindo o papel compute.networkViewer à conta de serviço.

Console

  1. Acesse a página IAM e administrador no Console do Cloud.

    Acessar a página "IAM e administrador"

  2. Selecione o projeto.

  3. Identifique a conta de serviço em que você quer incluir um papel.

    • Se a conta de serviço ainda não estiver na lista de membros, ela não terá papéis atribuídos. Clique em Adicionar e digite o endereço de e-mail da conta do serviço.
    • Se estiver na lista de membros, a conta de serviço já terá papéis. Selecione a conta de serviço e clique na guia Papéis.
  4. Clique no botão Editar da conta de serviço que você quer editar.

  5. Selecione o papel Outro > Cliente do Traffic Director.

  6. Clique em Salvar para aplicar o papel à conta de serviço.

gcloud

Substitua a variável ${SERVICE_ACCOUNT_EMAIL} pelo valor correto.

PROJECT=`gcloud config get-value project`
gcloud projects add-iam-policy-binding ${PROJECT} \
--member serviceAccount:${SERVICE_ACCOUNT_EMAIL} \
--role roles/trafficdirector.client

Em seguida, siga este procedimento geral para configurar aplicativos gRPC sem proxy em uma malha:

  1. Atualize os clientes gRPC para a versão mais recente do gRPC, com o patch mais recente.
  2. Atualize o esquema do resolvedor de nomes do gRPC dos clientes ao criar um canal e especificar um arquivo de inicialização do Traffic Director.
  3. Configure os recursos do Traffic Director e do Cloud Load Balancing.

Este guia fornece informações para concluir as duas primeiras etapas. O processo de configuração usado na etapa 3 depende da implantação usar VMs do Compute Engine ou NEGs do Google Kubernetes Engine.

Versões e linguagens do gRPC compatíveis

O gRPC é um projeto de código aberto e a compatibilidade com o lançamento está descrita aqui. Recomendamos o uso da versão mais recente do gRPC para evitar vulnerabilidades de segurança conhecidas. Isso também garante que os aplicativos tenham acesso aos recursos mais recentes compatíveis com o Traffic Director. Os recursos de malha de serviço compatíveis com várias implementações e versões do gRPC estão listados aqui. As linguagens e os recursos do gRPC compatíveis com o Traffic Director e os serviços gRPC sem proxy estão listados aqui.

O Traffic Director mantém a compatibilidade com a versão atual e versões compatíveis do gRPC e esforços para serem compatíveis com versões do gRPC com menos de um ano, sujeitas aos Termos de Serviço do Google Cloud Platform

Como atualizar os clientes gRPC

Primeiro, atualize a biblioteca do gRPC do aplicativo para a versão compatível com os recursos necessários. Veja mais detalhes na seção anterior. Adicione o resolvedor de nome xDS como uma dependência dos aplicativos gRPC. Os requisitos por linguagem para Java e Go são mostrados abaixo. Outros idiomas não têm requisitos adicionais.

Requisitos do Java

Em Java, se você estiver usando o Gradle, adicione o repositório de snapshot e a dependência grpc-xds ao arquivo build.gradle. Substitua a versão mostrada abaixo pela versão mais recente do gRPC.

repositories {
    mavenLocal()
}
dependencies {
  runtimeOnly 'io.grpc:grpc-xds:1.30.0-SNAPSHOT'
}

Se você estiver usando o Maven, adicione o seguinte à seção <dependencies> de pom.xml. Substitua a versão mostrada abaixo pela versão mais recente do gRPC.

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

Requisitos do Go

Se você usa o Go, é preciso importar o pacote xds Go (em inglês).

O resolvedor de nome gRPC precisa ser xds

Defina ou altere os aplicativos gRPC para usar o esquema de resolução de nomes xds no URI de destino, em vez de DNS ou qualquer outro esquema de resolvedor. Para fazer isso, use o prefixo xds:/// no nome do destino ao criar um canal do gRPC. O balanceamento de carga para clientes gRPC é por canal.

Inclua também o nome de serviço usado no URI de destino na configuração do Traffic Director. Por exemplo, em Java, você cria o canal usando esta estrutura, em que o nome do serviço é helloworld:

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

Arquivo de inicialização

O esquema do resolvedor xds instrui o aplicativo gRPC a se conectar ao Traffic Director para receber informações de configuração do serviço de destino. Portanto, faça o seguinte:

  • Crie um arquivo de inicialização, conforme mostrado abaixo. Esse arquivo instrui o gRPC a se conectar a um servidor xDS (Traffic Director) para receber a configuração de serviços específicos.
  • Defina uma variável de ambiente chamada GRPC_XDS_BOOTSTRAP, com o nome do arquivo de inicialização como o valor da variável de ambiente.

As instruções de configuração têm exemplos que mostram como gerar o arquivo de inicialização. Para sua conveniência, use a versão mais recente do gerador de inicialização do gRPC do Traffic Director.

Um arquivo de inicialização contendo as informações necessárias para se conectar ao Traffic Director precisa ser incluído junto do aplicativo. Esta é uma amostra de arquivo de inicialização:

{
  "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 a seguir explica os campos no arquivo de inicialização.

Campo Valor e descrição
xds_servers Uma lista de servidores xDS. O gRPC usa apenas o primeiro na lista.
server_uri Especifique pelo menos uma. O gRPC tenta se conectar apenas ao primeiro servidor xDS na lista de "xds_servers". O valor padrão é trafficdirector.googleapis.com:443.
channel_creds Credenciais para usar com o servidor xDS.
server_features Uma lista de recursos compatíveis com o servidor, como suporte para xDS v3. O valor padrão é vazio.
type Use o valor google_default. Para mais informações sobre como as credenciais são obtidas, consulte Primeiros passos com a autenticação.
node Informações sobre o cliente que está se conectando ao servidor xDS.
id O id precisa estar no formato "projects/{project number}/networks/{network name}/nodes/{id}", como mostrado no exemplo acima. Forneça uma string única como valor de {id}. Isso ajuda a identificar o cliente gRPC que está se conectando ao Traffic Director.
metadata Informações específicas ao servidor xDS.
TRAFFICDIRECTOR_NETWORK_NAME Se o campo estiver vazio ou não for especificado, o valor será definido como default.
locality A zona do GCP em que o cliente gRPC está em execução

A seguir

Depois de concluir a preparação descrita neste documento, continue com as instruções em um destes documentos: