Entrada

Kubernetes ConfigMap

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

Archivos de configuracion

Considerando los siguientes archivos configmap.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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}';
        }
    
    }

deployment.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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

Ejecucion

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