Preparar a configuração do Cloud Service Mesh com o Envoy

A configuração do Cloud Service Mesh inclui as seguintes fases:

  1. Conceder permissões, ativar a API Traffic Director e, se você estiver usando o Compute Engine, configurar o Cloud DNS.
  2. Como implantar aplicativos com proxies Envoy.
  3. Criar serviços e regras de roteamento que determinam como o tráfego viaja pela malha de serviço.

Este documento descreve a primeira fase e se aplica quando você está usando as APIs mais antigas. A segunda e terceira fases são abordadas pelos guias específicos da plataforma listados em Continuar o processo de configuração mais adiante neste documento.

Antes de ler este guia, familiarize-se com a visão geral do Cloud Service Mesh. Se você estiver usando as APIs de roteamento de serviço, consulte a visão geral das APIs de roteamento de serviço.

Pré-requisitos

Se você planeja usar a Cloud Service Mesh para configurar proxies do Envoy em execução com aplicativos em instâncias de máquina virtual (VM), contêineres ou uma combinação dos dois, é necessário primeiro concluir as seguintes tarefas:

  1. Ativar o faturamento.
  2. Decida como você quer instalar o Envoy.
  3. Conceder as permissões necessárias
  4. Ativar a API Traffic Director no seu projeto
  5. Se você estiver usando o Compute Engine, ative a API Cloud DNS e configure o Cloud DNS.
  6. Verifique se a conta de serviço usada pelos proxies do Envoy 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.

Decidir como instalar o Envoy

O Cloud Service Mesh permite instalar proxies do Envoy e gerenciar essa camada de infraestrutura:

  • No Compute Engine, é possível adicionar automaticamente o Envoy aos aplicativos em execução nas suas VMs. Você usa um modelo de VM que instala o Envoy, o conecta ao Cloud Service Mesh e configura a rede da VM.

  • No Google Kubernetes Engine (GKE), é possível adicionar automaticamente proxies sidecar do Envoy aos pods dos serviços. Você instala um injetor de arquivo secundário do Envoy no cluster, que adiciona proxies secundários do Envoy, os conecta ao Cloud Service Mesh e configura a rede do contêiner.

Por fim, também é possível usar as soluções de implantação do Envoy de provedores terceirizados com o Cloud Service Mesh. Um exemplo desse tipo de oferta é o GetEnvoy (em inglês), que oferece uma abordagem baseada em gerenciador de pacotes para a instalação e atualização dos proxies do Envoy.

Sobre o controle de versões do Envoy

O Envoy precisa ser a versão 1.9.1 ou mais recente para funcionar com o Cloud Service Mesh. Recomendamos sempre usar a versão mais recente do Envoy para garantir que as vulnerabilidades de segurança conhecidas sejam reduzidas.

Se você decidir implantar o Envoy usando um de nossos métodos automatizados, nós cuidaremos desta tarefa para você:

  • Quando você usa a implantação automatizada do Envoy com VMs do Compute Engine, a versão do Envoy instalada é aquela que validamos para funcionar com a Cloud Service Mesh. Quando uma nova VM é criada com o modelo de instância, a VM recebe a versão mais recente que validamos. Se você tiver uma VM de longa duração, use uma atualização gradual para substituir suas VMs atuais e coletar a versão mais recente.

  • Quando você usa o injetor de arquivo secundário do Envoy com o GKE, o injetor é configurado para usar uma versão recente do Envoy que validamos para funcionar com o Cloud Service Mesh. Quando um arquivo secundário é injetado junto com o pod de carga de trabalho, ele recebe essa versão do Envoy. Se você quiser escolher uma versão mais recente do Envoy, atualize o injetor de arquivo secundário do Envoy.

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

Conceder as permissões necessárias do IAM

Você precisa ter permissões suficientes do Identity and Access Management (IAM) para criar instâncias de VM e modificar uma rede para configurar o Cloud Service Mesh. Se você tem o papel de proprietário ou editor (roles/owner ou roles/editor) do projeto em que está ativando a Cloud Service Mesh, você já tem as permissões corretas.

Caso contrário, você precisará ter todos os papéis do IAM do Compute Engine 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)
Ative o Cloud Service Mesh. 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)

O pool de nós do GKE ou 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 Envoy.

Com o xDS v3, conceda à conta de serviço usada pelos clientes do Envoy do Cloud Service Mesh 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 API Cloud DNS e configurar o Cloud DNS

Use estas instruções se estiver configurando o Cloud Service Mesh no Compute Engine. Você precisa ativar a API Cloud DNS e configurar o Cloud DNS para resolução de nomes DNS.

Para mais informações sobre o Cloud Service Mesh e a resolução de DNS, consulte Cloud Service Mesh e resolução de nome de DNS.

Primeiro, siga as instruções abaixo para ativar a API Cloud DNS.

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

  3. Na lista de resultados da pesquisa, clique em API Cloud DNS. Se você não vir a API Cloud DNS listada, isso significa que você não tem as permissões necessárias para ativá-la.

  4. Na página API Cloud DNS, clique em Ativar.

gcloud

Execute este comando:

gcloud services enable dns.googleapis.com

Em seguida, configure uma zona particular gerenciada do Cloud DNS. Use as instruções em Criar uma zona particular.

Ativar a conta de serviço para acessar a API Traffic Director

Quando você configura o plano de dados e o conecta à Cloud Service Mesh, seus clientes xDS (por exemplo, proxies do Envoy) 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.
  • Para o GKE, se Workload Identity não estiver ativado, o cliente xDS usará a conta de serviço atribuída ao nó do GKE subjacente.
  • Se Workload Identity estiver ativado, o cliente xDS usará a conta de serviço do Google vinculada à conta de serviço do Kubernetes atribuída ao pod.

Você precisa das seguintes permissões. Há suporte apenas para xDS v3. Se você estiver usando o xDS v2, será necessário migrar para o xDS v3. Para informações sobre como migrar, consulte Migrar do xDS v2 para o xDS v3.

Quando você usa o xDS v3, a conta de serviço usada pelos clientes precisa ter as permissões trafficdirector.networks.reportMetrics e trafficdirector.networks.getConfigs. É possível usar o papel de cliente do Cloud Service Mesh (roles/trafficdirector.client) do IAM, que encapsula as duas permissões.

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 o papel Outro > Cliente da malha de serviços da nuvem.

  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.

Continuar o processo de configuração

Agora que você concluiu as etapas de pré-requisito, comece a configurar a malha de serviço.