Dopo aver creato un servizio o una funzione, Cloud Run ti fornisce un endpoint HTTPS per il servizio. Puoi abilitare l'esecuzione del servizio in risposta alle richieste HTTPS.
Tutti i servizi Cloud Run hanno un URL HTTPS stabile, che rappresenta il default endpoint HTTPS per il servizio, anche se puoi configurare domini personalizzati anche.
Alcuni dei casi d'uso includono i seguenti:
- API web RESTful personalizzata
- Microservizio privato
- Middleware HTTP o proxy inverso per le applicazioni web
- Applicazione web preconfigurata
Creare servizi pubblici
La creazione di un servizio pubblico su Cloud Run richiede quanto segue:
- Accesso al servizio da internet pubblico
- Un URL destinato all'uso pubblico
Per rendere pubblico un servizio, impostalo in modo da consentire l'accesso non autenticato (pubblico).
URL del servizio
Cloud Run assegna un URL non deterministico basato su hash a tutti i servizi. Se la lunghezza del nome del servizio lo consente, Cloud Run assegna anche un URL deterministico al servizio.
Puoi disattivare questi URL run.app predefiniti.
Puoi recuperare l'URL del servizio facendo clic sul nome del servizio nella Google Cloud console o eseguendo il seguente comando in gcloud CLI:
gcloud run services describe SERVICE --format 'value(status.url)'
L'URL deterministico ha la priorità quando viene visualizzato.
Se il servizio Cloud Run è stato creato come una
funzione con l'API Cloud Functions v2, al servizio
viene assegnato anche un
cloudfunctions.net URL.
URL deterministico
L'URL deterministico ti consente di prevedere l'URL del servizio prima della creazione del servizio, il che può essere utile per la comunicazione da servizio a servizio.
L'URL deterministico è disponibile solo per i segmenti DNS di 63 caratteri o meno. Il segmento DNS contiene il nome del servizio, il numero di progetto e qualsiasi tag o tag di traffico.
L'URL deterministico per un servizio Cloud Run ha il seguente formato:
https://[TAG---]SERVICE_NAME-PROJECT_NUMBER.REGION.run.app
dove:
- TAG è il tag di traffico facoltativo per la revisione che stai richiedendo.
- PROJECT_NUMBER è il Google Cloud numero di progetto.
- SERVICE_NAME è il nome del servizio Cloud Run.
- REGION è il nome della regione, ad esempio
europe-west1.
URL non deterministico
Gli URL non deterministici non hanno un formato deterministico, il che significa che, poiché il secondo campo dell'URL è un hash casuale, non puoi prevedere quale sarà l'URL completo prima di eseguire il deployment dei servizi. Tuttavia, dopo il deployment del servizio, l'URL rimane stabile.
L'URL non deterministico per un servizio Cloud Run ha il formato
https://[TAG---]SERVICE_IDENTIFIER.run.app,
dove TAG si riferisce al tag di traffico facoltativo per la revisione che stai
richiedendo e SERVICE_IDENTIFIER è un identificatore stabile e univoco
per un servizio Cloud Run. Non analizzare il
SERVICE_IDENTIFIER perché non ha un formato fisso e la
logica per la generazione SERVICE_IDENTIFIER è soggetta a modifiche.
Visualizzazione progressiva risposte
Cloud Run supporta la visualizzazione progressiva delle risposte HTTP.
Non è richiesta alcuna configurazione per abilitare la funzionalità.
Il server deve rispondere con un'intestazione della risposta Transfer-Encoding: chunked.
Reindirizzamento da HTTP a HTTPS
Cloud Run reindirizza tutte le richieste HTTP a HTTPS, ma termina TLS prima che raggiungano il tuo servizio web. Se il tuo servizio genera risorse web
che fanno riferimento ad altre risorse web con URL non protetti (http://), la tua pagina
potrebbe essere soggetta ad avvisi o errori di contenuti misti.
Utilizza il protocollo https per tutti gli URI web di riferimento o tieni conto delle direttive proxy nella richiesta HTTP, ad esempio l'intestazione HTTP X-Forwarded-Proto.
HTTP e HTTP/2
Per impostazione predefinita, Cloud Run esegue il downgrade delle richieste HTTP/2 a HTTP/1 quando queste richieste vengono inviate al container. Se vuoi impostare esplicitamente il tuo servizio in modo che utilizzi HTTP/2 end-to-end, consulta Utilizzare HTTP/2.
Creare servizi privati
La creazione di un servizio privato su Cloud Run richiede di limitare l'accesso al servizio sfruttando l'autorizzazione IAM invoker.
Puoi anche limitare l'accesso a un servizio utilizzando un meccanismo di autorizzazione e autenticazione a livello di applicazione, ad esempio utilizzando Identity Platform.
Testare i servizi privati
Il modo più semplice per testare i servizi privati è utilizzare il
proxy Cloud Run in Google Cloud CLI.
Questo proxy il servizio privato su http://localhost:8080 (o sulla porta specificata con --port), fornendo il token dell'account attivo o un altro token specificato.
In questo modo puoi utilizzare un browser web o uno strumento come curl.
Questo è il modo consigliato per testare privatamente un sito web o un'API nel browser.
Puoi eseguire il proxy di un servizio in locale utilizzando la seguente riga di comando in un ambiente Linux, macOS, WSL (preferito), o cygwin environment:
gcloud run services proxy SERVICE --project PROJECT-ID
Puoi anche testare i servizi privati senza il proxy utilizzando uno strumento come curl, passando un token di autenticazione nell'intestazione Authorization:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL
Servizio privato a servizio
Un servizio Cloud Run può chiamare un altro servizio Cloud Run servizio con l'autenticazione da servizio a servizio.
Codice campione che richiama un servizio privato
Per esempi di codice che mostrano come ottenere un token ID ed effettuare una richiesta HTTP a un servizio privato, consulta l'argomento Autenticazione da servizio a servizio.
Utilizzare un middleware per migliorare il servizio
I proxy HTTPS possono scaricare funzionalità comuni da un servizio HTTP, come la memorizzazione nella cache, la convalida delle richieste o l'autorizzazione. Per i microservizi, molti proxy HTTP fanno parte di una soluzione API Gateway o di una mesh di servizi come Istio.
Google Cloud I prodotti che puoi utilizzare per migliorare il tuo servizio Cloud Run includono:
API Gateway, che puoi utilizzare per creare, proteggere e monitorare le API da utilizzare come proxy per altri servizi Cloud Run.
Firebase Hosting, che puoi utilizzare per creare un frontend di applicazioni web da utilizzare con Cloud Run come backend dinamico.