Preparar a configuração do Cloud Service Mesh com o Envoy
A configuração do Cloud Service Mesh inclui as seguintes fases:
- Conceder permissões, ativar a API Traffic Director e, se você estiver usando o Compute Engine, configurar o Cloud DNS.
- Como implantar aplicativos com proxies Envoy.
- 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:
- Ativar o faturamento.
- Decida como você quer instalar o Envoy.
- Conceder as permissões necessárias
- Ativar a API Traffic Director no seu projeto
- Se você estiver usando o Compute Engine, ative a API Cloud DNS e configure o Cloud DNS.
- 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
No Console do Google Cloud, acesse a página Biblioteca de APIs do seu projeto.
No campo Pesquisar APIs e serviços, insira
Traffic Director
.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.
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
No Console do Google Cloud, acesse a página Biblioteca de APIs do seu projeto.
No campo Pesquisar APIs e serviços, insira
DNS
.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.
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
No Console do Google Cloud, acesse a página IAM e administrador:
Selecione o projeto.
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.
Expanda o papel. Na conta de serviço que você quer editar, clique em
Editar.Selecione o papel Outro > Cliente da malha de serviços da nuvem.
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
: entergcloud 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.
- Opções de configuração avançadas do Cloud Service Mesh.
- Configurar atributos de inicialização do Envoy.