Configura le variabili di ambiente per i servizi

Questa pagina descrive come configurare le variabili di ambiente per il servizio Cloud Run.

Puoi utilizzare le variabili di ambiente per la configurazione del servizio, ma non le consigliamo come metodo per archiviare secret come le credenziali del database o le chiavi API. I valori sensibili devono essere archiviati al di fuori del codice sorgente e delle variabili di ambiente. Per l'archiviazione dei secret, ti consigliamo di utilizzare Secret Manager. Per configurare i servizi per l'accesso ai secret archiviati in Secret Manager, vedi Configurare i secret.

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

Ruoli obbligatori

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

Per un elenco di ruoli e autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM Cloud Run e Autorizzazioni IAM Cloud Run. Se il tuo servizio Cloud Run interagisce con le APIGoogle Cloud , come le librerie client Cloud, consulta la guida alla configurazione dell'identità del servizio. Per ulteriori informazioni sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestire l'accesso.

Numero massimo di variabili di ambiente e limiti

Puoi impostare un massimo di 1000 variabili di ambiente per un servizio Cloud Run.

La lunghezza variabile massima è 32 kB.

Imposta le variabili di ambiente

Puoi impostare le variabili di ambiente per i servizi nuovi ed esistenti. Tieni presente che il flag --set-env-vars è un'azione distruttiva che elimina le variabili di ambiente impostate in precedenza non incluse nel nuovo elenco di variabili di ambiente.

Le variabili di ambiente sono associate a una revisione specifica del servizio e non sono visibili ad altri servizi nel tuo progetto Google Cloud .

Puoi impostare le variabili di ambiente utilizzando la console Google Cloud , gcloud CLI o un file YAML quando crei un nuovo servizio o deploy una nuova revisione:

Console

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

    Vai a Cloud Run

  2. Seleziona Servizi dal menu e fai clic su Esegui il deployment del contenitore per configurare un nuovo servizio. Se stai configurando un servizio esistente, fai clic sul servizio, quindi su Modifica ed esegui il deployment della nuova revisione.

  3. Se stai configurando un nuovo servizio, compila la pagina delle impostazioni iniziali del servizio, quindi fai clic su Container, volumi, networking, sicurezza per espandere la pagina di configurazione del servizio.

  4. Fai clic sulla scheda Contenitore.

    immagine

    • Fai clic su Aggiungi variabile per aggiungere una nuova variabile e specifica il nome che vuoi assegnarle e il relativo valore nei campi Nome e Valore.
  5. Fai clic su Crea o Esegui il deployment.

gcloud

Per specificare le variabili di ambiente durante la deployment del servizio, utilizza il flag --set-env-vars:

gcloud run deploy SERVICE --image IMAGE_URL --set-env-vars KEY1=VALUE1,KEY2=VALUE2

Sostituisci:

  • SERVICE con il nome del tuo servizio.
  • KEY1=VALUE1,KEY2=VALUE2, con l'elenco separato da virgole di nomi e valori delle variabili.
  • IMAGE_URL con un riferimento all'immagine 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 forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .

Per specificare le variabili di ambiente durante l'aggiornamento di un servizio, utilizza il flag --set-env-vars:

gcloud run services update SERVICE --image IMAGE_URL --set-env-vars KEY1=VALUE1,KEY2=VALUE2

Imposta molte variabili di ambiente

Se hai molte variabili di ambiente che non possono essere elencate nel formato KEY1=VALUE1,KEY2=VALUE2 puoi ripetere più volte il flag --set-env-vars:
   [...]
   --set-env-vars "KEY1=VALUE1" \
   --set-env-vars "KEY2=VALUE2" \
   --set-env-vars "KEY3=VALUE3"

Caratteri virgola di escape

Poiché il carattere virgola , viene utilizzato per dividere le variabili di ambiente, se la variabile di ambiente contiene virgole come valori, devi eseguire l'escape di questi delimitatori specificando un carattere delimitatore diverso, ad esempio @:
--set-env-vars "^@^KEY1=value1,value2,value3@KEY2=..."

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 name e value nell'attributo env in containers::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION
        spec:
          containers:
          - image: IMAGE
            env:
            - name: KEY-1
              value: VALUE-1
            - name: KEY-N
              value: VALUE-N

    Sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run
    • IMAGE_URL con un riferimento all'immagine 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 forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • KEY-1, VALUE-1 con la variabile di ambiente e il valore. Se vuoi, aggiungi altre variabili e valori in base alle necessità.
    • REVISION con un nuovo nome di revisione o eliminalo (se presente). Se fornisci un nuovo nome di revisione, questo deve soddisfare i seguenti criteri:
      • Inizia con SERVICE-
      • Contiene solo lettere minuscole, numeri e -
      • Non termina con -
      • Non supera i 63 caratteri
  3. Crea o aggiorna il servizio utilizzando il seguente 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     = "cloudrun-service-env-var"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

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

      # Environment variables
      env {
        name  = "foo"
        value = "bar"
      }
      env {
        name  = "baz"
        value = "quux"
      }
    }
  }
}

La risorsa google_cloud_run_v2_service precedente specifica i set imposta la variabile di ambiente foo su bar e la variabile di ambiente baz su quux. Aggiorna le variabili di ambiente in base alle esigenze.

Imposta le variabili di ambiente predefinite nel container

Puoi utilizzare l'istruzione ENV in un Dockerfile per impostare i valori predefiniti per le variabili di ambiente:

ENV KEY1=VALUE1,KEY2=VALUE2

Ordine di precedenza: variabili del container e del servizio

Se imposti una variabile di ambiente predefinita nel container e imposti una variabile di ambiente con lo stesso nome nel servizio Cloud Run, il valore impostato nel servizio ha la precedenza.

Aggiorna le variabili di ambiente

Puoi aggiornare le variabili di ambiente per i servizi esistenti. Si tratta di un approccio non distruttivo che modifica o aggiunge variabili di ambiente, ma non elimina le variabili di ambiente impostate in precedenza.

Console

Per aggiornare le variabili di ambiente utilizzando la console Google Cloud :

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

    Vai a Cloud Run

  2. Seleziona il tuo servizio dall'elenco e fai clic su Modifica e implementa nuova revisione.

  3. Fai clic sulla scheda Contenitore.

  4. Nella scheda Variabili e secret, modifica i campi Nome o Valore e fai clic su Fine.

  5. Fai clic su Esegui il deployment.

gcloud

Per aggiornare le variabili di ambiente di un servizio esistente, utilizza il flag --update-env-vars:

gcloud run services update SERVICE --update-env-vars KEY1=VALUE1,KEY2=VALUE2

Sostituisci:

  • SERVICE con il nome del tuo servizio.
  • KEY1=VALUE1,KEY2=VALUE2, con l'elenco separato da virgole di nomi e valori delle variabili.

Per aggiornare le variabili di ambiente di un servizio multiregionale esistente, utilizza il comando gcloud beta run multi-region-services update.

Visualizza le impostazioni delle variabili di ambiente

Per visualizzare le impostazioni correnti delle variabili di ambiente per il 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 delle variabili di ambiente è elencata nella scheda Container.

gcloud

  1. Utilizza questo comando:

    gcloud run services describe SERVICE
  2. Individua l'impostazione delle variabili di ambiente nella configurazione restituita.

Elimina le variabili di ambiente

Puoi eliminare le variabili di ambiente per i servizi esistenti.

Console

Per eliminare le variabili di ambiente utilizzando la console Google Cloud :

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

    Vai a Cloud Run

  2. Seleziona il tuo servizio dall'elenco e fai clic su Modifica e implementa nuova revisione.

  3. Fai clic sulla scheda Contenitore.

  4. Nella scheda Variabili e secret, sposta il cursore a sinistra del campo Valore della variabile di ambiente che stai rimuovendo per visualizzare l'icona Elimina e fai clic.

  5. Fai clic su Fine.

  6. Fai clic su Esegui il deployment.

gcloud

Per rimuovere selettivamente le variabili di ambiente di un servizio esistente,utilizza il flag --remove-env-vars:

gcloud run services update SERVICE --remove-env-vars KEY1,KEY2

Sostituisci:

  • SERVICE con il nome del tuo servizio.
  • KEY1,KEY2, con l'elenco dei nomi delle variabili separati da virgole.

In alternativa, cancella tutte le variabili di ambiente impostate in precedenza con il flag --clear-env-vars:

gcloud run services update SERVICE --clear-env-vars

Sostituisci:

  • SERVICE con il nome del tuo servizio.

Best practice

La sezione seguente mette in evidenza alcune delle best practice per la configurazione delle variabili di ambiente.

Variabili di ambiente riservate per i servizi

Le variabili di ambiente definite nel contratto di runtime del container sono riservate e non possono essere impostate. In particolare, la variabile di ambiente PORT viene inserita nel container da Cloud Run. Non devi impostarlo manualmente.

Variabili di ambiente riservate aggiuntive durante il deployment delle funzioni

Cloud Run imposta automaticamente le seguenti variabili di ambiente di runtime quando esegui il deployment delle funzioni:

  • FUNCTION_TARGET: la funzione da eseguire.
  • FUNCTION_SIGNATURE_TYPE: il tipo di funzione: http per le funzioni HTTP e event per le funzioni basate su eventi.

Alcune variabili di ambiente aggiuntive vengono impostate automaticamente a seconda del runtime utilizzato dalla funzione. Questi si basano sul sistema operativo del runtime, ad esempio DEBIAN_FRONTEND, SHLVL o PATH e sul runtime del linguaggio, ad esempio NODE_ENV, VIRTUAL_ENV o GOPATH.

Le variabili di ambiente fornite dall'ambiente, diverse da quelle impostate automaticamente, potrebbero cambiare nelle versioni future del runtime. Come best practice, ti consigliamo di non fare affidamento su variabili di ambiente che non hai impostato in modo esplicito e di non modificarle.

La modifica delle variabili di ambiente fornite dall'ambiente potrebbe portare a risultati imprevedibili. I tentativi di modificare queste variabili di ambiente potrebbero essere bloccati o, peggio ancora, portare a conseguenze indesiderate, ad esempio funzioni che non possono essere avviate. Come best practice, valuta la possibilità di aggiungere un prefisso a qualsiasi variabile di ambiente con una chiave univoca per evitare conflitti.

Variabili di ambiente non valide

Non puoi utilizzare le seguenti variabili di ambiente:

Chiave Descrizione
Vuoto ('') Le chiavi non possono essere una stringa vuota.
= Le chiavi non possono contenere il carattere "=".
X_GOOGLE_ Le chiavi non possono contenere il prefisso X_GOOGLE_.

Codice di esempio

Per un esempio di codice che mostra come accedere alle variabili di ambiente nel codice, fai riferimento a Gestione della configurazione sensibile con Secret Manager nel tutorial sull'autenticazione dell'utente finale.

Passaggi successivi

Puoi utilizzare le variabili di ambiente per impostare la configurazione dei buildpack. Per i dettagli specifici della lingua, consulta la documentazione dei buildpack per:

Se esegui il deployment dal codice sorgente e devi personalizzare le variabili in fase di compilazione, consulta Impostare le variabili di ambiente di compilazione.