Consulta cómo crear y usar variables de entorno en el servicio de Knative.
Cuando define variables de entorno,
se insertan en el contenedor y su código puede acceder a ellas.
Las variables de entorno se definen como pares clave/valor. Por ejemplo, supongamos que estás ejecutando un servicio que habilita el registro adicional cuando lee LOGGING_VERBOSE: true
en el entorno. En este caso, el par clave-valor de la variable de entorno es LOGGING_VERBOSE=true
. Los comandos o la interfaz de usuario exactos se muestran en las siguientes secciones.
Nombres reservados
Las variables de entorno definidas en el contrato de tiempo de ejecución del contenedor están reservadas y no se pueden definir. En concreto, Knative Serving inserta la variable de entorno PORT
en tu contenedor. No debes configurarlo tú.
Configurar variables de entorno en un servicio
Cualquier cambio en la configuración conlleva la creación de una nueva revisión. Las revisiones posteriores también recibirán automáticamente este ajuste de configuración, a menos que hagas cambios explícitos para modificarlo.
Puedes definir variables de entorno mediante la Google Cloud consola, la CLI de Google Cloud o un archivo YAML al desplegar un nuevo servicio o actualizar un servicio y desplegar una revisión:
Consola
Ve a Knative Serving en la Google Cloud consola:
Haga clic en Crear servicio si va a configurar un servicio nuevo que va a implementar. Si va a configurar un servicio que ya tiene, haga clic en él y, a continuación, en Editar y desplegar nueva revisión.
En Configuración avanzada, haz clic en Variables y secretos.
Sigue estos pasos:
- Si vas a añadir una variable, haz clic en Añadir variable y especifica el nombre que quieras darle a la variable y su valor en los cuadros de texto Nombre y Valor.
- Si vas a cambiar el valor de una variable, sustituye el valor actual del cuadro de texto Valor por el que quieras.
- Si vas a quitar una o varias variables de entorno, coloca el cursor a la izquierda del cuadro de texto Valor de la variable que vas a quitar para que se muestre el icono de la papelera y haz clic en él.
Haz clic en Siguiente para ir a la siguiente sección.
En la sección Configurar la activación del servicio, selecciona la conectividad que quieras usar para invocar el servicio.
Haz clic en Crear para desplegar la imagen en Knative Serving y espera a que se complete el despliegue.
Línea de comandos
Puedes usar la CLI de Google Cloud para definir variables de entorno de servicios nuevos o para actualizar servicios que ya tengas:
En el caso de los servicios que ya tengas, actualiza las variables de entorno ejecutando el 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
Sustituye:
- SERVICE con el nombre de tu servicio.
- KEY1=VALUE1,KEY2=VALUE2 con una lista separada por comas de 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 de VALUE. Cómo especificar varios parámetros
-
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..."
-
Para especificar varios conjuntos de pares clave-valor, puedes especificar varios parámetros para mejorar la legibilidad. Ejemplo:
[...] --set-env-vars "KEY=VALUE1" \ --set-env-vars "KEY=VALUE2" \ --set-env-vars "KEY=VALUE3"
Opciones de parámetros de comandos
En el caso de los servicios nuevos, define las variables de entorno ejecutando el 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
Sustituye:
- IMAGE_URL con una referencia a la imagen del contenedor, por ejemplo,
gcr.io/cloudrun/hello
. - SERVICE con el nombre de tu servicio.
- KEY1=VALUE1,KEY2=VALUE2 con una lista separada por comas de 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 de VALUE. Cómo especificar varios parámetros
-
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..."
-
Para especificar varios conjuntos de pares clave-valor, puedes especificar varios parámetros para mejorar la legibilidad. Ejemplo:
[...] --set-env-vars "KEY=VALUE1" \ --set-env-vars "KEY=VALUE2" \ --set-env-vars "KEY=VALUE3"
Opciones de parámetros de comandos
- IMAGE_URL con una referencia a la imagen del contenedor, por ejemplo,
YAML
Puedes descargar la configuración de un servicio en un archivo YAML con el comando gcloud run services describe
mediante la marca --format=export
.
A continuación, puedes modificar ese archivo YAML e implementar
los cambios con el comando gcloud run services replace
.
Debe asegurarse de modificar solo los atributos especificados.
Descarga la configuración de tu servicio en un archivo llamado
service.yaml
en el espacio de trabajo local:gcloud run services describe SERVICE --format export > service.yaml
Sustituye SERVICE por el nombre de tu servicio de Knative.
En el archivo local, actualice los atributos
name
yvalue
del atributoenv
del atributocontainers:
: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
Sustituir
- SERVICE con el nombre de tu servicio de Knative
- KEY-1, VALUE-1 con la variable de entorno y el valor. También puede añadir más variables y valores si lo desea.
Sustituye el servicio por su nueva configuración con el siguiente comando:
gcloud run services replace service.yaml
Definir variables de entorno predeterminadas en el contenedor
Puedes usar la instrucción ENV
en un Dockerfile para definir valores predeterminados para las variables de entorno:
ENV KEY1=VALUE1,KEY2=VALUE2
Orden de prioridad: variables de contenedor frente a variables de servicio
Si define una variable de entorno predeterminada en el contenedor y también define una variable de entorno con el mismo nombre en el servicio de Knative, prevalecerá el valor definido en el servicio.
Habilitar enlaces de servicio de Kubernetes
Para usar los enlaces de servicio de Kubernetes, debes habilitar la compatibilidad manualmente. Debido a los problemas de rendimiento observados en los espacios de nombres con miles de servicios y revisiones, los enlaces de servicio de Kubernetes se inhabilitaron de forma predeterminada a partir de enero del 2021.
Para habilitar los enlaces de servicio de Kubernetes, ejecuta el siguiente comando para asignar el valor true
a data.enable-service-links
en tu knative-serving/config-defaults
ConfigMap:
kubectl patch cm -n knative-serving config-defaults -p '{"data":{"enable-service-links":"true"}}