Prepare-se para configurar a malha de serviço na nuvem com serviços gRPC sem proxy
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 aplicações gRPC sem proxy. Este documento aplica-se quando usa as APIs de equilíbrio de carga. No entanto, recomendamos vivamente que use as APIs de encaminhamento de serviços. As outras fases são abordadas nos guias específicos da plataforma indicados em Continue com 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 aplicações gRPC sem proxy:
- Vista geral do Cloud Service Mesh
- Vista geral do Cloud Service Mesh com serviços gRPC sem proxy
- Vista geral das novas APIs de encaminhamento de serviços da Cloud Service Mesh
Pré-requisitos
Prepare o seu ambiente concluindo as seguintes tarefas:
- Ative a faturação.
- Conceda as autorizações necessárias.
- Ative a API Traffic Director para o seu projeto.
- Certifique-se de que a conta de serviço tem autorizações suficientes para aceder à API Traffic Director.
As secções seguintes fornecem instruções para cada tarefa.
Ativar faturação
Certifique-se de que a faturação está ativada para o seu Google Cloud projeto. Para mais informações, consulte 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 (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 do IAM apresentadas na tabela seguinte. Se tiver estas funções, também tem as respetivas autorizações associadas, conforme descrito na documentação do 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 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 ) |
Criar e modificar um cluster do GKE, se estiver a usar pods. | Administrador do cluster
( roles/container.clusterAdmin ) |
Permite o acesso a contas de serviço. | Utilizador da conta de serviço
( roles/iam.serviceAccountUser |
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.
Com a xDS v3, conceda à conta de serviço usada pelos clientes gRPC do Cloud Service Mesh a função roles/trafficdirector.client
.
Ative a API Traffic Director
Consola
Na Google Cloud consola, aceda à página Biblioteca de APIs do seu projeto.
No campo Pesquisar APIs e serviços, introduza
Traffic Director
.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.
Na página API Traffic Director, clique em Ativar.
gcloud
Execute o seguinte comando:
gcloud services enable trafficdirector.googleapis.com
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 estabelecem ligação ao servidor xDS.trafficdirector.googleapis.com
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.
Precisa das seguintes autorizações. A versão do protocolo xDS é especificada no ficheiro de arranque. Apenas é suportado o xDS v3.
Se estiver a usar o xDS v2, tem de migrar para o xDS v3. Para obter informações sobre como migrar, consulte o artigo Migre da xDS v2 para a xDS v3.
Quando usa o xDS v3, a conta de serviço usada pelas suas aplicações gRPC tem de ter as autorizações trafficdirector.networks.reportMetrics
e trafficdirector.networks.getConfigs
. Pode usar a função de cliente do Cloud Service Mesh do IAM (roles/trafficdirector.client
), que envolve ambas as autorizações.
Consola
Na Google Cloud consola, aceda à página IAM e administração.
Selecione o seu projeto.
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.
Expanda a função. Para a conta de serviço que quer editar, clique em
Editar.Selecione a função Outro > Cliente do Cloud Service Mesh.
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
: introduzagcloud config get-value project
SERVICE_ACCOUNT_EMAIL
: o email associado à conta de serviço
Depois, siga este procedimento geral para configurar aplicações gRPC sem proxy numa malha de serviços:
- Atualize os seus clientes gRPC para a versão mais recente do gRPC com o patch mais recente.
- 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.
- 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 do 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 projects/PROJECT_NUMBER/networks/NETWORK_NAME/nodes/ID Indique uma string única como o valor de |
metadata |
Informações específicas do servidor xDS. |
TRAFFICDIRECTOR_NETWORK_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:
- Continue com a configuração do Cloud Service Mesh para serviços GKE e gRPC sem proxy
- Continue com a configuração do Cloud Service Mesh para serviços gRPC sem proxy e do Compute Engine
- Continue com os guias de configuração da API Kubernetes Gateway do GKE do Cloud Service Mesh. Tenha em atenção que a funcionalidade da API Gateway está em pré-visualização.