Deployment in Cloud Run

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questa pagina descrive come eseguire il deployment delle immagini container in un nuovo servizio Cloud Run o in una nuova revisione di un servizio Cloud Run esistente.

Prima di iniziare

Se hai applicato un criterio dell'organizzazione relativo alla limitazione del dominio che limita le chiamate non autenticate del tuo progetto, dovrai accedere al servizio di cui hai eseguito il deployment, come descritto nella sezione Test dei servizi privati.

Autorizzazioni necessarie per il deployment

Devi avere UNO dei seguenti elementi:

  • Proprietario
  • Editor
  • Entrambi i ruoli Amministratore Cloud Run e Utente account di servizio
  • Qualsiasi ruolo personalizzato che includa questo elenco specifico di autorizzazioni

Registry e immagini container supportati

Puoi utilizzare le immagini container archiviate in Artifact Registry, Container Registry o Docker Hub. Google consiglia di utilizzare Artifact Registry.

Puoi utilizzare solo i seguenti tipi di immagini container:

Se archivi immagini container in un altro tipo di Container Registry, segui le istruzioni riportate nella sezione Deployment di immagini da registri non supportati.

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 un digest esatto (ad esempio us-docker.pkg.dev/my-project/container/my-image@sha256:41f34ab970ee...).

Il deployment in un servizio per la prima volta crea la sua prima revisione. Tieni presente che le revisioni sono immutabili. Se esegui il deployment da un tag immagine container, verrà risolto in un digest e la revisione pubblicherà sempre questo specifico digest.

Puoi eseguire il deployment di un container utilizzando la console Google Cloud, la riga di comando gcloud o da un file di configurazione YAML.

Fai clic sulla scheda per istruzioni utilizzando lo strumento che preferisci.

Console

Per eseguire il deployment di un'immagine container:

  1. Vai a Cloud Run

  2. Fai clic su Crea servizio per visualizzare il modulo Crea servizio.

    1. Nel modulo, seleziona l'opzione di deployment:

      1. 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.

      2. 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.

    2. Inserisci il nome del servizio che preferisci. I nomi dei servizi non devono superare i 49 caratteri e devono essere univoci per area geografica e progetto. Il nome di un servizio non può essere modificato in un secondo momento ed è visibile pubblicamente.

    3. Seleziona la regione in cui vuoi trovare il servizio. Il selettore della regione indica il livello di prezzo, la disponibilità delle mappature dei domini ed evidenzia le regioni con l'impatto ambientale più basso.

    4. Imposta Allocazione e prezzi della CPU come preferisci.

    5. In Scalabilità automatica, specifica le istanze minimo e massimo.

    6. Configura le impostazioni di In entrata nel formato che preferisci.

    7. In Autenticazione,

      • Se stai creando un'API o un sito web pubblici, seleziona Consenti chiamate non autenticate. La selezione di questo ruolo assegna il ruolo Invoker IAM all'identificatore speciale allUser. Puoi utilizzare IAM per modificare questa impostazione dopo aver creato il servizio.
      • Se vuoi un servizio sicuro protetto da autenticazione, seleziona Richiedi autenticazione.
  3. Fai clic su Container, Networking, Security per configurare altre impostazioni facoltative nelle schede appropriate:

  4. Al termine della configurazione del servizio, fai clic su Crea per eseguire il deployment dell'immagine in Cloud Run e attendere il completamento del deployment.

  5. Fai clic sul link URL visualizzato per aprire l'endpoint univoco e stabile del servizio di cui hai eseguito il deployment.

Riga di comando

  1. In Google Cloud Console, attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore di Google Cloud Console, viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.

  2. Per eseguire il deployment di un'immagine container:

    1. Esegui il 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 non devono superare i 49 caratteri e devono essere univoci per area geografica e progetto. Se il servizio non esiste ancora, questo comando crea il servizio durante il deployment. Puoi omettere completamente questo parametro, ma ti verrà richiesto il nome del servizio se lo ometti.
      • Sostituisci IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. 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 pubblici, puoi consentire le chiamate non autenticate del servizio utilizzando il flag --allow-unauthenticated. Questo assegna il ruolo IAM Invoker di Cloud Run a allUsers. Puoi anche specificare --no-allow-unauthenticated in modo da non consentire chiamate non autenticate. Se ometti uno di questi flag, ti verrà chiesto di confermare quando viene eseguito il comando deploy.

    2. Attendi il completamento del deployment. Una volta completata correttamente, viene visualizzato un messaggio di operazione riuscita insieme all'URL del servizio di cui è stato eseguito il deployment.

    Tieni presente che per eseguire il deployment in una località diversa da quella che hai impostato tramite le proprietà run/region gcloud, utilizza:

    • gcloud run deploy SERVICE --region REGION

YAML

Puoi archiviare la specifica del servizio in un file YAML, quindi eseguirne il deployment utilizzando l'interfaccia a riga di comando gcloud.

  1. Crea un nuovo file service.yaml con questi contenuti:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - image: IMAGE

    Sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run. I nomi dei servizi non devono superare i 49 caratteri e devono essere univoci per area geografica e progetto.
    • IMAGE con l'URL dell'immagine container.

    Puoi anche specificare più configurazioni, ad esempio variabili di ambiente o limiti di memoria.

  2. Esegui il deployment del nuovo servizio utilizzando questo comando:

    gcloud run services replace service.yaml
  3. (Facoltativo) Rendi pubblico il servizio se vuoi consentire l'accesso non autenticato al servizio.

Cloud Code

Per il deployment con Cloud Code, leggi le guide IntelliJ e Visual Studio Code.

Terraform

Se utilizzi Terraform, puoi definire il tuo servizio in una configurazione Terraform utilizzando la risorsa google_cloud_run_service del provider di Google Cloud Platform.

  1. Crea un nuovo file main.tf con questi contenuti:

    provider "google" {
        project = "PROJECT-ID"
    }
    
    resource "google_cloud_run_service" "default" {
        name     = "SERVICE"
        location = "REGION"
    
        metadata {
          annotations = {
            "run.googleapis.com/client-name" = "terraform"
          }
        }
    
        template {
          spec {
            containers {
              image = "IMAGE"
            }
          }
        }
     }
    
     data "google_iam_policy" "noauth" {
       binding {
         role = "roles/run.invoker"
         members = ["allUsers"]
       }
     }
    
     resource "google_cloud_run_service_iam_policy" "noauth" {
       location    = google_cloud_run_service.default.location
       project     = google_cloud_run_service.default.project
       service     = google_cloud_run_service.default.name
    
       policy_data = data.google_iam_policy.noauth.policy_data
    }
    

    Sostituisci

    • PROJECT-ID con l'ID progetto Google Cloud
    • REGION con la regione Google Cloud
    • SERVICE con il nome del tuo servizio Cloud Run. I nomi dei servizi non devono superare i 49 caratteri e devono essere univoci per area geografica e progetto.
    • IMAGE con l'URL dell'immagine container.

    La configurazione riportata sopra consente l'accesso pubblico (l'equivalente di --allow-unauthenticated). Per rendere privato il servizio, rimuovi le intestazioni google_iam_policy e google_cloud_run_service_iam_policy.

  2. Inizializza Terraform:

    terraform init
  3. Applica la configurazione Terraform:

    terraform apply

    Conferma di voler applicare le azioni descritte inserendo yes.

Località di Cloud Run

Cloud Run è a livello di regione, il che significa che l'infrastruttura che esegue i servizi Cloud Run si trova in una regione specifica ed è gestita da Google per la ridondanza disponibile in tutte le zone all'interno della regione.

Soddisfare i requisiti di latenza, disponibilità o durabilità sono fattori principali per la selezione della regione in cui vengono eseguiti i servizi Cloud Run. In genere, puoi selezionare l'area geografica più vicina ai tuoi utenti, ma prendere in considerazione la località degli altri prodotti Google Cloud utilizzati dal servizio Cloud Run. L'utilizzo combinato dei prodotti Google Cloud in più località può incidere sulla latenza e sui costi dei tuoi servizi.

Cloud Run è disponibile nelle seguenti regioni:

Soggetto ai prezzi di Livello 1

  • asia-east1 (Taiwan)
  • asia-northeast1 (Tokyo)
  • asia-northeast2 (Osaka)
  • europe-north1 (Finlandia) icona Fogliolina Bassi livelli di CO2
  • europe-southwest1 (Madrid) icona Fogliolina CO basso2
  • europe-west1 (Belgio) icona Fogliolina Bassa CO2
  • europe-west4 (Paesi Bassi)
  • europe-west8 (Milano)
  • europe-west9 (Parigi) icona Fogliolina Bassa CO2
  • me-west1 (Tel Aviv)
  • us-central1 (Iowa) icona Fogliolina CO basso2
  • us-east1 (Carolina del Sud)
  • us-east4 (Virginia del Nord)
  • us-east5 (Columbus)
  • us-south1 (Dallas)
  • us-west1 (Oregon) icona Fogliolina Bassi livelli di CO2

