Questa pagina descrive come eseguire il deployment di immagini container in un nuovo servizio Cloud Run o in una nuova revisione di un servizio Cloud Run esistente.
L'immagine del container viene importata da Cloud Run al momento del deployment. Cloud Run conserva questa copia dell'immagine container finché viene utilizzata da una revisione di pubblicazione. Le immagini container non vengono estratte dal loro repository quando viene avviata una nuova istanza Cloud Run.
Per una procedura dettagliata di esempio per il deployment di un nuovo servizio, consulta la guida rapida per il deployment di un container di esempio.
Prima di iniziare
Se il tuo progetto è soggetto a un criterio dell'organizzazione che limita le invocazioni non autenticate, dovrai accedere al servizio di cui è stato eseguito il deployment come descritto in Testare i servizi privati.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per eseguire il deployment dei servizi Cloud Run, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Cloud Run Developer (
roles/run.developer
) nel servizio Cloud Run -
Utente account di servizio (
roles/iam.serviceAccountUser
) nell'identità di servizio -
Artifact Registry Reader (
roles/artifactregistry.reader
) nel repository Artifact Registry dell'immagine container di cui è stato eseguito il deployment (se applicabile)
Per un elenco dei ruoli e delle autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM di Cloud Run e Autorizzazioni IAM di Cloud Run. Se il servizio Cloud Run interagisce con le API Google Cloud, come le librerie client di Cloud, consulta la guida alla configurazione dell'identità del servizio. Per ulteriori informazioni sulla concessione dei ruoli, consulta le autorizzazioni di deployment e gestisci l'accesso.
Immagini e registry dei container supportati
Puoi utilizzare direttamente le immagini container archiviate in Artifact Registry o Docker Hub. Google consiglia di utilizzare Artifact Registry.
Puoi utilizzare immagini container di altri registri pubblici o privati (come JFrog Artifactory, Nexus o GitHub Container Registry) configurando un repository remoto Artifact Registry.
Ti consigliamo di utilizzare Docker Hub solo per il deployment di immagini container popolari come le immagini ufficiali Docker o le immagini OSS sponsorizzate da Docker. Per una maggiore disponibilità, Google consiglia di eseguire il deployment di queste immagini di Docker Hub tramite un repository remoto Artifact Registry.
Deployment di un nuovo servizio
Puoi specificare un'immagine container con un tag
(ad esempio us-docker.pkg.dev/my-project/container/my-image:latest
) o con un digest esatto
(ad esempio us-docker.pkg.dev/my-project/container/my-image@sha256:41f34ab970ee...
).
Eseguendo il deployment in un servizio per la prima volta viene creata la prima revisione. Tieni presente che le revisioni sono immutabili. Se esegui il deployment dal tag di un'immagine container, verrà risolto in un digest e la revisione gestirà sempre questo particolare digest.
Fai clic sulla scheda per visualizzare le istruzioni per utilizzare lo strumento che preferisci.
Console
Per eseguire il deployment di un'immagine container:
Nella console Google Cloud, vai alla pagina Cloud Run:
Fai clic su Esegui il deployment del container e seleziona Servizio per visualizzare il modulo Crea servizio.
Nel modulo, seleziona l'opzione di implementazione:
Se vuoi eseguire il deployment manuale di un container, seleziona Esegui il deployment di una revisione da un'immagine container esistente e specifica l'immagine container.
Se vuoi automatizzare il deployment continuo, seleziona Esegui il deployment continuo di nuove revisioni da un repository di origine e segui le istruzioni per i deployment continui.
Inserisci il nome del servizio necessario. I nomi dei servizi devono avere una lunghezza massima di 49 caratteri e devono essere univoci per regione e progetto. Il nome di un servizio non può essere modificato in un secondo momento ed è visibile pubblicamente.
Seleziona la regione in cui vuoi che si trovi il servizio. Il selettore di regioni indica il livello di prezzo, la disponibilità delle mappature dei domini e mette in evidenza le regioni con l'impatto più basso sulle emissioni di carbonio.
Imposta allocazione e prezzi della CPU in base alle esigenze.
In Scalabilità automatica, specifica le istanze minima e massima.
Imposta le impostazioni di Ingresso nel formo in base alle esigenze.
In Autenticazione, configura quanto segue:
- Se stai creando un'API o un sito web pubblici, seleziona Consenti chiamate non autenticate. Se selezioni questa opzione, viene assegnato il ruolo Invoker IAM all'identificatore speciale
allUser
. Puoi utilizzare IAM per modificare questa impostazione in un secondo momento dopo aver creato il servizio. - Se vuoi un servizio sicuro protetto dall'autenticazione, seleziona Richiedi autenticazione.
- Se stai creando un'API o un sito web pubblici, seleziona Consenti chiamate non autenticate. Se selezioni questa opzione, viene assegnato il ruolo Invoker IAM all'identificatore speciale
Fai clic su Container, volumi, networking, sicurezza per impostare altre impostazioni facoltative nelle schede appropriate:
Al termine della configurazione del servizio, fai clic su Crea per eseguire il deployment dell'immagine in Cloud Run e attendi il completamento del deployment.
Fai clic sul link dell'URL visualizzato per aprire l'endpoint unico e stabile del servizio di cui è stato eseguito il deployment.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Per eseguire il deployment di un'immagine container:
Esegui questo comando:
gcloud run deploy SERVICE --image IMAGE_URL
- Sostituisci SERVICE con il nome del servizio in cui vuoi eseguire il deployment. I nomi dei servizi devono avere una lunghezza massima di 49 caratteri e devono essere univoci per regione e progetto. Se il servizio non esiste ancora, questo comando lo crea durante il deployment. Puoi omettere del tutto questo parametro, ma se lo fai ti verrà chiesto il nome del servizio.
- Sostituisci IMAGE_URL con un riferimento all'immagine del container, ad esempio
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. Tieni presente che se non fornisci il flag--image
, il comando di deployment tenterà di eseguire il deployment dal codice sorgente.
Se stai creando un'API o un sito web pubblico, consenti le chiamate non autenticate del tuo servizio utilizzando il flag
--allow-unauthenticated
. In questo modo, viene assegnato il ruolo IAM Invoker di Cloud Run aallUsers
. Puoi anche specificare--no-allow-unauthenticated
per disattivare le chiamate non autenticate. Se ometti uno di questi parametri, ti verrà chiesto di confermare quando viene eseguito il comandodeploy
.Attendi il completamento del deployment. Al termine dell'operazione, viene visualizzato un messaggio di esito positivo insieme all'URL del servizio di cui è stato eseguito il deployment.
Tieni presente che per eseguire il deployment in una posizione diversa da quella impostata utilizzando le proprietà
run/region
gcloud
, utilizza:gcloud run deploy SERVICE --region REGION
YAML
Puoi memorizzare la specifica del servizio in un file YAML
e poi eseguire il deployment utilizzando gcloud CLI.
Crea un nuovo file
service.yaml
con i seguenti contenuti:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: containers: - image: IMAGE
Sostituisci
- SERVICE con il nome del servizio Cloud Run. I nomi dei servizi devono avere una lunghezza massima di 49 caratteri e devono essere univoci per regione e progetto.
- IMAGE con l'URL dell'immagine del container.
Puoi anche specificare ulteriori configurazioni, ad esempio variabili di ambiente o limiti di memoria.
Esegui il deployment del nuovo servizio utilizzando il seguente comando:
gcloud run services replace service.yaml
Se vuoi consentire l'accesso non autenticato al servizio, rendilo pubblico.
Cloud Code
Per eseguire il deployment con Cloud Code, leggi le guide per IntelliJ e Visual Studio Code.
Terraform
Se utilizzi Terraform,
definisci il servizio in una configurazione Terraform utilizzando la risorsa
google_cloud_run_v2_service
del provider Google Cloud.
Crea un nuovo file
main.tf
con i seguenti contenuti:provider "google" { project = "PROJECT-ID" } resource "google_cloud_run_v2_service" "default" { name = "SERVICE" location = "REGION" client = "terraform" template { containers { image = "IMAGE" } } } resource "google_cloud_run_v2_service_iam_member" "noauth" { location = google_cloud_run_v2_service.default.location name = google_cloud_run_v2_service.default.name role = "roles/run.invoker" member = "allUsers" }
Sostituisci
- PROJECT-ID con l'ID progetto Google Cloud
- REGION con la regione Google Cloud
- SERVICE con il nome del servizio Cloud Run. I nomi dei servizi devono avere una lunghezza massima di 49 caratteri e devono essere univoci per regione e progetto.
- IMAGE_URL con un riferimento all'immagine del container, ad esempio
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
Questa configurazione consente l'accesso pubblico (l'equivalente di
--allow-unauthenticated
). Per rendere privato il servizio, rimuovi la stanzagoogle_cloud_run_v2_service_iam_member
.Inizializza Terraform:
terraform init
Applica la configurazione Terraform:
terraform apply
Conferma di voler applicare le azioni descritte inserendo
yes
.
Librerie client
Per eseguire il deployment di un nuovo servizio dal codice:
API REST
Per eseguire il deployment di un nuovo servizio, invia una richiesta HTTP POST
all'endpoint service
dell'API Cloud Run Admin.
Ad esempio, utilizzando curl
:
curl -H "Content-Type: application/json" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -X POST \ -d '{template: {containers: [{image: "IMAGE_URL"}]}}' \ https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services?serviceId=SERVICE
Sostituisci:
- ACCESS_TOKEN con un token di accesso valido per un account che possiede le autorizzazioni IAM per il deployment dei servizi.
Ad esempio, se hai eseguito l'accesso a gcloud, puoi recuperare un
token di accesso utilizzando
gcloud auth print-access-token
. All'interno di un'istanza del contenitore Cloud Run, puoi recuperare un token di accesso utilizzando il server di metadati dell'istanza del contenitore. - IMAGE_URL con un riferimento all'immagine del container, ad esempio
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - SERVICE con il nome del servizio in cui vuoi eseguire il deployment. I nomi dei servizi devono avere una lunghezza massima di 49 caratteri e devono essere univoci per regione e progetto.
- REGION con la regione Google Cloud del servizio.
- PROJECT-ID con l'ID progetto Google Cloud.
Località Cloud Run
Cloud Run è un servizio a livello di regione, il che significa che l'infrastruttura che gestisce i tuoi servizi Cloud Run si trova in una regione specifica ed è gestita da Google in modo da essere disponibile in modo ridondante in tutte le zone all'interno della regione.
La soddisfazione dei requisiti di latenza, disponibilità o durabilità è uno dei fattori principali per la selezione della regione in cui vengono eseguiti i servizi Cloud Run.
In genere puoi selezionare la regione più vicina ai tuoi utenti, ma devi prendere in considerazione la posizione degli altri prodotti Google Cloud utilizzati dal servizio Cloud Run.
L'utilizzo combinato dei prodotti Google Cloud in più località può influire sulla latenza e sul costo del servizio.
Cloud Run è disponibile nelle seguenti regioni:
Soggetto ai prezzi di Livello 1
asia-east1
(Taiwan)asia-northeast1
(Tokyo)asia-northeast2
(Osaka)asia-south1
(Mumbai, India)europe-north1
(Finlandia) Bassi livelli di CO2europe-southwest1
(Madrid) Basso livello di CO2europe-west1
(Belgio) Bassi livelli di CO2europe-west4
(Paesi Bassi) Bassi livelli di CO2europe-west8
(Milano)europe-west9
(Parigi) Bassi livelli di CO2me-west1
(Tel Aviv)us-central1
(Iowa) Bassi livelli di CO2us-east1
(Carolina del Sud)us-east4
(Virginia del Nord)us-east5
(Columbus)us-south1
(Dallas) Bassi livelli di CO2us-west1
(Oregon) Bassi livelli di CO2
Soggetto ai prezzi di Livello 2
africa-south1
(Johannesburg)asia-east2
(Hong Kong)asia-northeast3
(Seul, Corea del Sud)asia-southeast1
(Singapore)asia-southeast2
(Giacarta)asia-south2
(Delhi, India)australia-southeast1
(Sydney)australia-southeast2
(Melbourne)europe-central2
(Varsavia, Polonia)europe-west10
(Berlino) Bassi livelli di CO2europe-west12
(Torino)europe-west2
(Londra, Regno Unito) Bassi livelli di CO2europe-west3
(Francoforte, Germania) Bassi livelli di CO2europe-west6
(Zurigo, Svizzera) Bassi livelli di CO2me-central1
(Doha)me-central2
(Dammam)northamerica-northeast1
(Montreal) Bassi livelli di CO2northamerica-northeast2
(Toronto) Bassi livelli di CO2southamerica-east1
(San Paolo, Brasile) Bassi livelli di CO2southamerica-west1
(Santiago, Cile) Bassi livelli di CO2us-west2
(Los Angeles)us-west3
(Salt Lake City)us-west4
(Las Vegas)
Se hai già creato un servizio Cloud Run, puoi visualizzare la regione nella dashboard di Cloud Run nella console Google Cloud.
Eseguire il deployment di una nuova revisione di un servizio esistente
Puoi eseguire il deployment di una nuova revisione utilizzando la console Google Cloud, la gcloud
riga di comando o un file di configurazione YAML.
Tieni presente che la modifica di qualsiasi impostazione di configurazione comporta la creazione di una nuova revisione, anche se l'immagine del contenitore non viene modificata. Ogni revisione creata è immutabile.
L'immagine del container viene importata da Cloud Run al momento del deployment. Cloud Run conserva questa copia dell'immagine container finché viene utilizzata da una revisione di pubblicazione.
Fai clic sulla scheda per le istruzioni relative allo strumento che preferisci.
Console
Per eseguire il deployment di una nuova revisione di un servizio esistente:
Nella console Google Cloud, vai alla pagina Cloud Run:
Individua il servizio che vuoi aggiornare nell'elenco dei servizi e fai clic per aprire i relativi dettagli.
Fai clic su Modifica ed esegui il deployment di una nuova revisione per visualizzare il modulo di deployment della revisione.
Se necessario, fornisci l'URL della nuova immagine del container di cui vuoi eseguire il deployment.
Configura il contenitore in base alle esigenze.
Imposta allocazione e prezzi della CPU in base alle esigenze.
In Capacità, specifica i limiti di memoria e i limiti di CPU.
Specifica il timeout della richiesta e la contemporaneità in base alle esigenze.
Specifica l'ambiente di esecuzione se necessario.
In Scalabilità automatica, specifica le istanze minima e massima.
Utilizza le altre schede in base alle tue esigenze per configurare facoltativamente:
Per inviare tutto il traffico alla nuova revisione, seleziona Pubblica questa revisione immediatamente. Per implementare gradualmente una nuova revisione, deseleziona questa casella di controllo. Il risultato è un deployment in cui non viene inviato alcun traffico alla nuova revisione. Segui le istruzioni per gli implementazioni graduali dopo il deployment.
Fai clic su Esegui il deployment e attendi il completamento del deployment.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Per eseguire il deployment di un'immagine container:
Esegui il comando:
gcloud run deploy SERVICE --image IMAGE_URL
- Sostituisci SERVICE con il nome del servizio in cui stai eseguendo il deployment. Puoi omettere del tutto questo parametro, ma se lo fai ti verrà richiesto il nome del servizio.
- Sostituisci IMAGE_URL con un riferimento all'immagine del container, ad esempio
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
Il suffisso della revisione viene assegnato automaticamente alle nuove revisioni. Se vuoi fornire il tuo suffisso di revisione, utilizza il parametro --revision-suffix dell'interfaccia a riga di comando gcloud CLI.
Attendi il completamento del deployment. Al termine dell'operazione, viene visualizzato un messaggio di esito positivo insieme all'URL del servizio di cui è stato eseguito il deployment.
YAML
Se devi scaricare o visualizzare la configurazione di un servizio esistente, utilizza il seguente comando per salvare i risultati in un file YAML:
gcloud run services describe SERVICE --format export > service.yaml
Da un file YAML di configurazione del servizio, modifica gli eventuali attributi figli spec.template
in base alle esigenze per aggiornare le impostazioni di revisione, quindi esegui il deployment della nuova revisione:
gcloud run services replace service.yaml
Cloud Code
Per eseguire il deployment di una nuova revisione di un servizio esistente con Cloud Code, leggi le guide per IntelliJ e Visual Studio Code.
Terraform
Assicurati di aver configurato Terraform come descritto nell'esempio Eseguire il deployment di un nuovo servizio.
Apporta una modifica al file di configurazione.
Applica la configurazione Terraform:
terraform apply
Conferma di voler applicare le azioni descritte inserendo
yes
.
Librerie client
Per eseguire il deployment di una nuova revisione dal codice:
API REST
Per eseguire il deployment di una nuova revisione, invia una richiesta HTTP PATCH
all'endpoint service
dell'API Cloud Run Admin.
Ad esempio, utilizzando curl
:
curl -H "Content-Type: application/json" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -X PATCH \ -d '{template: {containers: [{image: "IMAGE_URL"}]}}' \ https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services/SERVICE
Sostituisci:
- ACCESS_TOKEN con un token di accesso valido per un account che possiede le autorizzazioni IAM per eseguire il deployment delle revisioni.
Ad esempio, se hai eseguito l'accesso a gcloud, puoi recuperare un
token di accesso utilizzando
gcloud auth print-access-token
. All'interno di un'istanza del contenitore Cloud Run, puoi recuperare un token di accesso utilizzando il server di metadati dell'istanza del contenitore. - IMAGE_URL con un riferimento all'immagine del container, ad esempio
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - SERVICE con il nome del servizio in cui stai eseguendo il deployment.
- REGION con la regione Google Cloud del servizio.
- PROJECT-ID con l'ID progetto Google Cloud.
Località Cloud Run
Cloud Run è un servizio a livello di regione, il che significa che l'infrastruttura che gestisce i tuoi servizi Cloud Run si trova in una regione specifica ed è gestita da Google in modo da essere disponibile in modo ridondante in tutte le zone all'interno della regione.
Soddisfare i requisiti di latenza, disponibilità o durabilità è uno dei fattori principali per selezionare la regione in cui vengono eseguiti i servizi Cloud Run.
In genere puoi selezionare la regione più vicina ai tuoi utenti, ma devi prendere in considerazione la posizione degli altri prodotti Google Cloud utilizzati dal servizio Cloud Run.
L'utilizzo combinato dei prodotti Google Cloud in più località può influire sulla latenza e sul costo del servizio.
Cloud Run è disponibile nelle seguenti regioni:
Soggetto ai prezzi di Livello 1
asia-east1
(Taiwan)asia-northeast1
(Tokyo)asia-northeast2
(Osaka)asia-south1
(Mumbai, India)europe-north1
(Finlandia) Bassi livelli di CO2europe-southwest1
(Madrid) Basso livello di CO2europe-west1
(Belgio) Bassi livelli di CO2europe-west4
(Paesi Bassi) Bassi livelli di CO2europe-west8
(Milano)europe-west9
(Parigi) Bassi livelli di CO2me-west1
(Tel Aviv)us-central1
(Iowa) Bassi livelli di CO2us-east1
(Carolina del Sud)us-east4
(Virginia del Nord)us-east5
(Columbus)us-south1
(Dallas) Bassi livelli di CO2us-west1
(Oregon) Bassi livelli di CO2
Soggetto ai prezzi di Livello 2
africa-south1
(Johannesburg)asia-east2
(Hong Kong)asia-northeast3
(Seul, Corea del Sud)asia-southeast1
(Singapore)asia-southeast2
(Giacarta)asia-south2
(Delhi, India)australia-southeast1
(Sydney)australia-southeast2
(Melbourne)europe-central2
(Varsavia, Polonia)europe-west10
(Berlino) Bassi livelli di CO2europe-west12
(Torino)europe-west2
(Londra, Regno Unito) Bassi livelli di CO2europe-west3
(Francoforte, Germania) Bassi livelli di CO2europe-west6
(Zurigo, Svizzera) Bassi livelli di CO2me-central1
(Doha)me-central2
(Dammam)northamerica-northeast1
(Montreal) Bassi livelli di CO2northamerica-northeast2
(Toronto) Bassi livelli di CO2southamerica-east1
(San Paolo, Brasile) Bassi livelli di CO2southamerica-west1
(Santiago, Cile) Bassi livelli di CO2us-west2
(Los Angeles)us-west3
(Salt Lake City)us-west4
(Las Vegas)
Se hai già creato un servizio Cloud Run, puoi visualizzare la regione nella dashboard di Cloud Run nella console Google Cloud.
Eseguire il deployment di immagini da altri progetti Google Cloud
Puoi eseguire il deployment di immagini contenitore da altri progetti Google Cloud se impostato le autorizzazioni IAM corrette:
Nella console Google Cloud, apri il progetto per il servizio Cloud Run.
Seleziona Includi concessioni di ruoli fornite da Google.
Copia l'indirizzo email dell'agente di servizio Cloud Run. Ha il suffisso @serverless-robot-prod.iam.gserviceaccount.com
Apri il progetto proprietario del registry dei contenitori che vuoi utilizzare.
Fai clic su Aggiungi per aggiungere una nuova entità.
Nel campo Nuove entità, incolla l'indirizzo email dell'account di servizio che hai copiato in precedenza.
Nel menu a discesa Seleziona un ruolo, se utilizzi Container Registry, seleziona il ruolo Storage -> Visualizzatore oggetti Storage. Se utilizzi Artifact Registry, seleziona il ruolo Artifact Registry -> Lettore di Artifact Registry.
Esegui il deployment dell'immagine container nel progetto che contiene il tuo servizio Cloud Run.
Deployment di immagini da altri registry
Per eseguire il deployment di immagini container pubbliche o private non archiviate in Artifact Registry o Docker Hub, configura un repository remoto Artifact Registry.
I repository remoti di Artifact Registry ti consentono di:
- Esegui il deployment di qualsiasi immagine container pubblica, ad esempio GitHub Container Registry (
ghcr.io
). - Esegui il deployment di immagini container da repository privati che richiedono l'autenticazione, ad esempio JFrog Artifactory o Nexus.
In alternativa, se non puoi utilizzare un repository remoto Artifact Registry, puoi eseguire temporaneamente il pull e il push delle immagini container in Artifact Registry utilizzando docker push
per eseguirne il deployment in Cloud Run.
L'immagine del container viene importata da Cloud Run al momento del deployment, quindi dopo il deployment puoi eliminare l'immagine da Artifact Registry.
Eseguire il deployment di più container in un servizio (sidecar)
In un deployment di Cloud Run con sidecar, è presente un container ingress che gestisce tutte le richieste HTTPS in entrata sulla porta del container specificata e uno o più container sidecar. I sidecar non possono ascoltare le richieste HTTP in arrivo sulla porta del container di ingresso, ma possono comunicare tra loro e con il container di ingresso utilizzando una porta localhost. La porta localhost utilizzata varía a seconda dei container in uso.
Nel seguente diagramma, il contenitore di ingresso comunica con il sidecar utilizzando localhost:5000
.
Puoi eseguire il deployment di un massimo di 10 container per istanza, incluso il container di ingresso. Tutti i container all'interno di un'istanza condividono lo stesso spazio dei nomi di rete e possono anche condividere file utilizzando un volume condiviso in memoria, come mostrato nel diagramma.
Puoi eseguire il deployment di più contenitori nell'ambiente di esecuzione di prima o seconda generazione.
Per impostazione predefinita, la CPU viene allocata ai sidecar solo quando l'istanza elabora almeno una richiesta. Se vuoi che il sidecar possa utilizzare la CPU al di fuori dell'elaborazione delle richieste (ad esempio per la raccolta delle metriche), configura il servizio in modo che la CPU sia sempre allocata. Per ulteriori informazioni, consulta Allocazione della CPU (servizi).
Puoi richiedere che tutti i deployment utilizzino un sidecar specifico creando criteri dell'organizzazione personalizzati.
Casi d'uso
I casi d'uso dei sidecar in un servizio Cloud Run includono:
- Monitoraggio, logging e tracciamento delle applicazioni
- Utilizzo di Nginx, Envoy o Apache2 come proxy davanti al container dell'applicazione
- Aggiunta di filtri di autenticazione e autorizzazione (ad esempio Open Policy Agent)
- Eseguire proxy di connessione in uscita come il proxy di autenticazione AlloyDB
Eseguire il deployment di un servizio con container secondari
Puoi eseguire il deployment di più sidecar in un servizio Cloud Run utilizzando la console Google Cloud, Google Cloud CLI, YAML o Terraform.
Fai clic sulla scheda per le istruzioni relative allo strumento che preferisci.
Console
Nella console Google Cloud, vai alla pagina Cloud Run:
- Per eseguire il deployment in un servizio esistente, individualo nell'elenco dei servizi, fai clic per aprirlo e poi fai clic su MODIFICA E Esegui il deployment della NUOVA REVISIONE per visualizzare il modulo di deployment della revisione.
- Fai clic su Esegui il deployment del container e seleziona Servizio per visualizzare il modulo Crea servizio.
Per un nuovo servizio:
- Fornisci il nome del servizio e l'URL dell'immagine del container di ingresso di cui vuoi eseguire il deployment.
- Fai clic su Container, volumi, networking, sicurezza.
Nella scheda Modifica contenitore, configura il contenitore di ingresso in base alle esigenze.
Fai clic su Aggiungi contenitore e configura un contenitore sidecar da aggiungere al contenitore di importazione. Se il sidecar dipende da un altro contenitore nel servizio, indicalo nel menu a discesa Ordine di avvio del contenitore. Ripeti questo passaggio per ogni contenitore sidecar di cui stai eseguendo il deployment.
Per inviare tutto il traffico alla nuova revisione, seleziona Pubblica questa revisione immediatamente. Per un implementazione graduale, deseleziona la casella di controllo. Il risultato è un deployment in cui non viene inviato traffico alla nuova revisione. Segui le istruzioni per le implementazioni graduali dopo il deployment.
Fai clic su Crea per un nuovo servizio o su Esegui il deployment per un servizio esistente, quindi attendi il completamento del deployment.
gcloud
I parametri container
in Google Cloud CLI sono in anteprima.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Per eseguire il deployment di più contenitori in un servizio, esegui il comando seguente:
gcloud run deploy SERVICE \ --container INGRESS_CONTAINER_NAME \ --image='INGRESS_IMAGE' \ --port='CONTAINER_PORT' \ --container SIDECAR_CONTAINER_NAME \ --image='SIDECAR_IMAGE'
Sostituisci:
- SERVICE con il nome del servizio in cui stai eseguendo il deployment. Puoi omettere del tutto questo parametro, ma se lo fai ti verrà richiesto il nome del servizio.
- INGRESS_CONTAINER_NAME con un nome per il contenitore
che riceve le richieste, ad esempio
app
. - INGRESS_IMAGE con un riferimento all'immagine del contenitore che deve ricevere le richieste, ad esempio
us-docker.pkg.dev/cloudrun/container/hello:latest
. - CONTAINER_PORT con la porta in cui il contenitore in entrata è in ascolto per le richieste in arrivo. A differenza di un servizio con un solo contenitore, per un servizio contenente sidecar non esiste una porta predefinita per il contenitore di ingresso. Devi configurare esplicitamente la porta del contenitore per il contenitore di ingresso e solo un contenitore può avere la porta esposta.
- SIDECAR_CONTAINER_NAME con un nome per il contenitore sidecar, ad esempio
sidecar
. - SIDECAR_IMAGE con un riferimento all'immagine del container sidecar
Se vuoi configurare ogni contenitore nel comando di deployment, specifica la configurazione di ciascun contenitore dopo i parametri
container
, ad esempio:gcloud run deploy SERVICE \ --container CONTAINER_1_NAME \ --image='INGRESS_IMAGE' \ --set-env-vars=KEY=VALUE \ --port='CONTAINER_PORT' \ --container SIDECAR_CONTAINER_NAME \ --image='SIDECAR_IMAGE' \ --set-env-vars=KEY_N=VALUE_N
Attendi il completamento del deployment. Al termine dell'operazione, viene visualizzato un messaggio di operazione riuscita insieme all'URL del servizio di cui è stato eseguito il deployment.
YAML
Queste istruzioni mostrano un file YAML di base per il servizio Cloud Run con sidecar.
Crea un file denominato service.yaml
e aggiungi quanto segue:
apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: name: SERVICE spec: template: spec: containers: - image: INGRESS_IMAGE ports: - containerPort: CONTAINER_PORT - image: SIDECAR_IMAGE
Sostituisci
- SERVICE con il nome del servizio Cloud Run. I nomi dei servizi devono contenere al massimo 49 caratteri.
- CONTAINER_PORT con la porta in cui il contenitore in entrata è in ascolto per le richieste in arrivo. A differenza di un servizio con un solo contenitore, per un servizio contenente sidecar non esiste una porta predefinita per il contenitore di ingresso. Devi configurare esplicitamente la porta del contenitore per il contenitore di ingresso e solo un contenitore può avere la porta esposta.
- INGRESS_IMAGE con un riferimento all'immagine del contenitore che deve ricevere le richieste, ad esempio
us-docker.pkg.dev/cloudrun/container/hello:latest
. - SIDECAR_IMAGE con un riferimento all'immagine del contenitore secondario. Puoi specificare più sidecar aggiungendo altri elementi all'array
containers
nel file YAML.
Dopo aver aggiornato il file YAML per includere i container ingress e sidecar, esegui il deployment su Cloud Run utilizzando il comando:
gcloud run services replace service.yaml
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Aggiungi quanto segue a una risorsa google_cloud_run_v2_service
nella configurazione Terraform.
resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
ingress = "INGRESS_TRAFFIC_ALL"
template {
containers {
name = "INGRESS_CONTAINER_NAME"
ports {
container_port = CONTAINER_PORT
}
image = "INGRESS_IMAGE"
depends_on = ["SIDECAR_CONTAINER_NAME"]
}
containers {
name = "SIDECAR_CONTAINER_NAME"
image = "SIDECAR_IMAGE"
}
}
}
CONTAINER_PORT rappresenta la porta su cui il container di ingresso rimane in ascolto per le richieste in arrivo. A differenza di un servizio con un solo contenitore, per un servizio contenente sidecar non esiste una porta predefinita per il contenitore di ingresso. Devi configurare esplicitamente la porta del contenitore per il contenitore di ingresso e solo un contenitore può avere la porta esposta.
Funzionalità principali disponibili per i deployment con sidecar
Puoi specificare l'ordine di avvio dei container all'interno di un deployment con più container, se hai dipendenze che richiedono l'avvio di alcuni container prima di altri nel deployment.
Se hai contenitori che dipendono da altri contenitori, devi utilizzare healthchecks nel tuo deployment. Se utilizzi i controlli di integrità, Cloud Run segue l'ordine di avvio dei container e ne controlla l'integrità, assicurandosi che ognuno superi il controllo prima di avviare il container successivo nell'ordine. Se non utilizzi i controlli di integrità, i container integri verranno avviati anche se i container di cui dipendono non sono in esecuzione.
Più container all'interno di un'unica istanza possono accedere a un volume in memoria condiviso, accessibile a ogni container utilizzando i punti di montaggio che crei.
Passaggi successivi
Dopo aver eseguito il deployment di un nuovo servizio, puoi:
- Implementazioni graduali, revisioni del rollback, migrazione del traffico
- Visualizzare i log di servizio
- Monitorare il rendimento dei servizi
- Impostare limiti di memoria
- Imposta le variabili di ambiente
- Modificare la concorrenza del servizio
- Gestire il servizio
- Gestire le revisioni del servizio
- Esempio di sidecar OpenTelemetry di Cloud Run
- Esegui il deployment solo di immagini attendibili con l'Autorizzazione binaria (anteprima)
Puoi automatizzare le build e i deployment dei tuoi servizi Cloud Run utilizzando i trigger di Cloud Build:
Puoi anche utilizzare Cloud Deploy per configurare una pipeline di distribuzione continua per eseguire il deployment dei servizi Cloud Run in più ambienti: