Prepararsi a configurare Cloud Service Mesh con servizi gRPC proxyless
La configurazione di Cloud Service Mesh include diverse fasi. Questo documento descrive la prima fase: istruzioni per la preparazione alla configurazione di Cloud Service Mesh con applicazioni gRPC proxyless. Questo documento si applica quando utilizzi le API di bilanciamento del carico. Tuttavia, ti consigliamo vivamente di utilizzare le API di routing dei servizi. Le altre fasi sono coperte dalle guide specifiche per la piattaforma elencate in Continua la procedura di configurazione più avanti in questo documento.
Prima di leggere questa guida, consulta i seguenti documenti, che forniscono una panoramica dell'utilizzo di Cloud Service Mesh con applicazioni gRPC proxyless:
- Panoramica di Cloud Service Mesh
- Panoramica di Cloud Service Mesh con servizi gRPC proxyless
- Panoramica delle API di routing dei nuovi servizi di Cloud Service Mesh
Prerequisiti
Prepara l'ambiente completando le seguenti attività:
- Attiva la fatturazione.
- Concedi le autorizzazioni richieste.
- Abilita l'API Traffic Director per il tuo progetto.
- Assicurati che l'account di servizio abbia le autorizzazioni sufficienti per accedere all'API Traffic Director.
Le sezioni seguenti forniscono istruzioni per ogni attività.
Abilita fatturazione
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud. Per ulteriori informazioni, consulta Attivare, disattivare o modificare la fatturazione per un progetto.
Concedi le autorizzazioni IAM richieste
Per configurare Cloud Service Mesh, devi disporre di autorizzazioni Identity and Access Management (IAM) sufficienti per creare istanze VM e modificare una rete. Se disponi del ruolo Proprietario o Editor (roles/owner
oroles/editor
) del progetto in cui attivi Cloud Service Mesh, hai automaticamente le autorizzazioni corrette.
In caso contrario, devi disporre di tutti i ruoli IAM riportati nella tabella seguente. Se disponi di questi ruoli, hai anche le autorizzazioni associate, come descritto nella documentazione IAM di Compute Engine.
Attività | Ruolo richiesto |
---|---|
Imposta il criterio IAM per un account di servizio. | Amministratore account di servizio
( roles/iam.serviceAccountAdmin ) |
Attiva Cloud Service Mesh. | Amministratore dell'utilizzo dei servizi
( roles/serviceusage.serviceUsageAdmin ) |
Crea reti, subnet e componenti del bilanciatore del carico. | Amministratore rete Compute
( roles/compute.networkAdmin ) |
Aggiungere e rimuovere regole firewall. | Amministratore della sicurezza di Compute
( roles/compute.securityAdmin ) |
Crea istanze. | Amministratore delle istanze di calcolo
( roles/compute.instanceAdmin ) |
Crea e modifica un cluster GKE, se utilizzi i pod. | Amministratore cluster
( roles/container.clusterAdmin ) |
Consente l'accesso agli account di servizio. | Utente account di servizio
( roles/iam.serviceAccountUser |
Le VM Compute Engine devono avere l'ambito
https://www.googleapis.com/auth/cloud-platform
. Per ulteriori informazioni, consulta
Risoluzione dei problemi dei deployment che utilizzano gRPC senza proxy.
Con xDS 3, concedi all'account di servizio utilizzato dai client gRPC di Cloud Service Mesh il ruolo roles/trafficdirector.client
.
Abilita l'API Traffic Director
Console
Nella console Google Cloud, vai alla pagina Libreria API del tuo progetto.
Nel campo Cerca API e servizi, inserisci
Traffic Director
.Nell'elenco dei risultati di ricerca, fai clic su API Traffic Director. Se non vedi l'API Traffic Director in elenco, significa che non disponi delle autorizzazioni necessarie per abilitarla.
Nella pagina API Traffic Director, fai clic su Abilita.
gcloud
Esegui questo comando:
gcloud services enable trafficdirector.googleapis.com
Consenti all'account di servizio di accedere all'API Traffic Director
Quando configuri il piano dati e lo colleghi a Cloud Service Mesh, i client xDS si connettono al server trafficdirector.googleapis.com
xDS. Questi
client xDS presentano un'identità dell'account di servizio al server xDS per garantire che
le comunicazioni tra il piano dati e il piano di controllo siano correttamente
autorizzate.
Per una VM Compute Engine, il client xDS utilizza l'account di servizio assigned alla VM.
Devi disporre delle seguenti autorizzazioni. La versione del protocollo xDS è specificata nel file di bootstrap. È supportata solo la versione 3 di xDS.
Se utilizzi xDS 2, devi eseguire la migrazione a xDS 3. Per informazioni su come eseguire la migrazione, consulta Eseguire la migrazione da xDS v2 a xDS v3.
Quando utilizzi xDS 3, l'account di servizio utilizzato dalle applicazioni gRPC deve avere le autorizzazioni trafficdirector.networks.reportMetrics
e trafficdirector.networks.getConfigs
. Puoi utilizzare il ruolo client Cloud Service Mesh IAM (roles/trafficdirector.client
), che racchiude entrambe le autorizzazioni.
Console
Nella console Google Cloud, vai alla pagina IAM e amministrazione.
Seleziona il progetto.
Identifica l'account di servizio a cui vuoi aggiungere un ruolo:
- Se l'account di servizio non è già presente nell'elenco Membri, significa che non sono stati assegnati ruoli. Fai clic su Aggiungi e inserisci l'indirizzo email dell'account di servizio.
- Se l'account di servizio è già presente nell'elenco Membri, ha ruoli esistenti. Seleziona l'account di servizio e poi fai clic sulla scheda Ruoli.
Espandi il ruolo. Per l'account di servizio che vuoi modificare, fai clic su
Modifica.Seleziona il ruolo Altro > Client Cloud Service Mesh.
Per applicare il ruolo all'account di servizio, fai clic su Salva.
gcloud
Esegui questo comando:
gcloud projects add-iam-policy-binding PROJECT \ --member serviceAccount:SERVICE_ACCOUNT_EMAIL \ --role=roles/trafficdirector.client
Sostituisci quanto segue:
PROJECT
: inseriscigcloud config get-value project
SERVICE_ACCOUNT_EMAIL
: l'indirizzo email associato all'account di servizio
A questo punto, segui questa procedura generale per configurare le applicazioni gRPC proxyless in un mesh di servizi:
- Aggiorna i client gRPC all'ultima versione di gRPC, con la patch più recente.
- Aggiorna lo schema del risolutore dei nomi gRPC dei clienti quando crei un canale e specifica un file di bootstrap di Cloud Service Mesh.
- Configura le risorse Cloud Service Mesh e Cloud Load Balancing.
Questo documento fornisce informazioni per completare i primi due passaggi. La procedura di configurazione utilizzata per il passaggio 3 dipende dal fatto che il deployment utilizzi VM Compute Engine o gruppi di endpoint di rete (NEG) GKE.
Versioni e lingue gRPC supportate
gRPC è un progetto open source e il relativo supporto delle release è descritto nelle Domande frequenti su gRPC. Ti consigliamo di utilizzare la versione più recente di gRPC per assicurarti che le vulnerabilità di sicurezza conosciute siano mitigate. In questo modo, le tue applicazioni hanno accesso alle funzionalità più recenti supportate da Cloud Service Mesh. Le funzionalità di mesh di servizi supportate in varie implementazioni e versioni di gRPC sono elencate su GitHub. Per un elenco di linguaggi e funzionalità gRPC supportati con Cloud Service Mesh e i servizi gRPC proxyless, consulta le funzionalità di Cloud Service Mesh.
Cloud Service Mesh mantiene la compatibilità con le versioni correnti e supportate di gRPC e si impegna a essere compatibile con le versioni di gRPC precedenti a un anno, in conformità ai Termini di servizio della piattaforma Google Cloud.
Aggiorna i client gRPC
Aggiorna la libreria gRPC nell'applicazione alla versione che supporta le funzionalità di cui hai bisogno. Per maggiori dettagli, consulta la sezione precedente.
Aggiungi il resolver dei nomi xDS come dipendenza alle tue applicazioni gRPC. I requisiti per lingua per Java e Go sono riportati nelle sezioni seguenti. Per le altre lingue non sono previsti requisiti aggiuntivi.
Requisiti Java
In Java, se utilizzi Gradle, aggiungi la dipendenza grpc-xds
al file build.gradle
. Sostituisci LATEST_GRPC_VERSION
con la
versione più recente di
gRPC.
dependencies { runtimeOnly 'io.grpc:grpc-xds:LATEST_GRPC_VERSION' }
Se utilizzi Maven, aggiungi quanto segue alla sezione <dependencies>
di pom.xml. Sostituisci LATEST_GRPC_VERSION
con la
versione più recente di gRPC.
<dependency> <groupId>io.grpc</groupId> <artifactId>grpc-xds</artifactId> <version>LATEST_GRPC_VERSION</version> <scope>runtime</scope> </dependency>
Requisiti di Go
Se utilizzi Go, importa il pacchetto Go xds.
Imposta il risolutore dei nomi gRPC in modo che utilizzi xds
Imposta o modifica le applicazioni gRPC in modo che utilizzino lo schema di risoluzione dei nomi xds
nell'URI di destinazione anziché il DNS o qualsiasi altro schema di resolver. Per farlo,
utilizza il prefisso xds:///
nel nome target quando crei un canale gRPC.
Il bilanciamento del carico per i client gRPC avviene in base al canale.
Includi il nome del servizio utilizzato nell'URI target nella configurazione di Cloud Service Mesh. Ad esempio, in Java, crei il canale utilizzando questa struttura, in cui il nome del servizio è helloworld
:
ManagedChannelBuilder.forTarget("xds:///helloworld[:PORT_NUMBER]")
Creare e configurare un file di bootstrap
Lo schema del resolver xds
indica all'applicazione gRPC di connettersi a Cloud Service Mesh per ottenere le informazioni di configurazione per il servizio di destinazione. Pertanto, svolgi i seguenti passaggi:
- Crea un file di bootstrap, come mostrato nell'esempio seguente. Questo file indica a gRPC di connettersi a un server xDS (Cloud Service Mesh) per recuperare la configurazione per servizi specifici.
- Definisci una variabile di ambiente denominata
GRPC_XDS_BOOTSTRAP
con il nome del file di bootstrap come valore della variabile di ambiente.
Le istruzioni di configurazione includono esempi che mostrano come generare il file di bootstrap. Per comodità, puoi utilizzare la versione più recente del generatore di bootstrap gRPC di Cloud Service Mesh.
Un file di bootstrap contenente le informazioni necessarie per connettersi a Cloud Service Mesh deve essere incluso nell'applicazione. Un file di bootstrap di esempio ha il seguente aspetto:
{ "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" } } }
La tabella seguente illustra i campi nel file di bootstrap.
Campo | Valore e descrizione |
---|---|
xds_servers |
Un elenco di server xDS. gRPC utilizza solo il primo nell'elenco. |
server_uri |
Specifica almeno uno. gRPC tenta di connettersi solo al primo server xDS
nell'elenco di xds_servers . Il valore predefinito è
trafficdirector.googleapis.com:443 . |
channel_creds |
Credenziali da utilizzare con il server xDS. |
type |
Utilizza il valore google_default . Per ulteriori informazioni su come vengono ottenute le credenziali, consulta la guida introduttiva all'autenticazione. |
server_features |
Un elenco delle funzionalità supportate dal server, ad esempio il supporto di xDS v3. Il valore predefinito è vuoto. |
node |
Informazioni sul client che si connette al server xDS. |
id |
projects/PROJECT_NUMBER/networks/NETWORK_NAME/nodes/ID Specifica una stringa univoca come valore di |
metadata |
Informazioni specifiche per il server xDS. |
TRAFFICDIRECTOR_NETWORK_NAME |
Se il campo è vuoto o non specificato, il valore viene impostato su
default . |
locality |
La zona Google Cloud in cui è in esecuzione il client gRPC. |
Continua la procedura di configurazione
Dopo aver completato i prerequisiti descritti in questo documento, continua con uno di questi documenti:
- Continua con la configurazione di GKE e dei servizi gRPC proxyless in Cloud Service Mesh
- Continua con la configurazione di Compute Engine e dei servizi gRPC proxyless in Cloud Service Mesh
- Continua con le guide alla configurazione dell'API Kubernetes Gateway di Cloud Service Mesh per GKE. Tieni presente che la funzionalità dell'API Gateway è in anteprima.