Modello di deployment di API Gateway
Informazioni sui componenti API
Un'API definita in API Gateway è composta da due componenti principali:
Configurazione API: la configurazione API creata quando carichi una definizione API. Crea la definizione API come specifica OpenAPI. Se la tua API gestisce i servizi gRPC su Cloud Run, puoi definire l'API con una definizione e una configurazione del servizio gRPC.
Ogni volta che carichi una definizione API, API Gateway crea una nuova configurazione API. Ciò significa che puoi creare una configurazione API, ma non puoi modificarla in un secondo momento. Se in un secondo momento modifichi la definizione API nella specifica OpenAPI o nella definizione del servizio gRPC e poi carichi la definizione API modificata, crei una nuova configurazione API.
Gateway: un proxy basato su Envoy, ad alte prestazioni e scalabile che ospita la configurazione API di cui è stato eseguito il deployment. Il deployment di una configurazione API su un gateway crea l'URL esterno che i client API utilizzano per accedere all'API.
La seguente immagine mostra questi componenti:
Informazioni sul deployment della configurazione API su un gateway
Esegui il deployment di una configurazione API su un gateway per rendere la tua API accessibile ai client API:
Un gateway:
Viene eseguito il deployment in una Google Cloud region specifica. Una regione è una regione geografica specifica in Google Cloud cui puoi eseguire il deployment delle risorse.
Deve ospitare una configurazione API. Non puoi creare un gateway vuoto, ovvero senza una configurazione API. Tuttavia, dopo aver creato un gateway, puoi aggiornarlo per sostituire una configurazione API con un'altra.
Può ospitare una sola configurazione API. Non puoi eseguire il deployment di più configurazioni API sullo stesso gateway.
Dopodiché, gestisci separatamente ogni gateway di cui è stato eseguito il deployment. Per ogni gateway, puoi:
- Avviare, arrestare o eliminare il gateway
- Visualizzare log e metriche
- Visualizzare le informazioni di traccia
Scegliere una Google Cloud regione
Il deployment di ogni gateway viene eseguito in una regione geografica specifica region on Google Cloud. API Gateway supporta le seguenti Google Cloud regioni per il deployment:
asia-northeast1australia-southeast1europe-west1europe-west2us-east1us-east4us-central1us-west2us-west3us-west4
Definire l'endpoint della configurazione API di cui è stato eseguito il deployment
Quando esegui il deployment di una configurazione API su un gateway, API Gateway crea un URL univoco per il gateway nel dominio gateway.dev. I client API utilizzano quindi un URL nel seguente formato per accedere alla configurazione API di cui è stato eseguito il deployment:
https://GATEWAY_ID-HASH.REGION_CODE.gateway.dev
dove GATEWAY_ID è il nome del gateway, HASH è il codice hash univoco generato durante il deployment dell'API, e REGION_CODE è il codice della località Cloud in cui hai eseguito il deployment del gateway.
Ad esempio:
my-gateway-a12bcd345e67f89g0h.uc.gateway.dev
Configurare un account di servizio per eseguire il deployment delle configurazioni API
Una configurazione API di cui è stato eseguito il deployment su un gateway viene eseguita con le autorizzazioni associate ai ruoli concessi al service account utilizzato per creare la configurazione API. Pertanto, in genere definisci un account di servizio separato per la creazione delle configurazioni API. A questo account di servizio vengono assegnati solo i ruoli necessari per accedere al servizio di backend. In questo modo, puoi limitare le autorizzazioni associate alla configurazione API.
Oltre ai ruoli necessari per accedere al servizio di backend, al account di servizio devono essere concesse le seguenti autorizzazioni:
L'autorizzazione
iam.serviceAccounts.actAs. Questa autorizzazione è inclusa nel ruolo Utente account di servizio.Le autorizzazioni necessarie per accedere al servizio di backend. Ad esempio, se il backend è implementato come una Cloud Function, al account di servizio deve essere assegnato almeno il ruolo di Invoker di Cloud Functions. Per un backend Cloud Run, il ruolo è Invoker di Cloud Run. Limitando le autorizzazioni associate alla configurazione API, puoi proteggere meglio i sistemi di backend.
Per saperne di più, consulta Configurare l'ambiente di sviluppo.
Informazioni sulla scalabilità a zero
API Gateway è un servizio scalabilità fino a zero. Ciò significa che quando non c'è traffico, tutte le istanze del gateway vengono eliminate. Quando il traffico aumenta, vengono create nuove istanze on demand per gestire il carico. La scalabilità fino a zero è controllata automaticamente Google Cloud; non è necessario configurarla o gestirla.
Utilizzare un bilanciatore del carico
Ogni gateway di cui è stato eseguito il deployment in una regione contiene un bilanciatore del carico integrato per gestire le richieste dei client all'API di cui è stato eseguito il deployment sul gateway. Non è necessario creare un bilanciatore del carico separato per ogni gateway.
Devi creare un bilanciatore del carico quando esegui il deployment della stessa API su gateway che si trovano in regioni diverse. Il bilanciatore del carico indirizza quindi le richieste API alle diverse regioni. Per saperne di più, consulta Eseguire il deployment di un'API in più regioni.
Configurare l'accesso SSL a un'API
API Gateway supporta l'accesso HTTPS a un'API di cui è stato eseguito il deployment su un gateway. Poiché le API vengono sottoposte a deployment nel dominio gateway.dev, Google crea e gestisce il certificato SSL sul bilanciatore del carico integrato con il gateway.
Non devi creare o caricare il tuo certificato.
Configurare un server dei nomi di dominio
Per impostazione predefinita, i client API inviano richieste a un dominio gateway.dev per accedere a un'API di cui è stato eseguito il deployment, come mostrato sopra.
I nomi di dominio personalizzati sono per API Gateway quando vengono utilizzati insieme al bilanciamento del carico HTTP(S) per API GatewayANTEPRIMA. Per personalizzare il nome di dominio, crea un bilanciatore del carico per utilizzare il nome di dominio personalizzato e poi indirizza le richieste al dominio gateway.dev dell'API di cui è stato eseguito il deployment. Per saperne di più, consulta Utilizzare un dominio personalizzato con API Gateway.
Eseguire il deployment di più configurazioni API nella stessa API
Puoi eseguire il deployment di una sola configurazione API su un gateway. Tuttavia, puoi eseguire il deployment di più configurazioni API su più gateway all'interno della stessa API.
Questa sezione descrive due scenari in cui potresti eseguire il deployment di più configurazioni API su più gateway all'interno di una singola API.
Eseguire il deployment delle configurazioni API su più gateway nella stessa regione
Quando creano un'API, gli sviluppatori di API spesso creano ambienti di sviluppo, di gestione temporanea e di produzione, in cui:
- L'ambiente di sviluppo viene utilizzato dagli sviluppatori per creare l'API.
- L'ambiente di gestione temporanea viene utilizzato per testare l'API in preparazione per una release in produzione.
- L'ambiente di produzione è quello in cui i client API esterni possono accedere all'API.
Per supportare questo tipo di ambiente di sviluppo, definisci più configurazioni API. Ad esempio, potresti avere diverse configurazioni API in fase di sviluppo, una configurazione API in fase di test in gestione temporanea e una configurazione API di cui è stato eseguito il deployment in produzione. API Gateway ti consente di creare più configurazioni API all'interno di una singola API e poi di eseguire il deployment di ogni configurazione API su un gateway diverso:
In questo esempio, hai tre configurazioni API diverse: dev, stage e prod. Esegui poi il deployment di ogni configurazione API su un gateway diverso, dove ogni gateway definisce il proprio URL dell'endpoint univoco.
Eseguire il deployment di una configurazione API in più regioni
Spesso esegui il deployment di un'API in più Google Cloud regioni. Il deployment in più regioni offre diversi vantaggi, tra cui una latenza delle richieste ridotta perché le richieste vengono indirizzate a un'API in esecuzione in una regione geograficamente vicina al client e una maggiore affidabilità perché un errore in una regione non influisce sulle API in esecuzione in altre regioni.
Per eseguire il deployment di un'API in più regioni, esegui il deployment di una configurazione API su un gateway in ogni regione. Ogni configurazione API è specifica per la regione di cui è stato eseguito il deployment perché deve fare riferimento al servizio di backend in quella regione.
Nella seguente immagine, le API 1 e 2 vengono sottoposte a deployment in una singola regione e l'API 3 viene sottoposta a deployment in più regioni:
In questo esempio, ogni configurazione API di cui è stato eseguito il deployment su un gateway per l'API 3 ha un endpoint URL univoco, nel formato:
https://my-gateway1-a12bcd345e67f89g0h.uc.gateway.dev https://my-gateway2-b12cde345f67g89h0i.en.gateway.dev https://my-gateway3-c12bde345g67h89i0j.uw.gateway.dev
Configura quindi un bilanciatore del carico utilizzando il bilanciamento del carico HTTP(S) per API GatewayANTEPRIMA per gestire le richieste all'API e inoltrare la richiesta alla regione appropriata. Per saperne di più, consulta Creare deployment multiregionali per API Gateway.
Aggiornare un'API
Puoi aggiornare un'API di cui è stato eseguito il deployment modificando la definizione API nella specifica OpenAPI e poi caricando la specifica. Il caricamento di una nuova specifica crea una nuova configurazione API.
API Gateway supporta un modello di aggiornamento senza tempi di inattività, il che significa che l'API continua a gestire le richieste durante il deployment della configurazione API aggiornata. Tuttavia, durante il deployment della nuova configurazione API, per un periodo di tempo alcune richieste potrebbero essere ancora gestite dalla versione precedente della configurazione API.
Se hai eseguito il deployment della configurazione API in più regioni e gateway, devi eseguire di nuovo il deployment della configurazione API aggiornata in ogni regione separatamente.