Soggetto ai prezzi di Livello 2

  • asia-east2 (Hong Kong)
  • asia-northeast3 (Seul, Corea del Sud)
  • asia-southeast1 (Singapore)
  • asia-southeast2 (Giacarta)
  • asia-south1 (Mumbai, India)
  • asia-south2 (Delhi, India)
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne)
  • europe-central2 (Varsavia, Polonia)
  • europe-west2 (Londra, Regno Unito)
  • europe-west3 (Francoforte, Germania)
  • europe-west6 (Zurigo, Svizzera) icona Fogliolina Basso contenuto di CO2
  • northamerica-northeast1 (Montreal) icona Fogliolina Bassa CO2
  • northamerica-northeast2 (Toronto) icona Fogliolina Basso CO2
  • southamerica-east1 (San Paolo, Brasile) icona Fogliolina Bassa CO2
  • southamerica-west1 (Santiago, Cile)
  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

Se hai già creato un servizio Cloud Run, puoi visualizzare l'area geografica nella dashboard di Cloud Run nella console Google Cloud.

Per impostazione predefinita, l'agente di servizio Cloud Run deve essere in grado di accedere al container di cui è stato eseguito il deployment.

Ogni servizio ha un URL univoco e permanente che non cambia nel tempo man mano che eseguirai il deployment di nuove revisioni.

Deployment di una nuova revisione di un servizio esistente

Puoi eseguire il deployment di una nuova revisione utilizzando la console Google Cloud, la riga di comando gcloud 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 container non cambia. Ogni revisione creata è immutabile.

Fai clic sulla scheda per istruzioni utilizzando lo strumento che preferisci.

Console

Per eseguire il deployment di una nuova revisione di un servizio esistente:

  1. Vai a Cloud Run

  2. Individua il servizio che vuoi aggiornare nell'elenco dei servizi e fai clic sul servizio per aprirne i dettagli.

  3. Fai clic su MODIFICA E DEPLOY NEW REVISION per visualizzare il modulo di deployment della revisione.

    1. Se necessario, fornisci l'URL alla nuova immagine container di cui vuoi eseguire il deployment.

    2. Configura il contenitore in base alle tue esigenze.

    3. Imposta l'allocazione e i prezzi della CPU in base alle tue esigenze.

    4. Nella sezione Capacità, specifica i limiti di memoria e i limiti della CPU.

    5. Specifica il timeout della richiesta e la contemporaneità in base alle tue esigenze.

    6. Specifica l'ambiente di esecuzione in base alle tue esigenze.

    7. In Scalabilità automatica, specifica le istanze minimo e massimo.

    8. Se necessario, utilizza le altre schede per configurare:

  4. Per inviare tutto il traffico alla nuova revisione, seleziona la casella di controllo Pubblica questa revisione immediatamente. Per implementare gradualmente una nuova revisione, 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.

  5. Fai clic su ESEGUI IL DEPLOYMENT e attendi il completamento del deployment.

Riga di comando

  1. In Google Cloud Console, attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore di Google Cloud Console, viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.

  2. Per eseguire il deployment di un'immagine container:

    1. 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 completamente questo parametro, ma ti verrà richiesto il nome del servizio se lo ometti.
      • Sostituisci IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest.

      Il suffisso della revisione viene assegnato automaticamente per le nuove revisioni. Se vuoi fornire il tuo suffisso di revisione, utilizza il parametro dell'interfaccia a riga di comando gcloud --revision-suffix.

    2. Attendi il completamento del deployment. Una volta completata correttamente, viene visualizzato un messaggio di operazione riuscita insieme all'URL del servizio di cui è stato eseguito il deployment.

YAML

Se devi scaricare o visualizzare la configurazione di un servizio esistente, usa 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 di un servizio, modifica gli attributi secondari spec.template come preferisci per aggiornare le impostazioni di revisione, quindi eseguire 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 IntelliJ e Visual Studio Code.

Terraform

Dovrai già aver configurato Terraform come da esempio di deployment di un nuovo servizio.

  1. Apporta una modifica al file di configurazione.

  2. Applica la configurazione Terraform:

    terraform apply

    Conferma di voler applicare le azioni descritte inserendo yes.

Località di Cloud Run

Cloud Run è a livello di regione, il che significa che l'infrastruttura che esegue i servizi Cloud Run si trova in una regione specifica ed è gestita da Google per la ridondanza disponibile in tutte le zone all'interno della regione.

