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
- una ruta a un directorio que contiene uno o más archivos de configuración, indicada con la marca
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 ejemplopath/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.