Configura variables de entorno

Aprende a crear y usar variables de entorno en Knative serving.

Cuando configuras las variables de entorno, se insertan en el contenedor y tu código puede acceder a ellas. Además, se establecen como pares clave-valor. Por ejemplo, supongamos que ejecutas un servicio que habilita el registro adicional cuando se lee LOGGING_VERBOSE: true en el entorno. En este caso, el par clave-valor de la variable de entorno se establece como LOGGING_VERBOSE=true. Los comandos o la IU exactos se muestran en las siguientes secciones.

Nombres reservados

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, la variable de entorno PORT se inserta dentro del contenedor mediante Knative serving. No debes configurarla tú mismo.

Configura variables de entorno en un servicio

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.

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

Console

  1. Ve a Knative serving en la consola de Google Cloud:

    Ir a Knative serving

  2. Haz clic en Crear servicio si quieres configurar un servicio nuevo en el que realizarás la implementación. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, haz clic en Implementar y editar una nueva revisión.

  3. En Configuración avanzada, haz clic en Variables and Secrets.

  4. Puedes hacer lo siguiente:

    • Si quieres agregar una variable, haz clic en Agregar variable y especifica el nombre que deseas para la variable y su valor en los cuadros de texto Nombre y Valor.
    • Si deseas cambiar el valor de una variable, reemplaza el valor actual en el cuadro de texto Value (Valor) por el que deseas.
    • Si quitas una o más variables de entorno, coloca el cursor a la izquierda del cuadro de texto Value (Valor) de la variable que deseas quitar para que se muestre el ícono de la Papelera, y haz clic en este.

  5. Haz clic en Siguiente para pasar a la siguiente sección.

  6. En la sección Configura la forma en que se activa el servicio, selecciona la conectividad que deseas usar para invocar el servicio.

  7. Haz clic en Crear para implementar la imagen en Knative serving y espera a que termine la implementación.

Línea de comandos

Puedes usar Google Cloud CLI a fin de configurar variables de entorno para servicios nuevos o actualizar servicios existentes:

  • Para los servicios existentes, actualiza las variables de entorno mediante la ejecución del comando gcloud run services update con uno de los siguientes parámetros:

    Ejemplo:

    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 por una lista separada por comas de los pares de nombre y valor para cada variable de entorno Especifica el nombre de la variable de entorno de cada KEY y el valor de esa variable de entorno para el VALUE. Cómo especificar varios parámetros.
    • Opciones de parámetros de comando

      • Para especificar una variable de entorno que contenga una coma (,), debes escapar cada KEY=VALUE con un delimitador diferente. Por ejemplo, si usas @:
        --set-env-vars "^@^KEY1=value,with,commas@KEY2=anothervalue@KEY3..."
        
      • A fin de especificar varios conjuntos de pares clave-valor, puedes especificar varios parámetros para facilitar la lectura. Ejemplo:
        [...]
        --set-env-vars "KEY=VALUE1" \
        --set-env-vars "KEY=VALUE2" \
        --set-env-vars "KEY=VALUE3"
        
  • En los servicios nuevos, configura las variables de entorno mediante la ejecución del comando gcloud run deploy con el parámetro --set-env-vars:

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

    Reemplaza lo siguiente:

    • IMAGE_URL por una referencia a la imagen del contenedor, como gcr.io/cloudrun/hello
    • SERVICE por el nombre de tu servicio
    • KEY1=VALUE1,KEY2=VALUE2 por una lista separada por comas de los pares de nombre y valor para cada variable de entorno Especifica el nombre de la variable de entorno de cada KEY y el valor de esa variable de entorno para el VALUE. Cómo especificar varios parámetros.
    • Opciones de parámetros de comando

      • Para especificar una variable de entorno que contenga una coma (,), debes escapar cada KEY=VALUE con un delimitador diferente. Por ejemplo, si usas @:
        --set-env-vars "^@^KEY1=value,with,commas@KEY2=anothervalue@KEY3..."
        
      • A fin de especificar varios conjuntos de pares clave-valor, puedes especificar varios parámetros para facilitar la lectura. Ejemplo:
        [...]
        --set-env-vars "KEY=VALUE1" \
        --set-env-vars "KEY=VALUE2" \
        --set-env-vars "KEY=VALUE3"
        

YAML

Puedes descargar la configuración de un servicio existente en un archivo YAML con el comando gcloud run services describe mediante la marca --format=export. Luego, puedes modificar ese archivo YAML e implementar esos cambios con el comando gcloud run services replace. Debes asegurarte de modificar solo los atributos especificados.

  1. Descarga la configuración del servicio en un archivo llamado service.yaml en el lugar de trabajo local:

    gcloud run services describe SERVICE --format export > service.yaml

    Reemplaza SERVICE por el nombre de tu servicio de Knative serving.

  2. En el archivo local, actualiza los atributos name y value en el atributo env en containers::

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

    Reemplazar

    • SERVICE por el nombre de tu servicio de Knative serving
    • KEY-1, VALUE-1 por la variable de entorno y el valor. También, puedes agregar más variables y valores según lo desees
  3. Reemplaza el servicio por la configuración nueva mediante el siguiente comando:

    gcloud run services replace service.yaml

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 Knative serving, el valor establecido en el servicio tiene prioridad.

Para usar los vínculos al Service de Kubernetes, debes habilitar la asistencia de forma manual. Debido a los problemas de rendimiento que se muestran en los espacios de nombres con miles de servicios y revisiones, los vínculos del servicio de Kubernetes se inhabilitaron de forma predeterminada a partir de enero de 2021.

A fin de habilitar los vínculos al Service de Kubernetes, ejecuta el siguiente comando para establecer data.enable-service-links en true en tu ConfigMap knative-serving/config-defaults:

kubectl patch cm -n knative-serving config-defaults -p '{"data":{"enable-service-links":"true"}}