Soddisfare i requisiti di latenza, disponibilità o durabilità sono fattori principali per la selezione della regione in cui vengono eseguiti i servizi Cloud Run. In genere, puoi selezionare l'area geografica più vicina ai tuoi utenti, ma prendere in considerazione la località degli altri prodotti Google Cloud utilizzati dal servizio Cloud Run. L'utilizzo combinato dei prodotti Google Cloud in più località può incidere sulla latenza e sui costi dei tuoi servizi.

Cloud Run è disponibile nelle seguenti regioni:

Soggetto ai prezzi di Livello 1

  • asia-east1 (Taiwan)
  • asia-northeast1 (Tokyo)
  • asia-northeast2 (Osaka)
  • europe-north1 (Finlandia) icona Fogliolina Bassi livelli di CO2
  • europe-southwest1 (Madrid) icona Fogliolina CO basso2
  • europe-west1 (Belgio) icona Fogliolina Bassa CO2
  • europe-west4 (Paesi Bassi)
  • europe-west8 (Milano)
  • europe-west9 (Parigi) icona Fogliolina Bassa CO2
  • me-west1 (Tel Aviv)
  • us-central1 (Iowa) icona Fogliolina CO basso2
  • us-east1 (Carolina del Sud)
  • us-east4 (Virginia del Nord)
  • us-east5 (Columbus)
  • us-south1 (Dallas)
  • us-west1 (Oregon) icona Fogliolina Bassi livelli di CO2

Soggetto ai prezzi di Livello 2

  • asia-east2 (Hong Kong)
  • asia-northeast3 (Seul, Corea del Sud)
  • asia-southeast1 (Singapore)
  • asia-southeast2 (Giacarta)
  • asia-south1 (Mumbai, India)
  • asia-south2 (Delhi, India)
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne)
  • europe-central2 (Varsavia, Polonia)
  • europe-west2 (Londra, Regno Unito)
  • europe-west3 (Francoforte, Germania)
  • europe-west6 (Zurigo, Svizzera) icona Fogliolina Basso contenuto di CO2
  • northamerica-northeast1 (Montreal) icona Fogliolina Bassa CO2
  • northamerica-northeast2 (Toronto) icona Fogliolina Basso CO2
  • southamerica-east1 (San Paolo, Brasile) icona Fogliolina Bassa CO2
  • southamerica-west1 (Santiago, Cile)
  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

Se hai già creato un servizio Cloud Run, puoi visualizzare l'area geografica nella dashboard di Cloud Run nella console Google Cloud.

Deployment di immagini da altri progetti Google Cloud

Puoi eseguire il deployment di immagini container da altri progetti Google Cloud se imposti le autorizzazioni IAM corrette:

  1. Nella console Google Cloud Console, apri il progetto per il servizio Cloud Run.

    Vai alla pagina IAM

  2. Seleziona la casella di controllo Includi concessioni di ruoli fornite da Google.

  3. Copia l'email dell'agente di servizio Cloud Run. Ha il suffisso @serverless-robot-prod.iam.gserviceaccount.com

  4. Apri il progetto proprietario di Container Registry che vuoi utilizzare.

    Vai alla pagina IAM

  5. Fai clic su Aggiungi per aggiungere una nuova entità.

  6. Nella casella di testo Nuove entità, incolla l'email dell'account di servizio che hai copiato in precedenza.

  7. Nell'elenco a discesa Seleziona un ruolo, se utilizzi Container Registry, seleziona il ruolo Visualizzatore oggetti Storage -> Storage. Se utilizzi Artifact Registry, seleziona il ruolo Artifact Registry -> Lettore Artifact Registry.

  8. Esegui il deployment dell'immagine container nel progetto che contiene il servizio Cloud Run.

Deployment di immagini da registri non supportati

Se stai archiviando immagini container in un registry di container pubblico o privato non supportato, puoi eseguirne il push temporaneo in Artifact Registry utilizzando docker push per eseguirne il deployment in Cloud Run. L'immagine container viene importata da Cloud Run al termine del deployment, quindi, dopo il deployment, puoi eliminarla da Artifact Registry.

Passaggi successivi

Dopo aver eseguito il deployment di un nuovo servizio, puoi procedere nel seguente modo:

Puoi automatizzare le build e i deployment dei servizi Cloud Run utilizzando i trigger di Cloud Build:

Puoi anche utilizzare Google Cloud Deploy per configurare una pipeline di distribuzione continua per eseguire il deployment di servizi Cloud Run in più ambienti: