Deployment di immagini container in Cloud Run

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

Per una procedura dettagliata di esempio per il deployment di un nuovo servizio, vedi Guida rapida per il deployment di un container di esempio.

Prima di iniziare

Se ti trovi in un criterio dell'organizzazione che limita le chiamate non autenticate per il tuo progetto, dovrai accedere al servizio di cui hai eseguito il deployment come descritto in Test dei servizi privati.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per eseguire il deployment dei servizi Cloud Run, chiedi all'amministratore di concederti seguenti ruoli IAM:

Per un elenco di ruoli e autorizzazioni IAM associati Cloud Run, consulta Ruoli IAM di Cloud Run e le autorizzazioni IAM di Cloud Run. Se il tuo servizio Cloud Run si interfaccia con Le API Google Cloud, come le librerie client di Cloud, consultano guida alla configurazione dell'identità dei servizi. Per ulteriori informazioni sulla concessione dei ruoli, consulta autorizzazioni di deployment e gestire l'accesso.

Immagini e registri di 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 di Artifact Registry.

Dovresti prendere in considerazione solo Docker Hub per il deployment di immagini container popolari, come le immagini ufficiali Docker o le immagini Docker sponsorizzate OSS. Per una maggiore disponibilità, Google consiglia di eseguire il deployment di queste immagini Docker Hub tramite un repository remoto di Artifact Registry.

Deployment di un nuovo servizio

Puoi specificare un'immagine container con un tag (ad es. us-docker.pkg.dev/my-project/container/my-image:latest) o con un digest esatto (ad es. 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 sono immutabili. Se esegui il deployment dal tag di un'immagine container, risolti in un digest e la revisione gestirà sempre questo particolare digest.

Fai clic sulla scheda per visualizzare le istruzioni utilizzando lo strumento di tua scelta.

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 manualmente il deployment 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 codice sorgente e segui le istruzioni per i deployment continui.

    2. Inserisci il nome del servizio necessario. I nomi dei servizi devono contenere 49 caratteri o inferiore e deve essere univoco per regione e progetto. R il nome del servizio non può essere modificato in un secondo momento ed è visibile pubblicamente.

    3. Seleziona l'area geografica in cui vuoi che si trovi il servizio. Il selettore della regione indica la livello di prezzo, disponibilità delle mappature dei domini ed evidenzia le regioni con l'impatto ambientale minimo.

    4. Imposta Allocazione e prezzi della CPU in base alle esigenze.

    5. In Scalabilità automatica, specifica minimo e il numero massimo di istanze.

    6. Configura le impostazioni Ingress nel modulo in base alle esigenze.

    7. In Autenticazione, configura quanto segue:

      • Se stai creando un'API o un sito web pubblici, seleziona Consenti chiamate non autenticate. Se selezioni questa opzione, Ruolo Invoker IAM all'identificatore speciale allUser. Puoi utilizza IAM per modificare questa impostazione in un secondo momento dopo la creazione del servizio.
      • Se vuoi che un servizio sicuro sia protetto dall'autenticazione, seleziona Richiedi autenticazione.
  3. Fai clic su Container, volumi, networking, sicurezza per configurare altre impostazioni facoltative nel le 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 dell'URL visualizzato per aprire lo spazio di archiviazione univoco e stabile dell'endpoint del servizio di cui hai eseguito il deployment.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

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

    1. Esegui questo comando:

      gcloud run deploy SERVICE --image IMAGE_URL

      • Sostituisci SERVICE con il nome del servizio che vuoi in cui eseguire il deployment. I nomi dei servizi devono contenere 49 caratteri o inferiore e deve essere univoco per regione e progetto. Se il servizio non esiste ancora, questo comando crea durante il deployment. Puoi omettere completamente questo parametro. ma se lo ometti ti verrà richiesto il nome del servizio.
      • Sostituisci IMAGE_URL con un riferimento all'immagine container, per ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creati. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG di Google. Tieni presente che se non fornisci --image , il comando di deployment tenterà di eseguire il deployment dal codice sorgente.

      Se crei un API o siti web pubblici, consentire chiamate non autenticate di il tuo servizio utilizzando il flag --allow-unauthenticated. Questo assegna il ruolo IAM Invoker di Cloud Run a allUsers. Puoi anche specificare --no-allow-unauthenticated per non consentire chiamate non autenticate. Se ometti una di queste opzioni , ti viene chiesto di confermare quando viene eseguito il comando deploy.

    2. Attendi il completamento del deployment. Una volta completato, un successo insieme all'URL del servizio di cui è stato eseguito il deployment.

    Tieni presente che per eseguire il deployment in una località diversa da quella impostata utilizzando run/region proprietà gcloud, utilizza:

    gcloud run deploy SERVICE --region REGION

