Configura variables de entorno para servicios

En esta página, se describe cómo configurar las variables de entorno de tu servicio de Cloud Run.

Puedes usar variables de entorno para la configuración del servicio, pero no las recomendamos como una forma de almacenar secretos, como las credenciales de la base de datos o las claves de API. Los valores sensibles deben almacenarse fuera de tu código fuente y de las variables de entorno. Para almacenar secretos, te recomendamos que uses Secret Manager. Si deseas configurar servicios para acceder a los secretos almacenados en Secret Manager, consulta Configura secretos.

Cualquier cambio en la configuración conlleva la creación de una revisión nueva. Las revisiones posteriores también adoptarán esta configuración de manera automática, a menos que realices actualizaciones explícitas para cambiarla.

Roles obligatorios

Para obtener los permisos que necesitas para configurar y, luego, implementar los servicios de Cloud Run, pídele a tu administrador que te otorgue los siguientes roles de IAM:

Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta los roles de IAM de Cloud Run y los permisos de IAM de Cloud Run. Si tu servicio de Cloud Run interactúa con las APIs deGoogle Cloud , como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información sobre cómo otorgar roles, consulta permisos de implementación y administra el acceso.

Cantidad máxima de variables de entorno y límites

Puedes establecer un máximo de 1,000 variables de entorno para un servicio de Cloud Run.

La longitud variable máxima es de 32 KB.

Configure las variables de entorno

Puedes establecer variables de entorno para servicios nuevos y existentes. Ten en cuenta que la marca --set-env-vars es una acción destructiva que borra las variables de entorno establecidas anteriormente que no se incluyen en la nueva lista de variables de entorno.

Las variables de entorno están vinculadas a una revisión de servicio específica y no son visibles para otros servicios en tu Google Cloud proyecto.

Puedes configurar variables de entorno mediante la Google Cloud consola, Google Cloud CLI o un archivo YAML cuando creas un servicio nuevo o implementas una revisión nueva:

Console

  1. En la consola de Google Cloud , ve a Cloud Run:

    Ir a Cloud Run

  2. Selecciona Servicios en el menú y haz clic en Implementar contenedor para configurar un servicio nuevo. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, en implementar y editar la nueva revisión.

  3. Si configuras un servicio nuevo, completa la página de configuración del servicio inicial como desees y haz clic en Contenedores, volúmenes, herramientas de redes y seguridad para expandir la página de configuración del servicio.

  4. Haz clic en la pestaña Contenedor.

    imagen

    • Haz clic en Agregar variable para agregar una nueva y especifica el nombre que deseas para la variable y su valor en los campos Nombre y Valor.
  5. Haz clic en Crear o Implementar.

gcloud

Para especificar variables de entorno cuando implementes tu servicio, usa la marca --set-env-vars:

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

Reemplaza lo siguiente:

  • SERVICE por el nombre de tu servicio.
  • KEY1=VALUE1,KEY2=VALUE2, con la lista separada por comas de los nombres y valores de las variables.
  • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

Para especificar variables de entorno cuando actualizas un servicio, usa la marca --set-env-vars:

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

Configura muchas variables de entorno

Si tienes muchas variables de entorno que no se pueden enumerar en formato KEY1=VALUE1,KEY2=VALUE2, puedes repetir la marca --set-env-vars varias veces:
   [...]
   --set-env-vars "KEY1=VALUE1" \
   --set-env-vars "KEY2=VALUE2" \
   --set-env-vars "KEY3=VALUE3"

Caracteres de coma de escape

Debido a que el carácter de coma , se usa para dividir las variables de entorno, si la variable de entorno contiene caracteres de coma como valores, debes escapar esos delimitadores mediante la especificación de un carácter delimitador diferente, por ejemplo, @:
--set-env-vars "^@^KEY1=value1,value2,value3@KEY2=..."

YAML

  1. Si creas un servicio nuevo, omite este paso. Si actualizas un servicio existente, descarga su configuración de YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Actualiza los atributos name y value en el atributo env en 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

    Reemplazar

    • SERVICE por el nombre del servicio de Cloud Run
    • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • KEY-1, VALUE-1 por la variable de entorno y el valor. También, puedes agregar más variables y valores según sea necesario.
    • REVISION por un nombre de revisión nuevo o bórralo (si está presente). Si proporcionas un nuevo nombre de revisión, debe cumplir con los siguientes criterios:
      • Comienza con SERVICE-
      • Solo contiene letras minúsculas, números y -
      • No termina con -
      • No supera los 63 caracteres
  3. Crea o actualiza el servicio con el siguiente comando:

    gcloud run services replace service.yaml

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

Agrega lo siguiente a un recurso google_cloud_run_v2_service en la configuración de 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"
      }
    }
  }
}

El recurso google_cloud_run_v2_service anterior especifica que se establece la variable de entorno foo en bar y la variable de entorno baz en quux. Actualiza las variables de entorno según sea necesario.

Configura variables de entorno predeterminadas en el contenedor

Puedes usar la sentencia ENV en un Dockerfile a fin de establecer valores predeterminados para las variables de entorno:

ENV KEY1=VALUE1,KEY2=VALUE2

Orden de prioridad: Comparación entre contenedores y variables de servicio

Si configuras una variable de entorno predeterminada en el contenedor y, también configuras una variable de entorno con el mismo nombre en el servicio de Cloud Run, el valor establecido en el servicio tiene prioridad.

Actualiza las variables de entorno

Puedes actualizar las variables de entorno de los servicios existentes. Este es un enfoque no destructivo que modifica o agrega variables de entorno, pero no borra las variables de entorno establecidas anteriormente.

Console

Para actualizar las variables de entorno con la consola de Google Cloud , sigue estos pasos:

  1. En la consola de Google Cloud , ve a Cloud Run:

    Ir a Cloud Run

  2. Selecciona tu servicio de la lista y haz clic en Editar e implementar nueva revisión.

  3. Haz clic en la pestaña Contenedor.

  4. En la pestaña Variables y secretos, edita los campos Nombre o Valor y haz clic en Listo.

  5. Haz clic en Implementar.

gcloud

Para actualizar las variables de entorno de un servicio existente, usa la marca --update-env-vars:

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

Reemplaza lo siguiente:

  • SERVICE por el nombre de tu servicio.
  • KEY1=VALUE1,KEY2=VALUE2, con la lista separada por comas de los nombres y valores de las variables.

Para actualizar las variables de entorno de un servicio multirregional existente, usa el comando gcloud beta run multi-region-services update.

Visualiza la configuración de las variables de entorno

Para ver la configuración actual de las variables de entorno de tu servicio de Cloud Run, sigue estos pasos:

Console

  1. En la consola de Google Cloud , ve a Cloud Run:

    Ir a Cloud Run

  2. Haz clic en el servicio que te interesa para abrir la página Detalles del servicio.

  3. Haz clic en la pestaña Revisiones.

  4. En el panel de detalles a la derecha, la configuración de variables de entorno aparece en la pestaña Contenedor.

gcloud

  1. Usa el siguiente comando:

    gcloud run services describe SERVICE
  2. Ubica la configuración de las variables de entorno en la configuración que se muestra.

Borra variables de entorno

Puedes borrar variables de entorno para servicios existentes.

Console

Para borrar variables de entorno con la consola de Google Cloud , sigue estos pasos:

  1. En la consola de Google Cloud , ve a Cloud Run:

    Ir a Cloud Run

  2. Selecciona tu servicio de la lista y haz clic en Editar e implementar nueva revisión.

  3. Haz clic en la pestaña Contenedor.

  4. En la pestaña Variables y Secrets, coloca el cursor a la izquierda del campo Valor de la variable de entorno que deseas quitar para que se muestre el ícono Borrar y haz clic en él.

  5. Haz clic en Listo.

  6. Haz clic en Implementar.

gcloud

Para quitar de forma selectiva las variables de entorno de un servicio existente,usa la marca --remove-env-vars:

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

Reemplaza lo siguiente:

  • SERVICE por el nombre de tu servicio.
  • KEY1,KEY2, con la lista de nombres de variables separados por comas

Como alternativa, borra todas las variables de entorno configuradas previamente con la marca --clear-env-vars:

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

Reemplaza lo siguiente:

  • SERVICE por el nombre de tu servicio.

Prácticas recomendadas

En la siguiente sección, se destacan algunas de las prácticas recomendadas para configurar las variables de entorno.

Variables de entorno reservadas para servicios

Las variables de entorno definidas en el contrato de entorno de ejecución del contenedor están reservadas y no se pueden configurar. En particular, Cloud Run inserta la variable de entorno PORT dentro de tu contenedor. No debes configurarla tú mismo.

Variables de entorno reservadas adicionales cuando se implementan funciones

Cloud Run configura las siguientes variables de entorno de ejecución automáticamente cuando se implementan funciones:

  • FUNCTION_TARGET: Es la función que se ejecutará.
  • FUNCTION_SIGNATURE_TYPE: Es el tipo de función: http para funciones de HTTP y event para funciones controladas por eventos.

Algunas variables de entorno adicionales se configuran automáticamente según el entorno de ejecución que usa tu función. Estas se basan en el sistema operativo del entorno de ejecución, por ejemplo, DEBIAN_FRONTEND, SHLVL o PATH, y el entorno de ejecución del lenguaje, por ejemplo, NODE_ENV, VIRTUAL_ENV o GOPATH.

Es posible que las variables de entorno que proporciona el entorno, además de las que se configuran automáticamente, cambien en las próximas versiones del entorno de ejecución. Como práctica recomendada, te sugerimos que no dependas de ninguna variable de entorno que no hayas configurado explícitamente ni la modifiques.

La modificación de las variables de entorno que proporciona el entorno puede generar resultados impredecibles. Los intentos de modificar dichas variables de entorno podrían bloquearse o, peor aún, podrían generar consecuencias no deseadas, como funciones que no pueden iniciarse. Como recomendación, considera colocar una clave única como prefijo a las variables de entorno para evitar conflictos.

Variables de entorno no válidas

No puedes usar las siguientes variables de entorno:

Clave Descripción
Vacía ('') Las claves no pueden ser una cadena vacía.
= Las claves no pueden contener el carácter "=".
X_GOOGLE_ Las claves no pueden contener el prefijo X_GOOGLE_.

Código de muestra

Para ver una muestra de código que indica cómo acceder a las variables de entorno en tu código, consulta Cómo manejar la configuración sensible con Secret Manager en el instructivo de autenticación de usuarios finales.

¿Qué sigue?

Puedes usar variables de entorno para configurar los paquetes de compilación. Para obtener detalles específicos del lenguaje, consulta la documentación de los paquetes de compilación para lo siguiente:

Si realizas la implementación desde la fuente y necesitas personalizar las variables en el momento de la compilación, consulta Cómo configurar variables de entorno de compilación.