Configura i container

In questa pagina viene descritto come configurare il container porta, comando del punto di ingresso e argomenti per Cloud Run i servizi di machine learning.

Quando Cloud Run avvia un container, esegue lo stato predefinito dell'immagine il comando entrypoint e gli argomenti predefiniti dei comandi. Se vuoi sostituire il punto di ingresso predefinito dell'immagine e gli argomenti del comando, puoi utilizzare command e args nella configurazione del contenitore. Il campo command specifica il comando effettivamente eseguito dal container. Il campo args specifica gli argomenti passati a quel comando.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare ed 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.

Configura la porta del container

Qualsiasi modifica alla configurazione porta la creazione di una nuova revisione. Anche le revisioni successive ricevono automaticamente di questa configurazione, a meno che non apporti aggiornamenti espliciti per modificarla.

Per i servizi Cloud Run, Cloud Run inserisce il valore PORT nel container. Se esegui il deployment di più container questo è il container in entrata. Il container rimane in ascolto sulla porta definito dalla variabile di ambiente PORT, anziché da uno specifico hardcoded una porta. Se non è possibile, configura l'ascolto in modo che avvenga sulla porta che invia richieste al container. Tieni presente che le impostazioni delle porte non si applicano a dei job Cloud Run.

Console

  1. Nella console Google Cloud, vai a Cloud Run:

    Vai a Cloud Run

  2. Fai clic su Crea servizio se stai configurando un nuovo servizio in cui stai eseguendo il deployment. Se stai configurando un'istanza servizio esistente, fai clic sul servizio e poi su Modifica ed esegui il deployment di una nuova revisione.

  3. Se stai configurando un nuovo servizio, compila il servizio iniziale pagina delle impostazioni come preferisci, poi fai clic su Container, volumi, networking, sicurezza per espandere pagina di configurazione del servizio.

  4. Fai clic sulla scheda Contenitore.

    immagine

    • Specifica la porta a cui vuoi inviare le richieste, se non è il valore predefinito di 8080. Questa operazione imposta anche l'ambiente PORT .
  5. Fai clic su Crea o Esegui il deployment.

gcloud

Puoi aggiornare la configurazione della porta di un servizio. utilizzando il seguente comando:

gcloud run services update SERVICE --port PORT

Sostituisci

  • SERVICE con il nome del servizio.
  • PORT con la porta a cui inviare le richieste. Tieni presente che La porta predefinita è 8080.

Puoi anche configurare le porte deployment mediante il comando:

gcloud run deploy --image IMAGE_URL --port PORT

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.

YAML

  1. Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aggiorna l'attributo containerPort::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION
        spec:
          containers:
          - image: IMAGE_URL
            ports:
            - containerPort: PORT
    

    Sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run
    • 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
    • PORT con la porta a cui inviare le richieste
    • REVISION con un nuovo nome di revisione o eliminala (se presente). Se fornisci un nuovo nome per la revisione, deve soddisfare i seguenti criteri:
      • Inizia con SERVICE-
      • Contiene solo lettere minuscole, numeri e -
      • Non termina con -
      • Non deve superare i 63 caratteri
  3. Sostituisci il servizio con la nuova configurazione utilizzando quanto segue :

    gcloud run services replace service.yaml

Configura il punto di ingresso e gli argomenti

Qualsiasi modifica alla configurazione porta la creazione di una nuova revisione. Anche le revisioni successive ricevono automaticamente di questa configurazione, a meno che non apporti aggiornamenti espliciti per modificarla.

Il comando e gli argomenti del container specificati eseguono l'override dell'immagine predefinita ENTRYPOINT e CMD.

Puoi impostare il comando e gli argomenti del punto di ingresso utilizzando la console Google Cloud, Google Cloud CLI o l'utilizzo di un file YAML crea un nuovo servizio o esegui il deployment di una nuova revisione:

Console

  1. Nella console Google Cloud, vai a Cloud Run:

    Vai a Cloud Run

  2. Fai clic su Crea servizio se stai configurando un nuovo servizio in cui stai eseguendo il deployment. Se stai configurando un'istanza servizio esistente, fai clic sul servizio e poi su Modifica ed esegui il deployment di una nuova revisione.

  3. Se stai configurando un nuovo servizio, compila il servizio iniziale pagina delle impostazioni come preferisci, poi fai clic su Container, volumi, networking, sicurezza per espandere pagina di configurazione del servizio.

  4. Fai clic sulla scheda Contenitore.

    immagine

    • Specifica il comando che deve essere eseguito dal container. se non è il comando definito nel container e, facoltativamente, specificare al comando del punto di ingresso.
  5. Fai clic su Crea o Esegui il deployment.

gcloud

Per aggiornare il comando start e gli argomenti per un servizio esistente:

gcloud run services update SERVICE --command COMMAND --args ARG1,ARG-N

Sostituisci

  • COMMAND con il comando con cui deve essere avviato il container se non utilizzi il comando predefinito.
  • ARG1 con l'argomento che stai inviando al comando container, utilizzare un elenco delimitato da virgole per più di un argomento.

Per specificare il punto di ingresso e gli argomenti durante deployment di un servizio nuovo o esistente:

gcloud run deploy --image IMAGE_URL --command COMMAND --args ARG1,ARG-N

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

Per cancellare tutti i comandi e gli argomenti del punto di ingresso che hai impostato (ripristina nel container predefinite), fornisci stringhe vuote come segue:

gcloud run deploy --image IMAGE_URL --command "" --args ""

YAML

  1. Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aggiorna gli attributi command e args:

    spec:
      containers:
      - image: IMAGE_URL
        command:
        - COMMAND
        args:
        - "ARG1"
        - "ARG-N"
    

    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
    • COMMAND con il comando che indica di avviare il container se non utilizzi il comando predefinito.
    • ARG1 con l'argomento che stai inviando al container . Se utilizzi più argomenti, specificali singolarmente. della riga di comando, ad esempio, come mostrato, ARG-N.
  3. Sostituisci il servizio con la nuova configurazione utilizzando quanto segue :

    gcloud run services replace service.yaml

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta: Comandi Terraform di base.

La seguente risorsa google_cloud_run_v2_service specifica un comando e argomenti. Sostituisci /server con il comando utilizzato per avviare il tuo container e aggiungi eventuali argomenti necessari all'array args.

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-containers"
  location = "us-central1"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      # Container "entry-point" command
      command = ["/server"]

      # Container "entry-point" args
      args = []
    }
  }
}

Utilizza i segni di uguale o le virgole negli argomenti

Se utilizzi i segni di uguale negli argomenti, forniscili utilizzando quanto segue: formato:

gcloud run deploy  \
  --args="--repo-allowlist=github.com/example/example_demo"

Se gli argomenti utilizzano le virgole, fai riferimento a configurando le variabili di ambiente per i dettagli sull'interpretazione letterale.

Configura l'ordine di inizio del container per i deployment collaterali

Per specificare l'ordine di avvio del container in un deployment collaterali, utilizza delle dipendenze del container. Devi specificare tutti i container che hanno dipendenze ed elenca i container da cui dipendono: questi vengono avviati per primi. La i container senza dipendenze vengono sempre avviati per primi contemporaneamente.

Devi usare probe di controllo di integrità dell'avvio per usare correttamente questa funzionalità. Il probe di avvio consente Cloud Run per ispezionare l'integrità di un container dipendente, assicurandosi passa prima di avviare il container successivo. Se non utilizzi controlli di integrità, i container vengono avviati nell'ordine specificato anche se da cui dipendono non si avviano.

Tieni presente che i container in entrata hanno un probe di integrità all'avvio predefinito.

Puoi utilizzare la console Google Cloud, Google Cloud CLI o YAML per specificare ordine di avvio:

Console

  1. Vai a Cloud Run

    • Per un servizio esistente, fai clic sul servizio nell'elenco e seleziona Modifica ed esegui il deployment di una nuova revisione per visualizzare il deployment delle revisioni. in un modulo di testo.
    • Per un nuovo servizio, fai clic su Crea servizio.
  2. Per un nuovo servizio, specifica il nome del servizio, l'URL del container in entrata, la CPU allocazione, controllo in entrata e autenticazione e poi fai clic su Container, volumi, networking, sicurezza.

  3. Per un nuovo servizio, nella scheda Container, volumi, networking, sicurezza segui questi passaggi:

    1. Configura il container in entrata.
    2. Per aggiungere ciascuno degli altri container di cui stai eseguendo il deployment, fai clic su Aggiungi contenitore.
    3. Per tutti i container, ad eccezione di quello in entrata, configurare un controllo di integrità per una startup. In entrata I container hanno un controllo di integrità predefinito all'avvio.
    4. Se un container ha bisogno che altri container vengano avviati prima di poter essere avviati, utilizza il menu Ordine di avvio del container per selezionare i container che devono essere avviati per primi.
  4. Per un servizio esistente, segui questi passaggi:

    1. Per tutti i container, ad eccezione di quello in entrata, configurare un controllo di integrità per una startup. In entrata I container hanno un controllo di integrità predefinito all'avvio.
    2. Ogni container viene mostrato con il suo Menu Ordine di avvio del contenitore. Se un container ha bisogno di altri container per iniziare prima che possa essere avviato, utilizza l'ordine di avvio del container per selezionare i container che devono essere avviati prima.
  5. Termina le eventuali altre configurazioni richieste, poi fai clic su Crea per una nuova o Esegui il deployment per un servizio esistente. Attendi il completamento del deployment.

gcloud

I parametri container in Google Cloud CLI sono in anteprima.

Prima di utilizzare Google Cloud CLI per specificare l'ordine di avvio, devi configurare un controllo di integrità per una startup in tutti i container, ad eccezione di quello in entrata. I container in entrata hanno controllo di integrità predefinito delle startup. Non puoi configurare i controlli di integrità utilizzando Google Cloud CLI.

  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 con un ordine di avvio specificato, esegui il comando:

gcloud run deploy SERVICE \
     --container CONTAINER_1_NAME --image='INGRESS_IMAGE' \
     --container CONTAINER_2_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME \
     --container CONTAINER_3_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAMECONTAINER_2_NAME
  • 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 INGRESS_IMAGE con un riferimento all'immagine container che dovrebbe ricevere richieste, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest.
  • Sostituisci 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.

YAML

  1. Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aggiorna l'attributo container-dependencies:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/container-dependencies: '{"CONTAINER1":["CONTAINER2"], "CONTAINER3":["CONTAINER1","CONTAINER2"]}'
    

    Sostituisci

    • CONTAINER1 con il nome del primo container dipende da uno o più container. Tieni presente che puoi impostare il nome del container nel file YAML: Cloud Run eseguirà automaticamente generare un nome se non ne viene specificato uno.
    • CONTAINER2 con il nome del container che deve essere è iniziata prima del giorno CONTAINER1.
    • CONTAINER3 con il nome del secondo container che dipende da uno o più container.

    Nell'esempio mostrato nello snippet YAML, CONTAINER2 è avviata prima, CONTAINER1 inizia per seconda e CONTAINER3 è stato avviato per ultimo.

  3. Sostituisci il servizio con la nuova configurazione utilizzando quanto segue :

    gcloud run services replace service.yaml

Visualizza le impostazioni del contenitore

Per visualizzare le impostazioni del contenitore correnti per Servizio Cloud Run:

Console

  1. Nella console Google Cloud, vai a Cloud Run:

    Vai a Cloud Run

  2. Fai clic sul servizio che ti interessa per aprire la pagina Dettagli servizio.

  3. Fai clic sulla scheda Revisioni.

  4. Nel riquadro dei dettagli a destra, l'impostazione del contenitore è elencato nella scheda Contenitore.

gcloud

  1. Utilizza questo comando:

    gcloud run services describe SERVICE
  2. Individua l'impostazione del contenitore nel modulo restituito configurazione.