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 archivos de configuración, argumentos de la línea de comandos, variables de entorno, números de puerto y otros artefactos de configuración a los contenedores y componentes del sistema de tus pods en el entorno de ejecución. ConfigMaps te permite separar los parámetros de configuración de los pods y los componentes, lo que ayuda a mantener las 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.

Los ConfigMaps son útiles para almacenar y compartir información de configuración no sensible y sin cifrar. Para usar información sensible en tus clústeres, debes usar secretos.

Cómo crear un ConfigMap

Crea un ConfigMap con el siguiente comando:

kubectl create configmap name data

En el ejemplo anterior, se ilustra lo siguiente:

  • name es el nombre de tu objeto ConfigMap.
  • data puede ser alguno de los siguientes:

    • una ruta de acceso 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 filename.

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

Se recomienda almacenar los archivos ConfigMap en Git. Esto te permite aprovechar una canalización de integración y entrega continuas (CI/CD). Para obtener más información sobre cómo usar este flujo de trabajo, consulta Entrega continua de estilo GitOps con Cloud Build.

Puedes pasar uno o varios archivos:

kubectl create configmap name --from-file path/to/file.properties --from-file path/to/file2.properties

También puedes pasar un directorio que contenga varios archivos:

kubectl create configmap name --from-file 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.

Para un ConfigMaps basado en directorios, cada archivo cuyo nombre base 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. Los subdirectorios también se ignoran; kubectl create configmap no se clasifica como subdirectorio.

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 el resultado 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: ...

Desde 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=value1 --from-literal key2=value2

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

Cuando se ejecuta kubectl get configmap literal-data -o yaml, se muestra el resultado siguiente:

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

Usa ConfigMaps

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 sobre ConfigMaps, consulta la sección sobre cómo configurar un pod para usar un ConfigMap.

Próximos pasos