Como se preparar 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.

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 de contas 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.

A conta de serviço usada pelos seus clientes xDS precisa ter a permissão compute.globalForwardingRules.get do IAM para envolvidos no projeto. Também é possível conceder essa permissão atribuindo o papel compute.networkViewer à conta de serviço.

Console

  1. Abra a página IAM e Admin no Console do Cloud.

    Abrir a página "IAM e Admin"

  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 Compute Engine > Leitor da rede do Compute.

  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/compute.networkViewer

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

  1. Atualize os clientes gRPC para a versão 1.30.0 ou posterior, 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.

Como atualizar os clientes gRPC

Primeiro, atualize os clientes gRPC para a versão 1.30.0 ou posterior, com o patch mais recente. A maioria das versões de servidor do gRPC pode interoperar com clientes gRPC que usam 1.30.0 ou posterior, com o patch mais recente. Portanto, você não precisa atualizar todos os servidores gRPC simultaneamente.

Linguagens compatíveis e versões do gRPC

Os clientes gRPC precisam usar o gRPC versão 1.30.0 ou posterior, com o patch mais recente. As linguagens C++, Java, Go, Python, PHP, Ruby e C# têm suporte xDSv2 e todas são compatíveis com o Traffic Director. 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:

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:

    <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.

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"
        }
      ]
    }
  ],
  "node": {
    "id": "b7f9c818-fb46-43ca-8662-d3bdbcf7ec18~10.0.0.1",
    "metadata": {
      "TRAFFICDIRECTOR_GCP_PROJECT_NUMBER": "123456789012",
      "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.
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 Forneça uma string exclusiva no campo id. Isso ajuda a identificar o cliente gRPC que está se conectando ao Traffic Director.
metadata Informações específicas ao servidor xDS.
TRAFFICDIRECTOR_GCP_PROJECT_NUMBER O número do projeto em que o Traffic Director está em execução.
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: