Uso de un ConfigMap
- Definición de variables de entorno de carga de trabajo
- Definición de parámetros de línea de comandos
- Conexión de un ConfigMap al volumen de datos de carga de trabajo
En el siguiente ejemplo se muestra cómo utilizar un ConfigMap.
apiVersion: v1 kind: ConfigMap metadata: name: cce-configmap data: SPECIAL_LEVEL: Hello SPECIAL_TYPE: CCE
- Cuando se utiliza un ConfigMap en una carga de trabajo, la carga de trabajo y el ConfigMap deben estar en el mismo clúster y espacio de nombres.
- Cuando se monta un ConfigMap como volumen de datos y se actualiza el ConfigMap, Kubernetes actualiza los datos en el volumen de datos al mismo tiempo.
Para un volumen de datos de ConfigMap montado en modo subPath, Kubernetes no puede actualizar automáticamente los datos en el volumen de datos cuando se actualiza el ConfigMap.
- Cuando se utiliza un ConfigMap como variable de entorno, los datos no se actualizan automáticamente cuando se actualiza el ConfigMap. Para actualizar los datos, debe reiniciar el pod.
Definición de variables de entorno de carga de trabajo
Con la consola
- Inicie sesión en la consola de CCE y acceda a la consola del clúster.
- En el panel de navegación, elija Workloads. A continuación, haga clic en Create Workload.
Cuando cree una carga de trabajo, haga clic en Environment Variables en el área Container Settings y haga clic en .
- Added from ConfigMap: Seleccione un ConfigMap para importar todas sus claves como variables de entorno.
- Added from ConfigMap key: Importa una clave en un ConfigMap como el valor de una variable de entorno.
- Variable Name: nombre de una variable de entorno en la carga de trabajo. El nombre se puede personalizar y se establece en el nombre de clave seleccionado en el ConfigMap de forma predeterminada.
- Variable Value/Reference: Seleccione un ConfigMap y la clave que se va a importar. El valor correspondiente se importa como una variable de entorno de carga de trabajo.
Por ejemplo, después de importar el valor Hello de SPECIAL_LEVEL en el ConfigMap cce-configmap como valor de la variable de entorno de carga de trabajo SPECIAL_LEVEL, existe una variable de entorno llamada SPECIAL_LEVEL con su valor Hello en el contenedor.
- Added from ConfigMap: Seleccione un ConfigMap para importar todas sus claves como variables de entorno.
- Configure otros parámetros de carga de trabajo y haga clic en Create Workload.
Una vez que la carga de trabajo se ejecute correctamente, inicie sesión en contenedor y ejecute la siguiente instrucción para comprobar si ConfigMap se ha establecido como una variable de entorno de la carga de trabajo:
printenv SPECIAL_LEVEL
El resultado del ejemplo es el siguiente:
Hello
Con kubectl
- Utilice kubectl para conectarse al clúster. Para obtener más información, véase Conexión a un clúster con kubectl.
- Cree un archivo llamado nginx-configmap.yaml y edítelo.
vi nginx-configmap.yaml
Contenido del archivo YAML:
- Added from a ConfigMap: Para agregar todos los datos de un ConfigMap a las variables de entorno, utilice el parámetro envFrom. Las claves en el ConfigMap se convertirán en nombres de variables de entorno en la carga de trabajo.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-configmap spec: replicas: 1 selector: matchLabels: app: nginx-configmap template: metadata: labels: app: nginx-configmap spec: containers: - name: container-1 image: nginx:latest envFrom: # Use envFrom to specify a ConfigMap to be referenced by environment variables. - configMapRef: name: cce-configmap # Name of the referenced ConfigMap. imagePullSecrets: - name: default-secret
- Added from a ConfigMap key: Al crear una carga de trabajo, puede usar un ConfigMap para establecer variables de entorno y usar el parámetro valueFrom para hacer referencia al par clave-valor en ConfigMap por separado.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-configmap spec: replicas: 1 selector: matchLabels: app: nginx-configmap template: metadata: labels: app: nginx-configmap spec: containers: - name: container-1 image: nginx:latest env: # Set the environment variable in the workload. - name: SPECIAL_LEVEL # Name of the environment variable in the workload. valueFrom: # Specify a ConfigMap to be referenced by the environment variable. configMapKeyRef: name: cce-configmap # Name of the referenced ConfigMap. key: SPECIAL_LEVEL # Key in the referenced ConfigMap. - name: SPECIAL_TYPE # Add multiple environment variables to import them at the same time. valueFrom: configMapKeyRef: name: cce-configmap key: SPECIAL_TYPE imagePullSecrets: - name: default-secret
- Added from a ConfigMap: Para agregar todos los datos de un ConfigMap a las variables de entorno, utilice el parámetro envFrom. Las claves en el ConfigMap se convertirán en nombres de variables de entorno en la carga de trabajo.
- Cree una carga de trabajo.
kubectl apply -f nginx-configmap.yaml
- Vea la variable de entorno en el pod.
- Ejecute el siguiente comando para ver el pod creado:
kubectl get pod | grep nginx-configmap
Producto esperado:nginx-configmap-*** 1/1 Running 0 2m18s
- Ejecute el siguiente comando para ver las variables de entorno en el pod:
kubectl exec nginx-configmap-*** -- printenv SPECIAL_LEVEL SPECIAL_TYPE
Producto esperado:
Hello CCE
El ConfigMap se ha establecido como variables de entorno de la carga de trabajo.
- Ejecute el siguiente comando para ver el pod creado:
Definición de parámetros de línea de comandos
Puede utilizar un ConfigMap como variable de entorno para establecer comandos o valores de parámetros para un contenedor mediante la sintaxis de sustitución de variable de entorno $(VAR_NAME).
Con la consola
- Inicie sesión en la consola de CCE y acceda a la consola del clúster.
- En el panel de navegación, elija Workloads. A continuación, haga clic en Create Workload.
Cuando cree una carga de trabajo, haga clic en Environment Variables en el área Container Settings y haga clic en . En este ejemplo, seleccione Added from ConfigMap.
- Added from ConfigMap: Seleccione un ConfigMap para importar todas sus claves como variables de entorno.
- Added from ConfigMap: Seleccione un ConfigMap para importar todas sus claves como variables de entorno.
- Haga clic en Lifecycle en el área Container Settings, haga clic en la ficha Post-Start de la derecha y establezca los siguientes parámetros:
- Processing Method: CLI
- Command: Ingrese las tres líneas de comando siguientes. SPECIAL_LEVEL y SPECIAL_TYPE son los nombres de variables de entorno de la carga de trabajo, es decir, los nombres clave del ConfigMap cce-ConfigMap.
/bin/bash -c echo $SPECIAL_LEVEL $SPECIAL_TYPE > /usr/share/nginx/html/index.html
- Defina otros parámetros de carga de trabajo y haga clic en Create Workload.
Una vez que la carga de trabajo se ejecute correctamente, inicie sesión en contenedor y ejecute la siguiente instrucción para comprobar si ConfigMap se ha establecido como una variable de entorno de la carga de trabajo:
cat /usr/share/nginx/html/index.html
El resultado del ejemplo es el siguiente:
Hello CCE
Con kubectl
- Utilice kubectl para conectarse al clúster. Para obtener más información, véase Conexión a un clúster con kubectl.
- Cree un archivo llamado nginx-configmap.yaml y edítelo.
vi nginx-configmap.yaml
Como se muestra en el siguiente ejemplo, el ConfigMap cce-ConfigMap se importa a la carga de trabajo. SPECIAL_LEVEL y SPECIAL_TYPE son los nombres de variables de entorno de la carga de trabajo, es decir, los nombres clave del ConfigMap cce-ConfigMap.apiVersion: apps/v1 kind: Deployment metadata: name: nginx-configmap spec: replicas: 1 selector: matchLabels: app: nginx-configmap template: metadata: labels: app: nginx-configmap spec: containers: - name: container-1 image: nginx:latest lifecycle: postStart: exec: command: [ "/bin/sh", "-c", "echo $SPECIAL_LEVEL $SPECIAL_TYPE > /usr/share/nginx/html/index.html" ] envFrom: # Use envFrom to specify a ConfigMap to be referenced by environment variables. - configMapRef: name: cce-configmap # Name of the referenced ConfigMap. imagePullSecrets: - name: default-secret
- Cree una carga de trabajo.
kubectl apply -f nginx-configmap.yaml
- Una vez que la carga de trabajo se ejecuta correctamente, se introduce el siguiente contenido en el archivo /usr/share/nginx/html/index.html:
- Ejecute el siguiente comando para ver el pod creado:
kubectl get pod | grep nginx-configmap
Producto esperado:nginx-configmap-*** 1/1 Running 0 2m18s
- Ejecute el siguiente comando para ver las variables de entorno en el pod:
kubectl exec nginx-configmap-*** -- cat /usr/share/nginx/html/index.html
Producto esperado:
Hello CCE
- Ejecute el siguiente comando para ver el pod creado:
Conexión de un ConfigMap al volumen de datos de carga de trabajo
Los datos almacenados en un ConfigMap pueden ser referenciados en un volumen de tipo ConfigMap. Puede montar dicho volumen en una ruta de acceso de contenedor especificada. La plataforma admite la separación de códigos de carga de trabajo y archivos de configuración. Los volúmenes de ConfigMap se utilizan para almacenar parámetros de configuración de la carga de trabajo. Antes de eso, debe crear ConfigMaps por adelantado. Para obtener más información, véase Creación de un ConfigMap.
Con la consola
- Inicie sesión en la consola de CCE y acceda a la consola del clúster.
- En el panel de navegación, elija Workloads. A continuación, haga clic en Create Workload.
Cuando cree una carga de trabajo, haga clic en Data Storage en el área Container Settings. Haga clic en Add Volume y seleccione ConfigMap en la lista desplegable.
- Establezca el tipo de volumen local en ConfigMap y establezca los parámetros para agregar un volumen local, como se muestra en Tabla 1.
Tabla 1 Montaje de un volumen de ConfigMap Parámetro
Descripción
ConfigMap
Seleccione el ConfigMap deseado.
Un ConfigMap debe ser creado por adelantado. Para obtener más información, véase Creación de un ConfigMap.
Add Container Path
Configure los parámetros siguientes:- Mount Path: Introduzca una ruta de acceso del contenedor. Por ejemplo, /tmp.
Este parámetro indica la ruta de contenedor en la que se montará un volumen de datos. No monte el volumen en un directorio del sistema como / o /var/run; esta acción puede causar errores de contenedor. Se recomienda montar el volumen en un directorio vacío. Si el directorio no está vacío, asegúrese de que no hay archivos que afecten al inicio de contenedor. De lo contrario, se reemplazarán los archivos, lo que provocará errores de inicio de contenedor o errores de creación de carga de trabajo.AVISO:
Cuando el contenedor está montado en un directorio de alto riesgo, se recomienda utilizar una cuenta con los permisos mínimos para iniciar el contenedor; de lo contrario, los archivos de alto riesgo en la máquina host podrían estar dañados.
- Subpath: Introduzca una ruta secundaria, por ejemplo, tmp.
- Se utiliza una ruta secundaria para montar un volumen local de modo que se utilice el mismo volumen de datos en un solo pod. Si este parámetro se deja en blanco, la ruta raíz se utiliza de forma predeterminada.
- La ruta secundaria puede ser la clave y el valor de un ConfigMap o secreto. Si la ruta secundaria es un par clave-valor que no existe, la importación de datos no tiene efecto.
- Los datos importados especificando una ruta secundaria no se actualizarán junto con las actualizaciones de ConfigMap/secret.
- Establezca el permiso en Read-only. Los volúmenes de datos de la ruta son de solo lectura.
Puede hacer clic en para agregar varias rutas y subrutas.
- Mount Path: Introduzca una ruta de acceso del contenedor. Por ejemplo, /tmp.
Con kubectl
- Utilice kubectl para conectarse al clúster. Para obtener más información, véase Conexión a un clúster con kubectl.
- Cree un archivo llamado nginx-configmap.yaml y edítelo.
vi nginx-configmap.yaml
Como se muestra en el siguiente ejemplo, después de montar el volumen de ConfigMap, se genera un archivo de configuración con la clave como el nombre y el valor como el contenido del archivo en el directorio /etc/config del contenedor.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-configmap spec: replicas: 1 selector: matchLabels: app: nginx-configmap template: metadata: labels: app: nginx-configmap spec: containers: - name: container-1 image: nginx:latest volumeMounts: - name: config-volume mountPath: /etc/config # Mount to the /etc/config directory. readOnly: true volumes: - name: config-volume configMap: name: cce-configmap # Name of the referenced ConfigMap.
- Cree una carga de trabajo.
kubectl apply -f nginx-configmap.yaml
- Una vez que la carga de trabajo se ejecuta correctamente, los archivos SPECIAL_LEVEL y SPECIAL_TYPE se generan en el directorio /etc/config. El contenido de los archivos son Hello y CCE respectivamente.
- Ejecute el siguiente comando para ver el pod creado:
kubectl get pod | grep nginx-configmap
Producto esperado:nginx-configmap-*** 1/1 Running 0 2m18s
- Ejecute el siguiente comando para ver el archivo SPECIAL_LEVEL o SPECIAL_TYPE en el pod:
kubectl exec nginx-configmap-*** -- /etc/config/SPECIAL_LEVEL
Producto esperado:
Hello
- Ejecute el siguiente comando para ver el pod creado: