Preparati a configurare Cloud Service Mesh con servizi gRPC senza proxy

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, acquisisci familiarità con i seguenti documenti, che forniscono una panoramica sull'utilizzo di Cloud Service Mesh con gRPC senza proxy applicazioni:

Prerequisiti

Prepara l'ambiente completando le seguenti attività:

  1. Attiva la fatturazione.
  2. Concedi le autorizzazioni richieste.
  3. Abilita l'API Traffic Director per il tuo progetto.
  4. Assicurati che l'account di servizio abbia un numero sufficiente di le autorizzazioni 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 maggiori informazioni le informazioni, vedi 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 una VM e modificare una rete per configurare Cloud Service Mesh. 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 hai questi ruoli, hai anche le loro alle autorizzazioni associate, come descritto 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)
Creare reti, subnet e componenti del bilanciatore del carico. Amministratore rete Compute
(roles/compute.networkAdmin)
Aggiungi e rimuovi regole firewall. Amministratore della sicurezza di Compute
(roles/compute.securityAdmin)
Crea istanze. Amministratore di istanze Compute
(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 di Compute Engine devono avere https://www.googleapis.com/auth/cloud-platform l'ambito di attività. Per ulteriori informazioni, consulta Risoluzione dei problemi dei deployment che utilizzano gRPC senza proxy.

Con xDS v3, concedi l'account di servizio utilizzato dai client gRPC di Cloud Service Mesh il ruolo roles/trafficdirector.client.

Abilita l'API Traffic Director

Console

  1. Nella console Google Cloud, vai alla pagina Libreria API relativa al tuo progetto.

    Vai alla libreria API

  2. Nel campo Cerca API e servizi, inserisci Traffic Director.

  3. 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.

  4. Nella pagina API Traffic Director, fai clic su Abilita.

gcloud

Esegui questo comando:

gcloud services enable trafficdirector.googleapis.com

Abilita l'account di servizio per accedere all'API Traffic Director

Quando configuri il piano dati e lo colleghi a Cloud Service Mesh, I client xDS si connettono al server xDS trafficdirector.googleapis.com. 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. È supportato solo xDS v3.

Se utilizzi xDS 2, devi eseguire la migrazione a xDS 3. Per informazioni Per informazioni sulla migrazione, vedi Eseguire la migrazione da xDS v2 a xDS v3.

Quando utilizzi xDS v3, l'account di servizio usato dalle applicazioni gRPC deve hanno i trafficdirector.networks.reportMetrics e Autorizzazioni trafficdirector.networks.getConfigs. Puoi utilizzare il ruolo client Cloud Service Mesh IAM (roles/trafficdirector.client), che racchiude entrambe le autorizzazioni.

Console

  1. Nella console Google Cloud, vai alla pagina IAM e amministrazione.

    Vai a IAM e Amministratore

  2. Seleziona il progetto.

  3. 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 Add (Aggiungi) e inserisci l'indirizzo email dell'account di servizio.
    • Se l'account di servizio è già nell'elenco Membri, ha ruoli esistenti. Seleziona l'account di servizio e poi fai clic sulla scheda Ruoli.
  4. Espandi il ruolo. Per l'account di servizio che vuoi modificare, fai clic su Modifica.

  5. Seleziona il ruolo Altro > Client Cloud Service Mesh.

  6. 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: inserisci gcloud config get-value project
  • SERVICE_ACCOUNT_EMAIL: l'indirizzo email associato al account di servizio

A questo punto, segui questa procedura generale per configurare le applicazioni gRPC proxyless in un mesh di servizi:

  1. Aggiorna i client gRPC alla versione più recente di gRPC, con la versione una nuova patch.
  2. Aggiorna i prodotti o servizi dei tuoi clienti Schema del resolver del nome gRPC quando crei un canale per specificare un file di bootstrap di Cloud Service Mesh.
  3. Configura le risorse Cloud Service Mesh e Cloud Load Balancing.

Questo documento fornisce informazioni per completare i primi due passaggi. La di configurazione di rete che usi per il passaggio 3 dipende dal fatto che le tue il deployment usa VM di Compute Engine oppure Gruppi di endpoint di rete (NEG) GKE.

Lingue e versioni di gRPC supportati

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. La funzionalità mesh di servizi supportate in varie implementazioni e versioni Le 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 attuali e supportate dei gRPC e si impegna a essere compatibile con le versioni gRPC in meno di un anno precedenti, soggetti 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. 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 build.gradle file. Sostituisci LATEST_GRPC_VERSION con l'ultima versione 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 per utilizzare lo schema di risoluzione dei nomi xds in l'URI di destinazione, invece di DNS o di qualsiasi altro schema di resolver. Per farlo, usa il prefisso xds:/// nel nome target 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, crei 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 del resolver xds indica all'applicazione gRPC di connettersi a Cloud Service Mesh per ottenere informazioni di configurazione per il target completamente gestito di Google Cloud. Pertanto, svolgi i seguenti passaggi:

  • Crea un file di bootstrap, come mostrato nell'esempio seguente. Questo file indica gRPC per 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 praticità, 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 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 di funzionalità supportate dal server, ad esempio Supporto per xDS v3. Il valore predefinito è vuoto.
node Informazioni sul client che si connette al server xDS.
id

id deve essere nel seguente formato come mostrato in dell'esempio precedente:

projects/PROJECT_NUMBER/networks/NETWORK_NAME/nodes/ID

Fornisci una stringa univoca come valore di ID. In questo modo è possibile identificare il client gRPC che si connette a Cloud Service Mesh.

metadata Informazioni specifiche del server xDS.
TRAFFICDIRECTOR_NETWORK_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: