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 prepararsi a configurare Cloud Service Mesh con applicazioni gRPC senza proxy. 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 trattate nelle guide specifiche per 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 dell'utilizzo di Cloud Service Mesh con applicazioni gRPC senza proxy:

Prerequisiti

Prepara l'ambiente completando le seguenti attività:

  1. Abilita la fatturazione.
  2. Concedi le autorizzazioni richieste.
  3. Abilita l'API Traffic Director per il tuo progetto.
  4. Assicurati che il account di servizio disponga delle autorizzazioni necessarie per accedere all'API Traffic Director.

Le sezioni seguenti forniscono le istruzioni per ogni attività.

Abilita fatturazione

Verifica che la fatturazione sia abilitata per il tuo progetto Google Cloud . Per saperne di più, consulta Abilitare, disabilitare 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 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 mostrati 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. Service Usage Admin
(roles/serviceusage.serviceUsageAdmin)
Crea reti, subnet e componenti del bilanciatore del carico. Compute Network Admin
(roles/compute.networkAdmin)
Aggiungere e rimuovere regole firewall. Compute Security Admin
(roles/compute.securityAdmin)
Crea istanze. Compute Instance Admin
(roles/compute.instanceAdmin)
Crea e modifica un cluster GKE, se utilizzi i pod. Cluster Admin
(roles/container.clusterAdmin)
Consente l'accesso agli account di servizio. Service Account User
(roles/iam.serviceAccountUser

Le VM Compute Engine devono avere l'ambito https://www.googleapis.com/auth/cloud-platform. Per saperne di più, consulta Risoluzione dei problemi dei deployment che utilizzano gRPC senza proxy.

Con xDS v3, concedi all'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 del 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 elencata, 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

Abilitare il account di servizio per accedere all'API Traffic Director

Quando configuri il data plane e lo connetti a Cloud Service Mesh, i client xDS si connettono al server xDS trafficdirector.googleapis.com. Questi client xDS presentano un'identità delaccount di serviziot al server xDS per garantire che le comunicazioni tra il piano dati e il piano di controllo siano autorizzate correttamente.

Per una VM Compute Engine, il client xDS utilizza il account di servizio assegnato alla VM.

Devi avere le seguenti autorizzazioni. La versione del protocollo xDS è specificata nel file di bootstrap. È supportato solo xDS v3.

Se utilizzi xDS v2, devi eseguire la migrazione a xDS v3. Per informazioni su come eseguire la migrazione, vedi Eseguire la migrazione da xDS v2 a xDS v3.

Quando utilizzi xDS v3, il account di servizio utilizzato dalle tue applicazioni gRPC deve disporre delle autorizzazioni trafficdirector.networks.reportMetrics e trafficdirector.networks.getConfigs. Puoi utilizzare il ruolo IAM Client Traffic Director (roles/trafficdirector.client), che include entrambe le autorizzazioni.

Console

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

    Vai a IAM e amministrazione

  2. Seleziona il progetto.

  3. Identifica il account di servizio a cui vuoi aggiungere un ruolo:

    • Se il account di servizio non è già presente nell'elenco Membri, non ha ruoli assegnati. Fai clic su Aggiungi e inserisci l'indirizzo email delaccount di serviziot.
    • Se il account di servizio è già presente nell'elenco Membri, dispone di ruoli esistenti. Seleziona il account di servizio e poi fai clic sulla scheda Ruoli.
  4. Espandi il ruolo. Per il account di servizio che vuoi modificare, fai clic su Modifica.

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

  6. Per applicare il ruolo al 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

Successivamente, segui questa procedura generale per configurare le applicazioni gRPC senza proxy in unmesh di servizih:

  1. Aggiorna i client gRPC all'ultima versione di gRPC, con la patch più recente.
  2. Aggiorna lo schema di risoluzione dei nomi gRPC dei client quando crei un canale e specifica 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 procedura di configurazione che utilizzi 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 per le release è descritto nelle domande frequenti su gRPC. Ti consigliamo di utilizzare la versione più recente di gRPC per garantire la mitigazione delle vulnerabilità di sicurezza note. 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 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 di gRPC meno recenti di un anno, in base ai Google Cloud Termini di servizio della piattaforma.

Aggiornare i client gRPC

Aggiorna la libreria gRPC nella tua applicazione alla versione che supporta le funzionalità che ti servono. Per maggiori dettagli, consulta la sezione precedente.

Aggiungi il resolver di 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 l'ultima versione 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 l'ultima versione 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 resolver dei nomi gRPC in modo che utilizzi xds

Imposta o modifica le tue applicazioni gRPC in modo che utilizzino lo schema di risoluzione del nome xds nell'URI di destinazione, anziché DNS o qualsiasi altro schema di risoluzione. A questo scopo, utilizza il prefisso xds:/// nel nome di destinazione 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 di destinazione 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, procedi nel seguente modo:

  • Crea un file 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 bootstrap come valore della variabile di ambiente.

Le istruzioni di configurazione contengono esempi che mostrano come generare il file bootstrap. Per comodità, puoi utilizzare l'ultima versione del generatore di bootstrap gRPC di Cloud Service Mesh.

Un file bootstrap contenente le informazioni necessarie per connettersi a Cloud Service Mesh deve essere incluso insieme all'applicazione. Un file 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 descrive i campi del file bootstrap.

Campo Valore e descrizione
xds_servers Un elenco di server xDS. gRPC utilizza solo il primo dell'elenco.
server_uri Specifica almeno un server. 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 Come funzionano le credenziali predefinite dell'applicazione.
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

id deve avere il seguente formato, come mostrato nell'esempio precedente:

projects/PROJECT_NUMBER/networks/NETWORK_NAME/nodes/ID

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

metadata Informazioni specifiche per il 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: