ConfigMap


En esta página, se describe el objeto ConfigMap de Kubernetes y su uso en Google Kubernetes Engine (GKE).

Descripción general

ConfigMaps vincula artefactos de configuración no sensibles, como archivos de configuración, argumentos de línea de comandos y variables de entorno a tus contenedores de Pod y componentes del sistema en el entorno de ejecución.

Un ConfigMap separa tus opciones de configuración del Pod y los componentes, lo que ayuda a mantener tus cargas de trabajo portátiles. Esto facilita el cambio y la administración de sus parámetros de configuración, y evita que se codifiquen los datos de configuración según las especificaciones de pod.

Crear ConfigMap

Puedes crear un ConfigMap con el siguiente comando:

kubectl create configmap NAME DATA

Reemplaza lo siguiente:

  • NAME: El nombre de tu objeto ConfigMap.
  • DATA: los datos de configuración del ConfigMap, que pueden ser uno de los siguientes:

    • una ruta a un directorio que contiene uno o más archivos de configuración, indicada con la marca --from-file
    • pares clave-valor, cada uno especificado con marcas --from-literal

Para obtener más información sobre kubectl create, consulta la documentación de referencia.

También puedes crear un ConfigMap si defines un objeto ConfigMap en un archivo de manifiesto YAML e implementas el objeto mediante kubectl create -f FILE_NAME.

Crea un ConfigMap a partir de archivos

Para crear un ConfigMap a partir de uno o más archivos, usa --from-file. Puedes especificar archivos en cualquier formato de texto simple, como .properties, .txt o .env, pero los archivos siempre deben contener pares clave-valor.

Como recomendación, almacena tus archivos ConfigMap en Git. Esto te permite aprovechar una canalización de integración y entrega continuas (CI/CD).

Para pasar un solo archivo o varios archivos, ejecuta el siguiente comando:

kubectl create configmap NAME \
    --from-file FILE_PATH_1 \
    --from-file FILE_PATH_2

Reemplaza lo siguiente:

  • NAME: El nombre de tu objeto ConfigMap.
  • FILE_PATH_1: la ruta de acceso al archivo, por ejemplo, path/to/file.properties.
  • FILE_PATH_2 la ruta a un segundo archivo, por ejemplo path/to/file2.properties.

Para pasar un directorio que contenga varios archivos, ejecuta el siguiente comando:

kubectl create configmap NAME \
    --from-file DIRECTORY

Reemplaza lo siguiente:

  • NAME: El nombre de tu objeto ConfigMap.
  • DIRECTORY: la ruta de acceso del directorio, por ejemplo, path/to/directory.

Cuando creas un ConfigMap basado en archivos, la clave se establece de forma predeterminada en el nombre base del archivo y el valor predeterminado en el contenido del archivo. También puedes especificar una clave alterna.

Cuando creas un ConfigMap basado en directorios, cada archivo con un nombre base que es una clave válida en el directorio se empaqueta en el ConfigMap. kubectl ignora los archivos no regulares, como los symlinks, los dispositivos y las canalizaciones. kubectl también ignora los subdirectorios porque kubectl create configmap no se clasifica en subdirectorios.

Por ejemplo, con el comando siguiente, se crea un ConfigMap denominado game-data desde un directorio, game-configs, que contiene dos archivos properties, game.properties y ui.properties:

kubectl create configmap game-data \
    --from-file game-configs/

Cuando se ejecuta kubectl get configmap game-data -o yaml, se muestra la salida siguiente:

apiVersion: v1
data:
  game.properties: |
    enemies=aliens
    lives=3
    ...
  ui.properties: |
    color.good=purple
    color.bad=yellow
    allow.textmode=true
    ...
kind: ConfigMap
metadata:
  creationTimestamp: ...
  name: game-data
  namespace: default
  resourceVersion: ...
  selfLink: /api/v1/namespaces/default/configmaps/game-data
  uid: ...

Crea un ConfigMap a partir de valores literales

Para crear un ConfigMap a partir de valores literales, usa --from-literal.

Por ejemplo, con el comando siguiente, se crea un ConfigMap denominado LITERAL_DATA con dos pares clave-valor:

kubectl create configmap LITERAL_DATA \
    --from-literal key1=VALUE_1 \
    --from-literal key2=VALUE_2

Especifica --from-literal para cada par clave-valor.

Cuando se ejecuta kubectl get configmap literal-data -o yaml, se muestra la salida siguiente:

apiVersion: v1
data:
  key1: VALUE_1
  key2: VALUE_2
kind: ConfigMap
metadata:
  creationTimestamp: ...
  name: LITERAL_DATA
  namespace: default
  resourceVersion: ....
  selfLink: /api/v1/namespaces/default/configmaps/literal-data
  uid: ...

Usa un ConfigMap

Para usar un ConfigMap con tus cargas de trabajo, puedes especificar una variable de entorno que haga referencia a los valores del ConfigMap o activar un volumen que contenga el ConfigMap. A fin de obtener más información, consulta Configura un Pod para usar un ConfigMap.

¿Qué sigue?