Preparati a configurare Traffic Director con i servizi gRPC senza proxy

La configurazione di Traffic Director prevede diverse fasi. Questo documento descrive la prima fase: le istruzioni per preparare la configurazione di Traffic Director con applicazioni gRPC proxyless. Questo documento si applica se utilizzi le API precedenti o le nuove API di routing dei servizi, che sono in anteprima. Le altre fasi sono coperte dalle guide specifiche della piattaforma elencate nella sezione Continuare 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 Traffic Director con le applicazioni gRPC proxyless:

Prerequisiti

Prepara l'ambiente completando le attività seguenti:

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

Le seguenti sezioni forniscono le istruzioni per ogni attività.

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 Traffic Director. Se hai il ruolo di Proprietario o Editor del progetto (roles/owner o roles/editor) nel progetto in cui stai attivando Traffic Director, disponi automaticamente delle autorizzazioni corrette.

In caso contrario, devi disporre di tutti i ruoli IAM mostrati nella tabella seguente. Se disponi di questi ruoli, disponi anche delle relative autorizzazioni, come descritto nella documentazione di Compute Engine IAM.

Attività Ruolo richiesto
Imposta il criterio IAM per un account di servizio. Amministratore account di servizio
(roles/iam.serviceAccountAdmin)
Attiva Traffic Director. Amministratore Service Usage
(roles/serviceusage.serviceUsageAdmin)
Crea 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 istanze. Amministratore istanze Compute
(roles/compute.instanceAdmin)
Creare e modificare un cluster GKE, se utilizzi i pod. Amministratore del 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 l'ambito https://www.googleapis.com/auth/cloud-platform. Per maggiori informazioni, consulta Risoluzione dei problemi di deployment che utilizzano gRPC senza proxy.

Con xDS v3, concedi all'account di servizio utilizzato dai client gRPC di Traffic Director 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 l'API Traffic Director non è presente nell'elenco, significa che non disponi delle autorizzazioni necessarie per abilitare l'API Traffic Director.

  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 Traffic Director, 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 autorizzate in modo adeguato.

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

A seconda della versione del protocollo xDS utilizzata dall'applicazione gRPC, devi disporre delle autorizzazioni seguenti. La versione del protocollo xDS è specificata nel file di bootstrap. Ti consigliamo vivamente di configurare la tua applicazione con xDS v3 o di eseguire la migrazione a xDS v3 se disponi già di una distribuzione che utilizza xDS v2.

  • Quando utilizzi xDS v3, l'account di servizio utilizzato dalle applicazioni gRPC deve avere le autorizzazioni trafficdirector.networks.reportMetrics e trafficdirector.networks.getConfigs. Puoi utilizzare il ruolo client Traffic Director (roles/trafficdirector.client) di IAM, che esegue il wrapping di entrambe le autorizzazioni.

  • Quando utilizzi xDS v2, l'account di servizio utilizzato dalle applicazioni gRPC deve disporre dell'autorizzazione IAM compute.globalForwardingRules.get a livello di progetto. Puoi anche concedere questa autorizzazione assegnando il ruolo Visualizzatore rete Compute (roles/compute.networkViewer) all'account di servizio.

Console

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

    Vai a IAM e amministrazione

  2. Seleziona il progetto.

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

    • Se l'account di servizio non è già nell'elenco Membri, non ha alcun ruolo assegnato. Fai clic su 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, quindi fai clic sulla scheda Ruoli.
  4. Espandi il ruolo. In corrispondenza dell'account di servizio che vuoi modificare, fai clic su Modifica.

  5. Seleziona il ruolo Altro > Client Traffic Director.

  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 all'account di servizio

Quindi, segui questa procedura generale per la configurazione delle applicazioni gRPC proxyless in un mesh di servizi:

  1. Aggiorna i client gRPC alla versione più recente di gRPC, con la patch più recente.
  2. Aggiorna lo schema del resolver dei nomi gRPC dei tuoi client quando crei un canale e specifichi un file di bootstrap di Traffic Director.
  3. Configurare le risorse Traffic Director e Cloud Load Balancing.

Questo documento fornisce le informazioni per completare i primi due passaggi. Il processo di configurazione da utilizzare per il passaggio 3 dipende dall'utilizzo o meno delle VM di Compute Engine o dei gruppi di endpoint di rete (NEG) GKE.

Versioni e linguaggi gRPC supportati

gRPC è un progetto open source e il suo supporto per le release è descritto nelle Domande frequenti su gRPC. Ti consigliamo di utilizzare la versione più recente di gRPC per assicurarti che le vulnerabilità di sicurezza note vengano attenuate. Ciò garantisce inoltre che le applicazioni abbiano accesso alle ultime funzionalità supportate da Traffic Director. Le funzionalità del 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 i servizi Traffic Director e gRPC proxyless, consulta Funzionalità di Traffic Director.

Traffic Director mantiene la compatibilità con le versioni attuali e supportate di gRPC e cerca di essere compatibile con le versioni gRPC precedenti a un anno, ai sensi dei Termini di servizio di Google Cloud Platform.

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 name-resolver xDS come dipendenza alle applicazioni gRPC. I requisiti per i linguaggi Java e Go sono illustrati 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 xds Go.

Imposta il resolver dei nomi gRPC per l'utilizzo di 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 del resolver. A tale scopo, utilizza il prefisso xds:/// nel nome della 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 della configurazione di Traffic Director. Ad esempio, in Java, puoi creare 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 Traffic Director per ottenere le informazioni di configurazione per il servizio di destinazione. Pertanto, segui questi passaggi:

  • Crea un file di bootstrap, come mostrato nell'esempio seguente. Questo file indica a gRPC di connettersi a un server xDS (Traffic Director) per ottenere la configurazione per servizi specifici.
  • Definisci una variabile di ambiente denominata GRPC_XDS_BOOTSTRAP, con il nome file di bootstrap come valore della variabile di ambiente.

Le istruzioni di configurazione contengono esempi che mostrano come generare il file di bootstrap. Per praticità, puoi utilizzare la versione più recente del generatore di bootstrap di Traffic Director gRPC.

Insieme all'applicazione deve essere incluso un file di bootstrap contenente le informazioni necessarie per connettersi a Traffic Director. 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 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 maggiori informazioni su come vengono ottenute le credenziali, consulta la guida introduttiva all'autenticazione.
server_features Un elenco di funzionalità supportate dal server, come il supporto di 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 nell'esempio precedente:


projects/PROJECT_NUMBER/networks/NETWORK_NAME/nodes/ID

Specifica una stringa univoca come valore di ID. Ciò consente di identificare il client gRPC che si connette a Traffic Director.

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: