Prepare-se para configurar o Cloud Service Mesh com serviços gRPC sem proxy
A configuração do Cloud Service Mesh inclui várias fases. Este documento descreve Primeira fase: instruções para se preparar para configurar o Cloud Service Mesh com aplicativos gRPC sem proxy. Este documento se aplica quando você está usando o Cloud Load Balancing. No entanto, recomendamos o uso das APIs de roteamento de serviç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 documentos a seguir, que fornecem uma visão geral do uso do Cloud Service Mesh com gRPC sem proxy aplicativos:
- Visão geral do Cloud Service Mesh
- Visão geral do Cloud Service Mesh com serviços gRPC sem proxy
- Visão geral das novas APIs de roteamento de serviço do Cloud Service Mesh
Pré-requisitos
Prepare o ambiente local concluindo as tarefas a seguir
- Ative o faturamento.
- Conceder as permissões necessárias.
- Ativar a API Traffic Director no seu projeto.
- 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 do Identity and Access Management (IAM) para criar uma VM
instâncias e modificar uma rede para configurar o Cloud Service Mesh. Se você tiver o
função do projeto
Proprietário ou editor (roles/owner
ou
roles/editor
) no projeto
estão ativando o Cloud Service Mesh, você tem automaticamente 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 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 ) |
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
https://www.googleapis.com/auth/cloud-platform
do projeto. Para mais informações, consulte Solução de problemas em implantações que usam o gRPC sem proxy.
Com o xDS v3, conceda a conta de serviço usada pelos clientes gRPC 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 conta de serviço para acessar a API Traffic Director
Quando você configura seu plano de dados e o conecta ao Cloud Service Mesh, seu
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. A versão do protocolo xDS é especificada no arquivo de inicialização. Somente xDS v3 é compatível.
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.
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
. Você pode usar o
Papel de cliente do Cloud Service Mesh do IAM
(roles/trafficdirector.client
), que une 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 do Cloud Service Mesh.
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.
Em seguida, siga este procedimento geral para configurar aplicativos gRPC sem proxy em uma malha de serviço:
- Atualize os clientes gRPC para a versão mais recente do gRPC, com o patch mais recente.
- Atualize os esquema do resolvedor de nomes gRPC ao criar um canal e especificar um arquivo de inicialização do Cloud Service Mesh.
- Configurar os recursos do Cloud Service Mesh 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 seus aplicativos tenham acesso aos recursos mais recentes compatíveis com o Cloud Service Mesh. 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 uma lista de linguagens e recursos gRPC compatíveis com o Cloud Service Mesh e serviços gRPC sem proxy, consulte Recursos do Cloud Service Mesh.
O Cloud Service Mesh mantém a compatibilidade com as versões atuais e compatíveis gRPC e esforços para ser compatível com versões gRPC menos de um ano antigo, sujeito 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 no campo
Configuração do Cloud Service Mesh. 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
o Cloud Service Mesh para receber informações de configuração para o destino;
serviço. Portanto, faça o seguinte:
- Crie um arquivo de inicialização, conforme mostrado no exemplo a seguir. Esse arquivo informa gRPC para se conectar a um servidor xDS (Cloud Service Mesh) e receber a configuração 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 comodidade, use a versão mais recente do gerador de inicialização gRPC do Cloud Service Mesh.
Um arquivo de inicialização contendo as informações necessárias para se conectar ao O Cloud Service Mesh precisa ser incluído com o 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 projects/PROJECT_NUMBER/networks/NETWORK_NAME/nodes/ID Forneça uma string exclusiva como o valor de |
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:
- Continue em Configurar o GKE e os serviços gRPC sem proxy do Cloud Service Mesh.
- Continue em Configurar o Compute Engine e os serviços gRPC sem proxy no Cloud Service Mesh.
- Continue com os guias de configuração da API Cloud Service Mesh GKE Kubernetes Gateway. Observe que o recurso da API Gateway está em pré-lançamento.