YAML

Puoi archiviare la specifica del servizio in un file YAML e poi il deployment usando gcloud CLI.

  1. 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 tuo servizio Cloud Run. I nomi dei servizi devono contenere 49 caratteri o inferiore e deve essere univoco per regione e progetto.
    • IMAGE con l'URL dell'immagine container.

    Puoi anche specificare altre configurazioni, ad esempio le variabili di ambiente limiti di memoria.

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

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

Cloud Code

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

Terraform

Se usi Terraform, Definire il servizio in una configurazione Terraform, utilizzando google_cloud_run_v2_service risorsa del provider della piattaforma Google Cloud.

  1. Crea un nuovo file main.tf con questi 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 tuo servizio Cloud Run. I nomi dei servizi devono contenere al massimo 49 caratteri e devono essere univoci per ogni regione e progetto.
    • IMAGE_URL con un riferimento all'immagine container, per ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creati. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

    Questa configurazione consente l'accesso pubblico (l'equivalente di --allow-unauthenticated). Per rendere il servizio privato, rimuovi la stanza google_cloud_run_v2_service_iam_member.

  2. Inizializza Terraform:

    terraform init
  3. Applica la configurazione Terraform:

    terraform apply

    Conferma che desideri 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 a l'endpoint service dell'API Cloud Run Admin.

Ad esempio, se utilizzi 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 dispone delle autorizzazioni IAM per eseguire il deployment dei servizi. Ad esempio, se hai eseguito l'accesso a gcloud, puoi recuperare un utilizzando gcloud auth print-access-token. Dall'interno di un'istanza di container Cloud Run, puoi recuperare un token di accesso utilizzando il server di metadati dell'istanza di container.
  • IMAGE_URL con un riferimento all'immagine container, per ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creati. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG di Google.
  • SERVICE con il nome del servizio in cui vuoi eseguire il deployment. I nomi dei servizi devono contenere al massimo 49 caratteri e devono essere univoci per ogni regione e progetto.
  • REGION con la regione Google Cloud del servizio.
  • PROJECT-ID con l'ID progetto Google Cloud.

Località Cloud Run

Cloud Run è regionale, il che significa che l'infrastruttura dei tuoi servizi Cloud Run si trova in una regione specifica gestiti da Google in modo che siano disponibili in modo ridondante tutte le zone all'interno di quella regione.

Soddisfare i requisiti di latenza, disponibilità o durabilità è fondamentale i fattori necessari per selezionare la regione in cui vengono eseguiti i servizi Cloud Run. Generalmente puoi selezionare la regione più vicina ai tuoi utenti, ma devi considerare la località dell'altro account Google Cloud prodotti utilizzati dal tuo servizio Cloud Run. L'utilizzo combinato dei prodotti Google Cloud in più località può influire nonché la latenza del tuo servizio.

Cloud Run è disponibile nelle regioni seguenti:

Soggetto ai prezzi di Livello 1

Soggetto ai prezzi di Livello 2

Se hai già creato un servizio Cloud Run, puoi visualizzare nella dashboard di Cloud Run all'interno Console Google Cloud.

Durante il deployment, l'agente di servizio Cloud Run deve poter accedere al container di cui è stato eseguito il deployment, come avviene per impostazione predefinita.

Ogni servizio ha un URL univoco e permanente che non cambia nel tempo ne esegui 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, gcloud o un file di configurazione YAML.

