Preparati a configurare API di routing dei servizi con Envoy e carichi di lavoro senza proxy

Questo documento fornisce informazioni sulle attività preliminari per configurare 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 prevede diverse fasi. Questo documento descrive la prima fase: istruzioni per la preparazione alla configurazione di Cloud Service Mesh con istanze VM o applicazioni gRPC senza proxy. Le fasi aggiuntive sono trattate dalle guide specifiche per piattaforma elencate in Continuare la procedura di configurazione più avanti in questo documento.

Prima di leggere questa guida, acquisisci familiarità con i seguenti documenti, che offrono una panoramica dell'utilizzo di Cloud Service Mesh con le API di routing dei servizi e le API gateway:

Prerequisiti

Prepara l'ambiente completando le seguenti attività:

  1. Configura i progetti in base alle esigenze della tua azienda.
  2. Abilita la fatturazione.
  3. Concedi le autorizzazioni richieste.
  4. Abilita l'API Traffic Director e altre API per il tuo progetto.
  5. Assicurati che l'account di servizio disponga delle autorizzazioni sufficienti per accedere all'API Traffic Director.
  6. Abilita l'API Cloud DNS e configura Cloud DNS.

Le sezioni seguenti forniscono istruzioni per ogni attività.

Configura i progetti

Per configurare e gestire i progetti, consulta Creazione e gestione dei 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 Identity and Access Management (IAM) sufficienti per creare istanze VM e modificare una rete al fine di configurare Cloud Service Mesh. Se hai il 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, 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)
Abilita Cloud Service Mesh. 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)
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 relativi ai deployment che utilizzano gRPC senza proxy.

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

Quando configuri il piano dati e lo connetti a Cloud Service Mesh, i tuoi client xDS, che si tratti di proxy Envoy o client gRPC senza proxy, si connettono al server xDS di 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 corretto.

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, utilizza le seguenti istruzioni.

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à presente nell'elenco Membri, non avrà alcun ruolo assegnato. Fai clic su Aggiungi e inserisci l'indirizzo email dell'account di servizio.
    • Se l'account di servizio è già presente nell'elenco Membri, significa che dispone già di ruoli. 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 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 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

  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 elencata, significa che non disponi delle autorizzazioni necessarie per abilitare l'API Traffic Director.

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

  5. Nel campo Cerca API e servizi, inserisci OS Config.

  6. Nell'elenco dei risultati di ricerca, fai clic su OS Config (Configurazione sistema operativo). Se non vedi l'API OS Config elencata, significa che non disponi delle autorizzazioni necessarie per abilitare l'API Traffic Director.

  7. Nella pagina API OS Config, fai clic su Abilita.

  8. Nel campo Cerca API e servizi, inserisci Compute.

  9. Nell'elenco dei risultati di ricerca, fai clic su API Compute Engine. Se l'API Compute Engine non è elencata, significa che non disponi delle autorizzazioni necessarie per abilitare l'API Compute Engine.

  10. Nella pagina API Compute Engine, fai clic su Abilita.

  11. Nel campo Cerca API e servizi, inserisci Network Services.

  12. 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 abilitarla.

  13. 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 API del piano di controllo xDS.

Requisiti aggiuntivi per i proxy Envoy

Questa sezione descrive i 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 senza proxy, consulta Requisiti aggiuntivi con gRPC senza proxy.

Modalità di installazione di Envoy

Durante il processo di deployment di Cloud Service Mesh, crei un modello di VM che installa automaticamente Envoy sulle VM in cui vengono eseguite le tue applicazioni.

Informazioni sulle versioni di Envoy

Envoy deve essere versione 1.20.0 o successiva per poter funzionare con Cloud Service Mesh. Consigliamo di utilizzare sempre la versione più recente di Envoy per garantire che le vulnerabilità di sicurezza note vengano ridotte.

Se decidi di eseguire il deployment di Envoy utilizzando uno dei nostri metodi automatici, gestiamo questa attività per te nel seguente modo:

Il deployment automatizzato di Envoy con VM di Compute Engine installa la versione Envoy che abbiamo convalidato per funzionare 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 hai una VM a lunga esecuzione, puoi utilizzare un aggiornamento in sequenza per sostituire le VM esistenti e recuperare la versione più recente.

Per informazioni su versioni specifiche di Envoy, consulta Cronologia delle versioni. Per informazioni sulle vulnerabilità di sicurezza, consulta gli avvisi sulla sicurezza.

Requisiti aggiuntivi con gRPC senza proxy

In questa sezione vengono descritti i 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, vedi Requisiti aggiuntivi per i proxy Envoy.

Processo complessivo con gRPC senza proxy

Segui questa procedura generale per configurare le applicazioni gRPC senza proxy in un mesh di servizi:

  1. Aggiorna i client gRPC alla versione più recente di gRPC, con la patch più recente.
  2. Aggiornare lo schema del resolver del nome gRPC dei client quando crei un canale e specifichi un file di bootstrap di Cloud Service Mesh.
  3. Configurare 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 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 relativo supporto delle 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 vengano ridotte. Ciò garantisce inoltre che le applicazioni abbiano accesso alle funzionalità più recenti supportate da Cloud Service Mesh. 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 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 risalenti a meno di un anno fa, 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à che ti servono. 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 indicati 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 nome gRPC in modo che utilizzi xds

Imposta o modifica le tue 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. Per farlo, utilizza il prefisso xds:/// nel nome della destinazione quando crei un canale gRPC. Il bilanciamento del carico per i client gRPC viene eseguito a livello di 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 del resolver xds indica all'applicazione gRPC di connettersi al mesh di servizi Cloud per ottenere 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 (Cloud Service Mesh) 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 comodità, puoi utilizzare la versione più recente del generatore di bootstrap gRPC Cloud Service Mesh.

Insieme all'applicazione deve essere incluso un file di bootstrap contenente le informazioni necessarie per connettersi a Cloud Service Mesh. 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 spiega i campi presenti nel 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 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 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 Cloud Service Mesh.

metadata Informazioni specifiche per il server xDS.
TRAFFICDIRECTOR_MESH_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 se stai configurando Cloud Service Mesh con le API di routing dei servizi: