Usar ConfigMaps

Consulta cómo crear un ConfigMap y, a continuación, configura tus servicios y revisiones de Knative Serving para que usen ese ConfigMap.

Un caso de uso habitual de un servicio es usar ConfigMaps para separar el código de la aplicación de la configuración. ConfigMap es similar a Secret, pero se usa Secret para la información sensible y ConfigMap para almacenar datos no sensibles, como cadenas de conexión, credenciales públicas, nombres de host y URLs. Puedes consultar más información sobre el uso de ConfigMaps en la documentación de Google Kubernetes Engine.

Cuando habilitas el acceso de los contenedores a los ConfigMaps, puedes elegir una de estas opciones:

  • Monta el ConfigMap como un volumen, con las entradas de ConfigMap disponibles como archivos en el volumen montado. Te recomendamos que lo hagas porque así te aseguras de obtener la última versión del ConfigMap cuando lo leas.
  • Transfiere el ConfigMap mediante variables de entorno.

Crear un objeto ConfigMap

Hay varias formas de crear un ConfigMap, tal como se describe en la página ConfigMaps de la documentación de GKE. Para tu comodidad, en los pasos siguientes se muestra una forma sencilla de crear un ConfigMap.

Cuando crees un ConfigMap, asegúrate de hacerlo en el mismo espacio de nombres que el clúster que ejecuta tu servicio de Knative Serving. 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

Sustituye:

  • NAME es el nombre de tu objeto ConfigMap.
  • DATA puede ser uno de los siguientes tipos de evento:

    • La marca --from-file y la ruta de cada directorio que contenga uno o varios archivos de configuración.
    • La marca --from-literal y el par clave-valor de cada elemento que quieras añadir 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 a donde está disponible para los clústeres del espacio de nombres default.

Poner un ConfigMap a disposición de un servicio

Una vez que hayas creado un ConfigMap, puedes ponerlo a disposición de tu servicio de Knative Serving como volumen o como variables de entorno mediante la consola de Google Cloud o la CLI de Google Cloud cuando despliegues un nuevo servicio o actualices un servicio y despliegues una revisión: Google Cloud

Consola

  1. Ve a Knative Serving en la Google Cloud consola:

    Ir a Knative serving

  2. 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.

  3. En Configuración avanzada, haz clic en Variables y secretos.

  4. En Añadir una referencia de ConfigMap, selecciona el ConfigMap que quieras en el menú desplegable.

    • En el menú desplegable Método de referencia, selecciona la forma en que quieres usar tu ConfigMap: montado como un volumen o expuesto como variables de entorno.
    • Si vas a usar el montaje como volumen, especifica la ruta y haz clic en Hecho.
    • Si vas a exponerlas como variables de entorno, haz lo siguiente:
      1. Indica el nombre de la variable y selecciona el valor de ConfigMap correspondiente en el menú desplegable Clave.
      2. Haz clic en Añadir para añadir otro valor de ConfigMap.
      3. Indica 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 ir a la siguiente sección.

  6. En la sección Configurar la activación del servicio, selecciona la conectividad que quieras usar para invocar el servicio.

  7. 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 ConfigMaps en servicios nuevos o para actualizar servicios que ya tengas:

  • En el caso de los servicios que ya tengas, actualiza un ConfigMap ejecutando el 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

    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 ConfigMap. En cada KEY, puedes especificar una ruta de montaje o proporcionar una variable de entorno. Especifica una ruta de montaje empezando por una barra inclinada /. Todas las demás claves corresponden a variables de entorno. En cada VALUE, especifica el nombre de ConfigMap. Cómo especificar varios parámetros
    • Opciones de parámetros de comandos

      Para especificar varios conjuntos de pares clave-valor, puedes especificar varios parámetros para mejorar la legibilidad. Ejemplo:
      [...]
      --update-config-maps "KEY=VALUE1" \
      --update-config-maps "KEY=VALUE2" \
      --update-config-maps "KEY=VALUE3"
  • En el caso de los servicios nuevos, define el ConfigMap ejecutando el 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

    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 ConfigMap. En cada KEY, puedes especificar una ruta de montaje o proporcionar una variable de entorno. Especifica una ruta de montaje empezando por una barra inclinada /. Todas las demás claves corresponden a variables de entorno. En cada VALUE, especifica el nombre de ConfigMap. Cómo especificar varios parámetros
    • Opciones de parámetros de comandos

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