Tieni presente che la modifica di qualsiasi impostazione di configurazione comporta la creazione di un nuovo anche se l'immagine container non viene modificata. Ogni revisione creato è immutabile.

Fai clic sulla scheda per visualizzare le istruzioni utilizzando lo strumento di tua scelta.

Console

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

  1. Vai a Cloud Run

  2. Individua il servizio che desideri aggiornare nell'elenco dei servizi e fai clic su per aprire i dettagli del servizio.

  3. Fai clic su Modifica ed esegui il deployment di una nuova revisione per visualizzare il modulo di deployment delle revisioni.

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

    2. Configura il container in base alle tue esigenze.

    3. Imposta Allocazione e prezzi della CPU in base alle esigenze.

    4. In Capacità, specifica i limiti di memoria. e limiti di CPU.

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

    6. Specifica l'ambiente di esecuzione dell'oggetto o eliminare definitivamente una versione archiviata, in base alle necessità.

    7. In Scalabilità automatica, specifica minimo e il numero massimo di istanze.

    8. Utilizza le altre schede in base alle necessità per configurare:

  4. Per inviare tutto il traffico alla nuova revisione, seleziona Elabora questa revisione immediatamente. Per implementare gradualmente una nuova revisione, deseleziona la casella di controllo. Ne deriva un deployment in cui non c'è traffico viene inviato alla nuova revisione. Segui le istruzioni per implementazioni graduali dopo il deployment.

  5. Fai clic su Esegui il deployment e attendi il completamento del deployment.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  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 che stai utilizzando in cui eseguire il deployment. Puoi omettere completamente questo parametro, ma Viene richiesto il nome del servizio, se lo ometti.
      • Sostituisci IMAGE_URL con un riferimento all'immagine container, per ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creati. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG di Google.

      Il suffisso della revisione viene assegnato automaticamente per le nuove revisioni. Se vuoi fornire il tuo suffisso di revisione, utilizza gcloud CLI --revision-suffix.

    2. Attendi il completamento del deployment. Una volta completato, un successo insieme all'URL del servizio di cui è stato eseguito il deployment.

YAML

Se devi scaricare o visualizzare la configurazione di un servizio esistente, utilizza utilizza il comando seguente 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 qualsiasi figlio spec.template gli attributi in base alle necessità per aggiornare le impostazioni di revisione, quindi esegui il deployment 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 su IntelliJ e Visual Studio Code.

Terraform

Assicurati di aver configurato Terraform come descritto nell'esempio relativo al deployment di un nuovo servizio.

  1. Apporta una modifica al file di configurazione.

  2. Applica la configurazione Terraform:

    terraform apply

    Conferma che desideri 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 a l'endpoint service dell'API Cloud Run Admin.

Ad esempio, se utilizzi 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 dispone delle autorizzazioni IAM per eseguire il deployment delle revisioni. Ad esempio, se hai eseguito l'accesso a gcloud, puoi recuperare un utilizzando gcloud auth print-access-token. Dall'interno di un'istanza di container Cloud Run, puoi recuperare un token di accesso utilizzando il server di metadati dell'istanza di container.
  • IMAGE_URL con un riferimento all'immagine container, per ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creati. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG di Google.
  • SERVICE con il nome del servizio che stai in cui eseguire il deployment.
  • REGION con la regione Google Cloud del servizio.
  • PROJECT-ID con l'ID progetto Google Cloud.

Località Cloud Run

Cloud Run è regionale, il che significa che l'infrastruttura dei tuoi servizi Cloud Run si trova in una regione specifica gestiti da Google in modo che siano disponibili in modo ridondante tutte le zone all'interno di quella regione.

Soddisfare i requisiti di latenza, disponibilità o durabilità è fondamentale i fattori necessari per selezionare la regione in cui vengono eseguiti i servizi Cloud Run. Generalmente puoi selezionare la regione più vicina ai tuoi utenti, ma devi considerare la località dell'altro account Google Cloud prodotti utilizzati dal tuo servizio Cloud Run. L'utilizzo combinato dei prodotti Google Cloud in più località può influire nonché la latenza del tuo servizio.

