Usa ConfigMaps

Aprende a crear un ConfigMap y, luego, configurar los servicios de entrega y las revisiones de Knative para que usen ese ConfigMap.

Un caso de uso común de un servicio es usar ConfigMaps para separar el código de la aplicación de la configuración. Un ConfigMap es similar a un secreto, excepto que usas este último para la información sensible y el primero para almacenar datos no sensibles, como strings de conexión, nombres de host, credenciales públicas y URLs, entre otros. Puedes obtener más información sobre el uso de ConfigMaps en la documentación de Google Kubernetes Engine.

Cuando habilitas los contenedores para acceder a ConfigMaps, puedes elegir una de estas opciones:

  • Activa el ConfigMap como un volumen, con entradas de ConfigMap disponibles como archivos en el volumen activado. Te recomendamos hacer esto, ya que así obtendrás la versión más reciente del ConfigMap cuando lo leas.
  • Pasa el ConfigMap mediante variables de entorno.

Crea un ConfigMap

Existen varias maneras de crear un ConfigMap, como se describe en la página ConfigMaps de la documentación de GKE. Por cuestiones prácticas, en los siguientes pasos, se muestra una manera simple de crear un ConfigMap.

Cuando crees un ConfigMap, asegúrate de crearlo en el mismo espacio de nombres que el clúster que ejecuta el servicio de entrega de Knative. En estas instrucciones, se usa el espacio de nombres default.

Puedes crear un ConfigMap desde la línea de comandos:

kubectl create configmap NAME DATA

Reemplaza lo siguiente:

  • NAME es el nombre de tu objeto ConfigMap.
  • DATA puede ser una de estas opciones:

    • La marca --from-file y la ruta de acceso para cada directorio que contiene uno o más archivos de configuración
    • La marca --from-literal y el par clave-valor de cada uno que desees agregar al ConfigMap

Por ejemplo:

kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm

El ConfigMap se crea y se sube en una ubicación donde esté disponible para los clústeres en el espacio de nombres default.

Haz que un ConfigMap esté disponible para un servicio

Después de crear un ConfigMap, puedes hacer que esté disponible para el servicio de entrega de Knative como un volumen o como variables de entorno con la consola de Google Cloud o Google Cloud CLI cuando implementes un servicio nuevo o actualices uno existente y, luego, implementes una revisión:

Console

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

    Ir a la entrega de Knative

  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. En Reference a ConfigMap (Crea una referencia a ConfigMap), selecciona el ConfigMap deseado en el menú desplegable.

    • En el menú desplegable Reference method (Método de referencia), selecciona la manera en la que deseas usar tu ConfigMap: activado como un volumen o expuesto como variables de entorno.
    • Si usas activado como volumen, especifica la ruta de acceso y haz clic en Listo.
    • Si la expones como variables de entorno, haz lo siguiente:
      1. Proporciona el Nombre de la variable y selecciona el valor de ConfigMap correspondiente en el menú desplegable Clave.
      2. Haz clic en Agregar para agregar otro valor de ConfigMap.
      3. Proporciona el Nombre de la variable y selecciona el valor de ConfigMap correspondiente en el menú desplegable Clave.
      4. Haz clic en Listo.

  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 la entrega de Knative y espera a que finalice la implementación.

Línea de comandos

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

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

    Ejemplo:

    gcloud run services update SERVICE --update-config-maps KEY1=VALUE1,KEY2=VALUE2
    

    Reemplaza lo siguiente:

    • SERVICE por el nombre de tu servicio
    • KEY1=VALUE1,KEY2=VALUE2 con una lista separada por comas de los pares de nombre y valor para cada ConfigMap Para cada KEY, puedes especificar una ruta de activación o proporcionar una variable de entorno. Para especificar una ruta de activación, comienza con una barra /. Todas las demás claves corresponden a variables de entorno. Para cada VALUE, especifica el nombre ConfigMap. Cómo especificar varios parámetros.
    • Opciones de parámetros de comando

      A fin de especificar varios conjuntos de pares clave-valor, puedes especificar varios parámetros para facilitar la lectura. Ejemplo:
      [...]
      --update-config-maps "KEY=VALUE1" \
      --update-config-maps "KEY=VALUE2" \
      --update-config-maps "KEY=VALUE3"
      
  • Para los servicios nuevos, configura el ConfigMap mediante la ejecución del comando gcloud run deploy con el parámetro --set-config-maps:

    gcloud run deploy SERVICE --image=IMAGE_URL --set-config-maps 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 con una lista separada por comas de los pares de nombre y valor para cada ConfigMap Para cada KEY, puedes especificar una ruta de activación o proporcionar una variable de entorno. Para especificar una ruta de activación, comienza con una barra /. Todas las demás claves corresponden a variables de entorno. Para cada VALUE, especifica el nombre ConfigMap. Cómo especificar varios parámetros.
    • Opciones de parámetros de comando

      A fin de especificar varios conjuntos de pares clave-valor, puedes especificar varios parámetros para facilitar la lectura. Ejemplo:
      [...]
      --update-config-maps "KEY=VALUE1" \
      --update-config-maps "KEY=VALUE2" \
      --update-config-maps "KEY=VALUE3"