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

A configuração do Traffic Director inclui várias fases. Neste documento, descrevemos a primeira fase: instruções para preparar a configuração do Traffic Director com aplicativos gRPC sem proxy. Este documento se aplica se você estiver usando as APIs mais antigas ou as novas APIs de roteamento de serviço, que estão em visualização. As outras fases são cobertas pelos guias específicos da plataforma listados em Continuar o processo de configuração posteriormente neste documento.

Antes de ler este guia, familiarize-se com os seguintes documentos, que fornecem uma visão geral do uso do Traffic Director com aplicativos gRPC sem proxy:

Pré-requisitos

Prepare o ambiente local concluindo as tarefas a seguir

  1. Ative o faturamento.
  2. Conceder as permissões necessárias.
  3. Ativar a API Traffic Director no seu projeto.
  4. Verifique se a conta de serviço tem permissões suficientes para acessar a API Traffic Director.

Nas seções a seguir, fornecemos instruções para cada tarefa.

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.

Conceder as permissões necessárias do IAM

Você precisa ter permissões suficientes de gerenciamento de identidade e acesso (IAM) 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 (roles/owner or roles/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 do IAM mostrados na tabela 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
(roles/iam.serviceAccountAdmin)
Ativar o Traffic Director. Administrador do Service Usage
(roles/serviceusage.serviceUsageAdmin)
Criar redes, sub-redes e componentes do balanceador de carga. Compute Network Admin
(roles/compute.networkAdmin)
Adicionar e remover regras de firewall. Administrador de segurança do Compute
(roles/compute.securityAdmin)
Criar instâncias. Administrador da instância do Compute
(roles/compute.instanceAdmin)
Criar e modificar um cluster do GKE, se estiver usando pods. Administrador de clusters
(roles/container.clusterAdmin)
Permite acesso a contas de serviço. Usuário da conta de serviço
(roles/iam.serviceAccountUser

As VMs do Compute Engine precisam ter o escopo https://www.googleapis.com/auth/cloud-platform. Para mais informações, consulte Solução de problemas em implantações que usam o gRPC sem proxy.

Com o xDS v3, conceda à conta de serviço usada pelos clientes gRPC do Traffic Director o papel roles/trafficdirector.client.

Ativar a API Traffic Director

Console

  1. No Console do Google Cloud, acesse a página Biblioteca de APIs do seu projeto.

    Acessar a Biblioteca de APIs

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

  3. Na lista de resultados da pesquisa, clique em API Traffic Director. Se ela não estiver listada, isso significa que você não tem as permissões necessárias para ativar a API Traffic Director.

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

gcloud

Execute este comando:

gcloud services enable trafficdirector.googleapis.com

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. É altamente recomendável configurar seu aplicativo com o xDS v3 ou migrar para ele caso você tenha uma implantação atual que usa 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 cliente do Traffic Director (roles/trafficdirector.client) do IAM, que encapsula 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 de visualizador de rede do Compute (roles/compute.networkViewer) à conta de serviço.

Console

  1. No Console do Google Cloud, acesse a página IAM e administrador:

    Acessar 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 de ainda não estiver na lista de membros, ela não terá nenhum papel atribuído a ela. 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. Expanda o papel. Na conta de serviço que você quer editar, clique em Editar.

  5. Selecione Outro> papel Cliente do Traffic Director.

  6. Para aplicar o papel à conta de serviço, clique em Salvar.

gcloud

Execute este comando:

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

Substitua:

  • PROJECT: enter gcloud config get-value project
  • SERVICE_ACCOUNT_EMAIL: o e-mail associado à conta de serviço.

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

  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 documento 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 grupos de endpoints de rede do GKE (NEGs, na sigla em inglês).

Versões e linguagens do gRPC compatíveis

O gRPC é um projeto de código aberto, e a compatibilidade dele com a versão é descrita nas Perguntas frequentes do gRPC. Recomendamos que você use a versão mais recente do gRPC para garantir que as vulnerabilidades de segurança conhecidas sejam reduzidas. Isso também garante que os aplicativos tenham acesso aos recursos mais recentes compatíveis com o Traffic Director. Os recursos da malha de serviço compatíveis com várias implementações e versões do gRPC estão listados no GitHub. Para ver uma lista de linguagens e recursos do gRPC compatíveis com o Traffic Director e com serviços gRPC sem proxy, consulte Recursos do Traffic Director.

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.

Atualizar clientes gRPC

Atualize a biblioteca gRPC no 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 nas seções a seguir. Outros idiomas não têm requisitos adicionais.

Requisitos do Java

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

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

Se você estiver usando o Maven, adicione o seguinte à seçã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 do Go

Se você usa o Go, importe o pacote xds Go.

Definir o resolvedor de nome do gRPC para usar 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 o nome do 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]")

Criar e configurar um 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 no exemplo a seguir. 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.
type Use o valor google_default. Para mais informações sobre como as credenciais são obtidas, consulte Primeiros passos com a autenticação.
server_features Uma lista de recursos compatíveis com o servidor, como suporte para xDS v3. O valor padrão é vazio.
node Informações sobre o cliente que está se conectando ao servidor xDS.
id

O id precisa estar no formato a seguir, conforme mostrado no exemplo anterior:


projects/PROJECT_NUMBER/networks/NETWORK_NAME/nodes/ID

Forneça uma string exclusiva como o 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 Google Cloud em que o cliente gRPC está em execução.

Continuar o processo de configuração

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