Cloud Run è disponibile nelle regioni seguenti:

Soggetto ai prezzi di Livello 1

Soggetto ai prezzi di Livello 2

Se hai già creato un servizio Cloud Run, puoi visualizzare nella dashboard di Cloud Run all'interno Console Google Cloud.

Deployment di immagini da altri progetti Google Cloud

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

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

    Vai alla pagina IAM

  2. Seleziona Includi concessioni dei 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 del Container Registry che vuoi utilizzare.

    Vai alla pagina IAM

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

  6. Nel campo Nuove entità, incolla l'email dell'account di servizio che hai copiato in precedenza.

  7. Se utilizzi Container Registry, nel menu a discesa Seleziona un ruolo seleziona il ruolo Archiviazione -> Visualizzatore oggetti 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 tuo servizio Cloud Run.

Deployment di immagini da altri registri

per eseguire il deployment di immagini container pubbliche o private che non sono archiviate in Artifact Registry. o Docker Hub, configura in un repository remoto di Artifact Registry.

I repository remoti di Artifact Registry 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.

Deployment di più container in un servizio (file collaterali)

In un deployment Cloud Run con sidecar, è presente un container in entrata che gestisce tutte le richieste HTTPS in arrivo alla PORT del container specificata ed esiste una o più container collaterali. I file collaterali non possono ascoltare il messaggio HTTP in entrata richieste alla porta del container in entrata, ma possono comunicare tra loro e con il container in entrata utilizzando una porta localhost. La porta localhost utilizzata varia a seconda dei container che utilizzi.

Nel diagramma seguente, il container in entrata comunica con il file collaterale utilizzando localhost:5000.

Multicontainer Cloud Run

Puoi eseguire il deployment di fino a 10 container per istanza, incluso quello in entrata. Tutti i container all'interno di un'istanza condividono lo stesso spazio dei nomi di rete e possono anche condividere file utilizzando volumi condivisi in memoria, come mostrato nel diagramma.

Puoi eseguire il deployment di più container in ambiente di esecuzione di prima o seconda generazione.

Casi d'uso

I casi d'uso per i file collaterali in un servizio Cloud Run includono:

  • Monitoraggio, logging e tracciamento delle applicazioni
  • Utilizzando Nginx, Envoy o Apache2 come proxy davanti al container dell'applicazione.
  • Aggiunta di filtri di autenticazione e autorizzazione (ad esempio Open Policy Agent)
  • Esecuzione di proxy di connessione in uscita come il proxy di autenticazione DB Alloy

Deployment di un servizio con container collaterali

Puoi eseguire il deployment di più file collaterali in un servizio Cloud Run utilizzando Console Google Cloud, Google Cloud CLI, YAML o Terraform.

Fai clic sulla scheda per visualizzare le istruzioni utilizzando lo strumento di tua scelta.

Console

  1. Vai a Cloud Run

    • Per eseguire il deployment in un servizio esistente, individualo nell'elenco dei servizi e fai clic su per aprirlo, poi fai clic su MODIFICA e ESEGUI IL DEPLOYMENT DI NUOVA REVISIONE per visualizzare il deployment delle revisioni in un modulo di testo.
    • Per eseguire il deployment in un nuovo servizio, fai clic su Crea servizio.
  2. Per un nuovo servizio,

    1. Fornisci il nome del servizio e l'URL all'immagine container in entrata di cui vuoi eseguire il deployment.
    2. Fai clic su Container, volumi, networking, sicurezza
  3. Nella scheda Modifica contenitore, configura il contenitore in entrata in base alle tue esigenze.

  4. Fai clic su Aggiungi contenitore e configura un contenitore collaterale da viene aggiunto accanto al container in entrata. Se il file collaterale dipende da un altro container nel indicalo nel menu a discesa Ordine di avvio del container. Ripeti questo passaggio per ogni file collaterale container di cui stai eseguendo il deployment.

  5. Per inviare tutto il traffico alla nuova revisione, seleziona Elabora questa revisione immediatamente. Per un'implementazione graduale, deseleziona la casella di controllo. Ciò determina in cui non viene inviato traffico alla nuova revisione. Segui le istruzioni per implementazioni graduali dopo il deployment.

  6. Fai clic su Crea per un nuovo servizio o su Esegui il deployment per un servizio esistente. quindi attendere il completamento del deployment.

