Prepare-se para configurar APIs de encaminhamento de serviços com o Envoy e cargas de trabalho sem proxy

Este documento fornece informações sobre as tarefas pré-requisitos para configurar a Cloud Service Mesh através das APIs de encaminhamento de serviços com proxies Envoy ou com gRPC sem proxy como o plano de dados.

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 instâncias de VM ou aplicações gRPC sem proxy. As fases adicionais são abordadas nos guias específicos da plataforma indicados em Continue 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 as APIs de encaminhamento de serviços e as APIs Gateway:

Pré-requisitos

Prepare o seu ambiente concluindo as seguintes tarefas:

  1. Configure projetos de acordo com as necessidades da sua empresa.
  2. Ative a faturação.
  3. Conceda as autorizações necessárias.
  4. Ative a API Traffic Director e outras APIs para o seu projeto.
  5. Certifique-se de que a conta de serviço tem autorizações suficientes para aceder à API Traffic Director.
  6. Ative a API Cloud DNS e configure o Cloud DNS.

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

Configure projetos

Para configurar e gerir os seus projetos, consulte o artigo Criar e gerir projetos e a documentação relacionada.

Ativar faturação

Certifique-se de que a faturação está ativada para o seu Google Cloud projeto. Para mais informações, consulte o artigo 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 do projeto (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 da IAM apresentadas na tabela seguinte. Se tiver estas funções, também tem as autorizações associadas, conforme descrito na documentação de 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, malhas, gateways 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)
Permite o acesso a contas de serviço. Utilizador da conta de serviço
(roles/iam.serviceAccountUser)
Permitir que a conta de serviço execute as tarefas necessárias. Esta autorização é necessária para que o plano de dados xDS (Envoy ou gRPC sem proxy) receba a configuração xDS do plano de controlo. Cliente do Traffic Director
(roles/trafficdirector.client)

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.

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, sejam proxies do Envoy ou clientes gRPC sem proxy, ligam-se ao trafficdirector.googleapis.com servidor xDS. 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.

A menos que modifique a configuração, Google Cloud usa a conta de serviço predefinida do Compute Engine.

Para conceder à conta de serviço acesso à API Traffic Director, siga as instruções abaixo.

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

  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

Ative as APIs necessárias

Ative as seguintes APIs necessárias.

  • osconfig.googleapis.com
  • trafficdirector.googleapis.com
  • compute.googleapis.com
  • networkservices.googleapis.com

Para ativar as APIs necessárias, siga estas instruções.

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.

  5. No campo Pesquisar APIs e serviços, introduza OS Config.

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

  7. Na página API OS Config, clique em Ativar.

  8. No campo Pesquisar APIs e serviços, introduza Compute.

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

  10. Na página API Compute Engine, clique em Ativar.

  11. No campo Pesquisar APIs e serviços, introduza Network Services.

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

  13. Na página API Network Services, clique em Ativar.

gcloud

Execute o seguinte comando:

gcloud services enable osconfig.googleapis.com \
trafficdirector.googleapis.com \
compute.googleapis.com \
networkservices.googleapis.com

Versão do xDS

As APIs de encaminhamento de serviços requerem a utilização da xDS v3. Para obter informações sobre como atualizar a sua implementação de xDS v2 para xDS v3, consulte o artigo APIs de plano de controlo xDS.

Requisitos adicionais com proxies Envoy

Esta secção descreve os requisitos adicionais para usar a Cloud Service Mesh com as APIs de encaminhamento de serviços e os proxies Envoy. Se estiver a implementar com gRPC sem proxy, consulte os requisitos adicionais com gRPC sem proxy.

Como o Envoy é instalado

Durante o processo de implementação da Cloud Service Mesh, cria um modelo de VM que instala automaticamente o Envoy nas VMs onde as suas aplicações são executadas.

Acerca das versões do Envoy

O Envoy tem de ser a versão 1.20.0 ou posterior para funcionar com o Cloud Service Mesh. Recomendamos que use sempre a versão mais recente do Envoy para garantir que as vulnerabilidades de segurança conhecidas são mitigadas.

Se decidir implementar o Envoy através de um dos nossos métodos automáticos, tratamos desta tarefa por si da seguinte forma:

A implementação automatizada do Envoy com VMs do Compute Engine instala a versão do Envoy que validámos para funcionar com a Cloud Service Mesh. Quando é criada uma nova VM através do modelo de instância, a VM recebe a versão mais recente que validámos. Se tiver uma VM em execução durante muito tempo, pode usar uma atualização contínua para substituir as VMs existentes e obter a versão mais recente.

Para informações sobre versões específicas do Envoy, consulte o Histórico de versões. Para obter informações sobre vulnerabilidades de segurança, consulte os avisos de segurança.

Requisitos adicionais com gRPC sem proxy

Esta secção descreve os requisitos adicionais para usar a Cloud Service Mesh com as APIs de encaminhamento de serviços e o gRPC sem proxy. Se estiver a implementar com proxies Envoy, consulte os requisitos adicionais com proxies Envoy.

Processo geral com gRPC sem proxy

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 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_MESH_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 se estiver a configurar a Cloud Service Mesh com as APIs de encaminhamento de serviços: