0Pricing
Docker & DevOps Fundamentals · Lección

ConfigMaps y Secrets

Administre de forma segura los datos de configuración y la información confidencial en sus implementaciones de Kubernetes mediante ConfigMaps y Secrets.

ConfigMaps y Secrets es una lección gratuita de Docker & DevOps Fundamentals en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Docker & DevOps Fundamentals, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Docker & DevOps Fundamentals incluye 4 lecciones en total.

Introducción a ConfigMaps y Secrets

¡Le damos la bienvenida! En esta lección aprenderá a administrar datos de configuración e información confidencial en Kubernetes. Exploraremos ConfigMaps y Secrets, dos herramientas esenciales para realizar despliegues de aplicaciones flexibles y seguros.

ConfigMaps y Secrets — ilustración 1

¿Por qué externalizar la configuración?

Imagine que codifica directamente las credenciales de la base de datos o las claves de API en la imagen de Docker de su aplicación. Esto dificulta las actualizaciones y expone datos confidenciales.

  • Falta de flexibilidad: los cambios requieren volver a generar la imagen.
  • Riesgo de seguridad: los datos confidenciales quedan integrados en la imagen.
  • Especificidad del entorno: los distintos entornos (desarrollo, producción) necesitan configuraciones diferentes.

ConfigMaps: datos no confidenciales

Un ConfigMap es un objeto de Kubernetes que se utiliza para almacenar datos de configuración no confidenciales como pares clave-valor. Piense en él como un lugar central para la configuración de su aplicación, como los niveles de registro o los endpoints de API.

Desacopla la configuración del código de su aplicación, lo que hace que los despliegues sean más portables y fáciles de administrar.

Definir un ConfigMap

Puede crear un ConfigMap a partir de valores literales, archivos o directorios. Este es un ejemplo sencillo definido en un archivo YAML:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-app-config
data:
  log_level: "INFO"
  api_endpoint: "http://myapi.example.com"

ConfigMap como variables de entorno

Una vez creado, un Pod puede consumir los datos de un ConfigMap como variables de entorno. Esta es una forma habitual de pasar configuraciones a su aplicación.

Así es como un Pod utiliza nuestro my-app-config:

apiVersion: v1
kind: Pod
metadata:
  name: configmap-env-pod
spec:
  containers:
  - name: my-container
    image: busybox
    command: ["sh", "-c", "echo Log Level: $LOG_LEVEL; echo API: $API_ENDPOINT"]
    env:
    - name: LOG_LEVEL
      valueFrom:
        configMapKeyRef:
          name: my-app-config
          key: log_level
    - name: API_ENDPOINT
      valueFrom:
        configMapKeyRef:
          name: my-app-config
          key: api_endpoint
  restartPolicy: Never

ConfigMap como archivos montados

Como alternativa, los datos de un ConfigMap se pueden montar como archivos dentro de su contenedor. Cada par clave-valor se convierte en un archivo, donde la clave es el nombre del archivo y el valor es su contenido.

Esto resulta útil para los archivos de configuración que su aplicación espera leer desde una ruta específica.

apiVersion: v1
kind: Pod
metadata:
  name: configmap-file-pod
spec:
  containers:
  - name: my-container
    image: busybox
    command: ["sh", "-c", "cat /etc/config/log_level; cat /etc/config/api_endpoint"]
    volumeMounts:
    - name: config-volume
      mountPath: /etc/config
  volumes:
  - name: config-volume
    configMap:
      name: my-app-config
  restartPolicy: Never

Secrets: datos confidenciales

Los Secrets son similares a los ConfigMaps, pero están diseñados para datos confidenciales como contraseñas, claves de API o certificados TLS. Kubernetes le ayuda a administrarlos y distribuirlos de forma segura.

Mientras que los ConfigMaps almacenan los datos en texto plano, los Secrets están codificados en base64. Esto NO es cifrado, pero evita la exposición accidental.

Definir un Secret

Al crear un Secret, los valores deben estar codificados en base64. Puede utilizar echo -n 'my-password' | base64 para codificarlos.

Este es un ejemplo para la contraseña de una base de datos:

apiVersion: v1
kind: Secret
metadata:
  name: db-credentials
type: Opaque
data:
  username: YWRtaW4= # base64 of 'admin'
  password: c3VwZXJzZWNyZXRwYXNz # base64 of 'supersecretpass'

Usar Secrets en Pods

Los Pods consumen los Secrets prácticamente de la misma forma que los ConfigMaps: como variables de entorno o archivos montados. Kubernetes los decodifica automáticamente antes de presentarlos al contenedor.

Por motivos de seguridad, generalmente se prefiere utilizarlos como archivos montados, ya que las variables de entorno se pueden registrar o inspeccionar con mayor facilidad.

apiVersion: v1
kind: Pod
metadata:
  name: secret-env-pod
spec:
  containers:
  - name: my-app-container
    image: busybox
    command: ["sh", "-c", "echo DB User: $DB_USERNAME; echo DB Pass: $DB_PASSWORD"]
    env:
    - name: DB_USERNAME
      valueFrom:
        secretKeyRef:
          name: db-credentials
          key: username
    - name: DB_PASSWORD
      valueFrom:
        secretKeyRef:
          name: db-credentials
          key: password
  restartPolicy: Never

Prácticas recomendadas de seguridad

Recuerde que la codificación en base64 no es cifrado. Para aplicar un cifrado real en reposo, puede necesitar un backend de Kubernetes Secrets (como Vault) o utilizar servicios KMS de un proveedor de nube.

  • RBAC: controle quién puede acceder a los Secrets.
  • Principio de mínimo privilegio: conceda a los Pods únicamente acceso a los Secrets que necesiten.
  • Archivos montados: prefiera montar los Secrets como archivos en lugar de utilizarlos como variables de entorno.

Comprobación rápida sobre la configuración

Necesita almacenar en Kubernetes una clave de API (confidencial) y una configuración del nivel de registro (no confidencial) para su aplicación.

¿Qué objetos de Kubernetes debería utilizar para cada uno, respectivamente?

Repaso: ConfigMaps y Secrets

¡Excelente trabajo! Ha aprendido a administrar la configuración de aplicaciones y los datos confidenciales en Kubernetes.

  • ConfigMaps: almacenan pares clave-valor no confidenciales.
  • Secrets: almacenan datos confidenciales (codificados en base64).
  • Los Pods pueden consumir ambos como variables de entorno o archivos montados.
  • Siga siempre las prácticas recomendadas de seguridad al gestionar información confidencial.

A continuación, explore temas avanzados de seguridad, como RBAC y las soluciones externas de gestión de Secrets.

Preguntas frecuentes

¿La lección «ConfigMaps y Secrets» es gratis?

Sí — el texto completo de «ConfigMaps y Secrets» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Docker & DevOps Fundamentals, actualiza a CoddyKit PRO. El curso de Docker & DevOps Fundamentals incluye 4 lecciones en total.

¿Qué aprenderé en «ConfigMaps y Secrets»?

Administre de forma segura los datos de configuración y la información confidencial en sus implementaciones de Kubernetes mediante ConfigMaps y Secrets. Practicas Docker & DevOps Fundamentals con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Docker & DevOps Fundamentals?

No se requiere experiencia previa. Docker & DevOps Fundamentals en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «ConfigMaps y Secrets»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Docker & DevOps Fundamentals?

Sí. Cada lección de Docker & DevOps Fundamentals incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Deployments para aplicaciones sin estado
  2. Services para el acceso de red
  3. ConfigMaps y Secrets
  4. Ingress y enrutamiento externo
← Volver a Docker & DevOps Fundamentals