Volver al blog

Kubernetes ConfigMap

Resumen Técnico & Objetivo

ConfigMap es otro servicio de kubernetes que nos ayuda a aplicar la configuración de un deployment en este documento veremos una configuración mínima de cómo desplegar con este ...


ConfigMap es otro servicio de kubernetes que nos ayuda a aplicar la configuración de un deployment en este documento veremos una configuración mínima de cómo desplegar con este tipo de objeto.

Requerimientos

Tener instalado y ejecutándose

Configuración

Configmap es un objeto que nos ayuda a la gestión de la configuración, esta configuración puede aplicarse como…

  1. Como argumento
  2. Como una variable de entorno
  3. Como un archivo

Para ver la documentacion completa puedes verla el la pagina principal de kubernetes.io {: .prompt-tip }

Archivos de configuracion

Considerando los siguientes archivos configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: config-web
data:
  # Clave-valor
  mensaje: "I'm alive"
  port: "80"
  database: "mysql://localhost:3306/aplicacion"
  # Fichero / Multilinea
  default.conf.template: |
    server {
        listen       8080;
        server_name  localhost;
    
        location /keepalive {
            return 200 '${MENSAJE}';
        }
    
    }

{: file=“~/demo/configmap.yaml” }

deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-web
  labels:
    app: deployment-web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: deployment-web
  template:
    metadata:
      labels:
        app: deployment-web
    spec:
      containers:
      - name: nginx
        image: nginx:1.20-alpine
        # Sólo algunos valores
        env:
          - name: MENSAJE
            valueFrom:
              configMapKeyRef:
                name: config-web
                key: mensaje
        volumeMounts:
          - mountPath: /etc/nginx/templates
            name: templates
            readOnly: true
        ports:
        - containerPort: 80
      volumes:
        - name: templates
          configMap:
            name: config-web
            items:
              - key: default.conf.template
                path: default.conf.template

{: file=“~/demo/deployment.yaml” }

Ejecucion

  1. Aplicamos el configmap
$ kubectl apply -f ~/demo/configmap.yaml
  1. Aplicamos el deploy
$ kubectl apply -f ~/demo/deployment.yaml
  1. Ubicamos el pod
$ kubectl get pods
NAME                               READY   STATUS    RESTARTS   AGE
web-configurada-59c9865d66-bkcmz   1/1     Running   0          7m9s
  1. obtenemos la variable de entorno
$ kubectl exec -i -t web-configurada-59c9865d66-bkcmz -- env|grep "MENSAJE"
MENSAJE=I'm alive
  1. Obtenemos la configuración
$ kubectl exec -i -t web-configurada-7f7d8dfd8c-kvmc6 -- cat /etc/nginx/templates/default.conf.template
server {
    listen       8080;
    server_name  localhost;
    location / {
        return 200 '${MENSAJE}';
    }
}