gcloud

I parametri container in Google Cloud CLI sono in anteprima.

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. Per eseguire il deployment di più container in un servizio, esegui questo comando:

    gcloud beta 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 che stai in cui eseguire il deployment. Puoi omettere completamente questo parametro, ma Viene richiesto il nome del servizio, se lo ometti.
    • INGRESS_CONTAINER_NAME con un nome per il container di richieste ricevute, ad esempio app.
    • INGRESS_IMAGE con un riferimento all'immagine container dovrebbe ricevere richieste, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest.
    • CONTAINER_PORT con la porta su cui si trova il container in entrata rimane in ascolto delle richieste in arrivo. A differenza di un servizio a container singolo, che contiene file collaterali, non esiste una porta predefinita per il traffico in entrata containerizzato. Devi configurare esplicitamente la porta del container per e solo un container può avere la porta esposta.
    • SIDECAR_CONTAINER_NAME con un nome per il file collaterale container, ad esempio sidecar.
    • SIDECAR_IMAGE con un riferimento all'immagine container collaterale

    Se vuoi configurare ciascun container nel comando di deployment, fornisci ogni configurazione del container dopo i parametri container, ad esempio:

    gcloud beta 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
  3. Attendi il completamento del deployment. Una volta completato, un successo insieme all'URL del servizio di cui è stato eseguito il deployment.

YAML

Queste istruzioni mostrano un file YAML di base per il tuo servizio Cloud Run con file collaterali. Crea un file denominato service.yaml e aggiungi quanto segue:

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  annotations:
  name: SERVICE_NAME
spec:
  template:
    spec:
      containers:
      - image: INGRESS_IMAGE
        ports:
          - containerPort: CONTAINER_PORT
      - image: SIDECAR_IMAGE
      

Sostituisci

  • SERVICE con il nome del tuo servizio Cloud Run. I nomi dei servizi devono contenere al massimo 49 caratteri.
  • CONTAINER_PORT con la porta su cui si trova il container in entrata rimane in ascolto delle richieste in arrivo. A differenza di un servizio a container singolo, che contiene file collaterali, non esiste una porta predefinita per il traffico in entrata containerizzato. Devi configurare esplicitamente la porta del container per e solo un container può avere la porta esposta.
  • INGRESS_IMAGE con un riferimento all'immagine container dovrebbe ricevere richieste, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest.
  • SIDECAR_IMAGE con un riferimento all'immagine container collaterale. Puoi specificare più file collaterali aggiungendone altri all'array containers nel file YAML.

Dopo aver aggiornato il file YAML per includere i container in entrata e collaterali, in 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 in Terraform configurazione.

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 dove il traffico in entrata il container rimane in ascolto delle richieste in entrata. A differenza di un servizio con un singolo container, per un servizio contenente file collaterali, non esiste una porta predefinita per il traffico containerizzato. Devi configurare esplicitamente la porta del container per e solo un container può avere la porta esposta.

Funzionalità degne di nota disponibili per i deployment con file collaterali

Puoi specificare l'ordine di avvio del 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 i tuoi container dipendono da altri container, devi utilizzare i controlli di integrità nel deployment. Se usi i controlli di integrità, Cloud Run segue le nell'ordine di avvio del container e controlla l'integrità di ogni container, ogni operazione riesce prima dell'avvio del container successivo da parte di Cloud Run nell'ordine. Se non utilizzi i controlli di integrità, i container integri verranno avviati anche se i container da cui dipendono non sono in esecuzione.

Più container all'interno di una singola istanza possono accedere a un volume in memoria, a cui è possibile accedere a ogni container usando i punti di montaggio che crei.

Passaggi successivi

Dopo aver eseguito il deployment di un nuovo servizio, puoi:

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

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