Preparati alla configurazione delle API di routing dei servizi con Envoy e carichi di lavoro senza proxy
Questo documento fornisce informazioni sulle attività prerequisiti per la configurazione di Cloud Service Mesh utilizzando le API di routing dei servizi con proxy Envoy o con gRPC senza proxy come piano dati.
La configurazione di Cloud Service Mesh include diverse fasi. Questo documento descrive la prima fase: istruzioni per preparare la configurazione di Cloud Service Mesh con istanze VM o applicazioni gRPC senza proxy. Le fasi aggiuntive sono trattate nelle guide specifiche per piattaforma elencate nella sezione Continuare il processo di configurazione più avanti in questo documento.
Prima di leggere questa guida, acquisisci familiarità con i seguenti documenti, che forniscono una panoramica sull'utilizzo di Cloud Service Mesh con le API di routing dei servizi e le API gateway:
Prerequisiti
Prepara l'ambiente completando le seguenti attività:
- Configura progetti in base alle tue esigenze aziendali.
- Abilitare la fatturazione.
- Concedi le autorizzazioni richieste.
- Abilita l'API Traffic Director e altre API per il tuo progetto.
- Assicurati che l'account di servizio disponga di autorizzazioni sufficienti per accedere all'API Traffic Director.
- Abilitare l'API Cloud DNS e configurare Cloud DNS.
Le sezioni seguenti forniscono istruzioni per ogni attività.
Configura progetti
Per impostare e gestire i progetti, consulta Creazione e gestione di progetti e la documentazione correlata.
Abilita fatturazione
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud. Per ulteriori informazioni, consulta Abilitare, disabilitare o modificare la fatturazione per un progetto.
Concedi le autorizzazioni IAM richieste
Devi disporre di autorizzazioni di Identity and Access Management (IAM) sufficienti per creare istanze VM e modificare una rete per configurare Cloud Service Mesh. Se disponi del ruolo di Proprietario o Editor del progetto (roles/owner
o roles/editor
) nel progetto in cui stai abilitando Cloud Service Mesh, disponi automaticamente delle autorizzazioni corrette.
In caso contrario, devi disporre di tutti i ruoli IAM indicati nella tabella seguente. Se disponi di questi ruoli, avrai anche le relative 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 Service Usage
( roles/serviceusage.serviceUsageAdmin ) |
Creare reti, subnet e componenti del bilanciatore del carico. | Amministratore rete Compute
( roles/compute.networkAdmin ) |
Aggiungi e rimuovi le regole firewall. | Amministratore sicurezza Compute
( roles/compute.securityAdmin ) |
Creare le istanze. | Amministratore istanze Compute
( roles/compute.instanceAdmin ) |
Consente l'accesso agli account di servizio. | Utente account di servizio
( roles/iam.serviceAccountUser ) |
Abilita l'account di servizio per eseguire le attività richieste. | Utente account di servizio
( roles.trafficdirector.client) |
Le VM di Compute Engine devono avere l'ambito https://www.googleapis.com/auth/cloud-platform
. Per maggiori informazioni, consulta
Risoluzione dei problemi dei deployment che utilizzano gRPC senza proxy.
Abilita l'account di servizio per accedere all'API Traffic Director
Quando configuri il tuo piano dati e lo colleghi a Cloud Service Mesh, i tuoi
client xDS, che siano proxy Envoy o client gRPC senza proxy, si connettono al server xDS trafficdirector.googleapis.com
. Questi client xDS presentano al server xDS un'identità dell'account di servizio per garantire che le comunicazioni tra il piano dati e il piano di controllo siano autorizzate in modo adeguato.
Per una VM di Compute Engine, il client xDS utilizza l'account di servizio assegnato alla VM.
A meno che non modifichi la configurazione, Google Cloud utilizza l'account di servizio predefinito di Compute Engine.
Per concedere all'account di servizio l'accesso all'API Traffic Director, segui le istruzioni riportate di seguito.
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, non ha nessun ruolo assegnato. Fai clic su Aggiungi e inserisci l'indirizzo email dell'account di servizio.
- Se l'account di servizio è già nell'elenco Membri, significa che dispone dei ruoli esistenti. Seleziona l'account di servizio e fai clic sulla scheda Ruoli.
Espandi il ruolo. In corrispondenza dell'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
Abilita le API richieste
Abilita le seguenti API obbligatorie.
- osconfig.googleapis.com
- trafficdirector.googleapis.com
- compute.googleapis.com
- networkservices.googleapis.com
Per abilitare le API richieste, segui le istruzioni riportate di seguito.
Console
Nella console Google Cloud, vai alla pagina Libreria API relativa al tuo progetto.
Nel campo Cerca API e servizi, inserisci
Traffic Director
.Nell'elenco dei risultati di ricerca, fai clic su API Traffic Director. Se l'API Traffic Director non è elencata, significa che non disponi delle autorizzazioni necessarie per abilitare l'API Traffic Director.
Nella pagina dell'API Traffic Director, fai clic su Abilita.
Nel campo Cerca API e servizi, inserisci
OS Config
.Nell'elenco dei risultati di ricerca, fai clic su OS Config. Se non vedi l'API OS Config in elenco, significa che non disponi delle autorizzazioni necessarie per abilitare l'API Traffic Director.
Nella pagina API OS Config, fai clic su Abilita.
Nel campo Cerca API e servizi, inserisci
Compute
.Nell'elenco dei risultati di ricerca, fai clic su API Compute Engine. Se non vedi l'API Compute Engine nell'elenco, significa che non disponi delle autorizzazioni necessarie per abilitare l'API Compute Engine.
Nella pagina API Compute Engine, fai clic su Abilita.
Nel campo Cerca API e servizi, inserisci
Network Services
.Nell'elenco dei risultati di ricerca, fai clic su API Network Services. Se l'API Network Services non è elencata, significa che non disponi delle autorizzazioni necessarie per abilitare l'API Network Services.
Nella pagina API Network Services, fai clic su Abilita.
gcloud
Esegui questo comando:
gcloud services enable osconfig.googleapis.com \ trafficdirector.googleapis.com \ compute.googleapis.com \ networkservices.googleapis.com
Versione xDS
Le API di routing dei servizi richiedono l'uso di xDS v3. Per informazioni sull'aggiornamento del deployment da xDS v2 a xDS v3, consulta le API del piano di controllo xDS.
Requisiti aggiuntivi con i proxy Envoy
Questa sezione descrive requisiti aggiuntivi per l'utilizzo di Cloud Service Mesh con le API di routing dei servizi e i proxy Envoy. Se esegui il deployment con gRPC proxyless, consulta Requisiti aggiuntivi per gRPC senza proxy.
Come viene installato Envoy
Durante il processo di deployment di Cloud Service Mesh, crei un modello di VM che installa automaticamente Envoy sulle VM su cui vengono eseguite le tue applicazioni.
Informazioni sulle versioni di Envoy
Envoy deve avere la versione 1.20.0 o successiva per funzionare con Cloud Service Mesh. Consigliamo di utilizzare sempre la versione più recente di Envoy per garantire che le vulnerabilità di sicurezza note siano mitigate.
Se decidi di eseguire il deployment di Envoy utilizzando uno dei nostri metodi automatici, gestiamo questa attività per te come segue:
Il deployment automatizzato di Envoy con VM di Compute Engine installa la versione di Envoy che abbiamo convalidato per essere compatibile con Cloud Service Mesh. Quando viene creata una nuova VM utilizzando il modello di istanza, la VM riceve la versione più recente che abbiamo convalidato. Se disponi di una VM a lunga esecuzione, puoi utilizzare un aggiornamento in sequenza per sostituire le VM esistenti e scegliere la versione più recente.
Per informazioni su versioni specifiche di Envoy, consulta Cronologia delle versioni. Per informazioni sulle vulnerabilità di sicurezza, consulta Avvertenze sulla sicurezza.
Requisiti aggiuntivi con gRPC senza proxy
Questa sezione descrive requisiti aggiuntivi per l'utilizzo di Cloud Service Mesh con le API di routing dei servizi e gRPC senza proxy. Se esegui il deployment con proxy Envoy, consulta Requisiti aggiuntivi per i proxy Envoy.
Processo complessivo con gRPC senza proxy
Segui questa procedura generale per configurare applicazioni gRPC senza proxy in un mesh di servizi:
- Aggiorna i client gRPC alla versione più recente di gRPC, con la patch più recente.
- Aggiorna lo schema resolver del nome gRPC dei tuoi client quando crei un canale e specifichi un file di bootstrap di Cloud Service Mesh.
- Configura le risorse di Cloud Service Mesh e Cloud Load Balancing.
Questo documento fornisce informazioni per completare i primi due passaggi. Il processo di configurazione da utilizzare per il passaggio 3 dipende dall'utilizzo o meno di VM di Compute Engine o gruppi di endpoint di rete (NEG) di GKE.
Lingue e versioni di gRPC supportati
gRPC è un progetto open source e il relativo supporto per le release è descritto nelle domande frequenti su gRPC. Ti consigliamo di utilizzare la versione più recente di gRPC per garantire che le vulnerabilità di sicurezza note siano mitigate. Ciò garantisce inoltre che le applicazioni abbiano accesso alle funzionalità più recenti supportate da Cloud Service Mesh. Le funzionalità mesh di servizi supportate in varie implementazioni e versioni di gRPC sono elencate su GitHub. Per un elenco dei linguaggi e delle funzionalità gRPC supportate con Cloud Service Mesh e i servizi gRPC senza proxy, consulta Funzionalità di Cloud Service Mesh.
Cloud Service Mesh mantiene la compatibilità con le versioni attuali e supportate di gRPC e si impegna a essere compatibile con le versioni gRPC precedenti a un anno, in conformità ai Termini di servizio di Google Cloud.
Aggiorna i client gRPC
Aggiorna la libreria gRPC nell'applicazione alla versione che supporta le funzionalità richieste. Per maggiori dettagli, consulta la sezione precedente.
Aggiungi il name-resolver xDS come dipendenza dalle applicazioni gRPC. Le sezioni seguenti mostrano i requisiti per linguaggio Java e Go. Per altre lingue non sono previsti requisiti aggiuntivi.
Requisiti Java
In Java, se utilizzi Gradle, aggiungi la dipendenza grpc-xds
al tuo
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 xds Go.
Imposta il resolver dei nomi gRPC per utilizzare xds
Imposta o modifica le tue applicazioni gRPC in modo da utilizzare lo schema di risoluzione dei nomi xds
nell'URI di destinazione, anziché nel DNS o in qualsiasi altro schema di resolver. Per farlo, utilizza il prefisso xds:///
nel nome di destinazione quando crei un canale gRPC.
Il bilanciamento del carico per i client gRPC si basa sul canale.
Includi il nome del servizio utilizzato nell'URI di destinazione nella configurazione di Cloud Service Mesh. Ad esempio, in Java, puoi creare il canale utilizzando questa struttura, in cui il nome del servizio è helloworld
:
ManagedChannelBuilder.forTarget("xds:///helloworld[:PORT_NUMBER]")
Crea e configura un file di bootstrap
Lo schema resolver xds
indica all'applicazione gRPC di connettersi a Cloud Service Mesh per ottenere informazioni di configurazione per il servizio di destinazione. Pertanto, procedi nel seguente modo:
- 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 ottenere 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 la connessione a Cloud Service Mesh deve essere incluso insieme all'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 seguente tabella illustra i campi del file di bootstrap.
Campo | Valore e descrizione |
---|---|
xds_servers |
Un elenco di server xDS. gRPC utilizza solo il primo nell'elenco. |
server_uri |
Specificane 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 di funzionalità supportate dal server, ad esempio supporto 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 Fornisci una stringa univoca come valore di |
metadata |
Informazioni specifiche del server xDS. |
TRAFFICDIRECTOR_MESH_NAME |
Se il campo è vuoto o non specificato, il valore è 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 se stai configurando Cloud Service Mesh con le API di routing dei servizi:
- Configura servizi gRPC senza proxy con una risorsa
Mesh
- Configura proxy Envoy con servizi HTTP
- Configura un gateway in entrata
- Configura i servizi TCP con una risorsa
TCPRoute
- Configura riferimenti tra progetti con
Mesh
eRoute
risorse - Configurare il routing TLS del gateway