Dopo aver creato un servizio o una funzione, Cloud Run fornisce un endpoint HTTPS per il servizio. Puoi attivare l'esecuzione del servizio in risposta alle richieste HTTPS.
Tutti i servizi Cloud Run hanno un URL HTTPS stabile, che rappresenta l'endpoint HTTPS predefinito per il servizio, anche se puoi anche configurare domini personalizzati.
Ecco alcuni casi d'uso:
- API web RESTful personalizzata
- Microservizio privato
- Middleware HTTP o proxy inverso per le applicazioni web
- Applicazione web pre-confezionata
Creare servizi pubblici
La creazione di un servizio pubblico su Cloud Run richiede quanto segue:
- Accesso al servizio dalla rete internet pubblica
- Un URL destinato all'uso pubblico
Per rendere pubblico un servizio, impostalo in modo da consentire l'accesso non autenticato (pubblico) al momento del deploy o in qualsiasi momento dopo il deployment.
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 al servizio anche un URL deterministico.
Puoi disattivare questi URL run.app
predefiniti.
Puoi recuperare l'URL del servizio facendo clic sul nome del servizio nella console Google Cloud o eseguendo il seguente comando nella gcloud CLI:
gcloud run services describe SERVICE --format 'value(status.url)'
L'URL deterministico ha la priorità quando viene visualizzato.
URL deterministico
L'URL deterministico ti consente di prevedere l'URL del servizio prima che il servizio venga creato, il che può essere utile per la comunicazione tra servizi.
L'URL deterministico è disponibile solo per i segmenti DNS di massimo 63 caratteri. Il segmento DNS contiene il nome del servizio, il numero del progetto e eventuali tag o tag di traffico.
L'URL deterministico di 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 numero del progetto Google Cloud.
- SERVICE_NAME è il nome del servizio Cloud Run.
- REGION è il nome della regione, ad esempio
us-central1
.
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 implementare i servizi. Tuttavia, dopo aver eseguito il deployment del servizio, l'URL rimane stabile.
L'URL non deterministico di un servizio Cloud Run ha il formato
https://[
TAG---]
SERVICE_IDENTIFIER.run.app
,
dove TAG fa riferimento al tag di traffico facoltativo per la revisione che
richiedi e SERVICE_IDENTIFIER è un identificatore stabile e univoco per un servizio Cloud Run. Non analizzare il valore SERVICE_IDENTIFIER perché non ha un formato fisso e la logica per la generazione di SERVICE_IDENTIFIER è soggetta a modifiche.
Reindirizzamento da HTTP a HTTPS
Cloud Run reindirizza tutte le richieste HTTP a HTTPS, ma termina il protocollo TLS prima che raggiungano il servizio web. Se il tuo servizio genera risorse web che fanno riferimento ad altre risorse web con URL non sicuri (http://
), la tua pagina potrebbe essere soggetta ad avvisi o errori relativi a contenuti misti.
Utilizza il protocollo https
per tutti gli URI web di riferimento o per le direttive proxy dell'account 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 vengono inviate al contenitore. Se vuoi impostare esplicitamente il tuo servizio per utilizzare HTTP/2 end-to-end, consulta Utilizzo di HTTP/2.
Creare servizi privati
La creazione di un servizio privato su Cloud Run richiede di limitare l'accesso al servizio sfruttando l'autorizzazione invocatore IAM.
Puoi anche limitare l'accesso a un servizio utilizzando il meccanismo di autenticazione e autorizzazione 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.
In questo modo, il servizio privato viene eseguito in proxy 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 in privato un sito web o un'API nel browser.
Puoi eseguire il proxy di un servizio localmente utilizzando la seguente riga di comando in un ambiente Linux, macOS, WSL (opzione preferita) o cygwin:
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
Da servizio privato a servizio privato
Un servizio Cloud Run può chiamare un altro servizio Cloud Run con l'autenticazione di servizio a servizio.
Codice di esempio 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 di servizio a servizio.
Utilizzo di un middleware per migliorare il servizio
I proxy HTTPS possono scaricare le 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 un mesh di servizi come Istio.
I prodotti Google Cloud 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 dell'applicazione web da utilizzare con Cloud Run come backend dinamico.
Richiamare una funzione con una richiesta HTTPS
Per impostazione predefinita, tutte le funzioni create in Cloud Run hanno un URL run.app
HTTPS, che può essere utilizzato per attivare una funzione. Le funzioni create con un trigger Eventarc avranno anche un URL HTTPS, a meno che non disattivi questa opzione utilizzando la funzionalità di disattivazione dell'URL run.app
.