Saltar al contenido
NyverraNyverra
⌘K
InicioArtículosSitio institucional
🇪🇸
Nyverra

Canal editorial

Artículos sobre tecnología, operaciones y partners — infraestructura, monitorización y entornos críticos.

Redes sociales

Explorar

  • Inicio
  • Artículos
  • Categorías
  • Etiquetas
  • Autores
  • Sobre
  • Contacto
  • RSS
  • Sitio institucional

Nyverra

  • Nuestros servicios
  • Casos de éxito
  • Socios

Contacto

Correo[email protected]WhatsApp(62) 99309-1592Portal del clienteITSM · tickets y SLA

Rua RB 18, S/N — Casa 01, Sala 01 · Residencial Buriti · Senador Canedo – GO, Brasil · CEP 75260-459

Horario: lun–vie, 08–18 h

© 2026 Nyverra. Todos los derechos reservados.

CNPJ: 61.571.209/0001-08 · Registro estatal: 20.291.265-5 · D-U-N-S®: 57-323-5796

blog.nyverra.com.br

Términos de usoPrivacidadCookies
Volver arriba

No quieres reconstruir la imagen para cambiar una URL. ConfigMap y Secret existen para separar configuración de código.

Pero hay una diferencia peligrosa entre “funciona” y “está seguro”. Un Secret con minioadmin ya derribó un deploy nuestro — y el guard estaba en lo cierto.

Sello del curso: probado en Kubernetes 1.35.

ConfigMap: configuración no sensible

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  APP_ENV: production
  LOG_LEVEL: info
  features.json: |
    {"novoCheckout": true}

Tres formas de consumir:

# 1) variável individual
env:
  - name: APP_ENV
    valueFrom:
      configMapKeyRef:
        name: app-config
        key: APP_ENV

# 2) todas as chaves como variáveis
envFrom:
  - configMapRef:
      name: app-config

# 3) arquivo montado
volumes:
  - name: config
    configMap:
      name: app-config

Secret: configuración sensible (con reservas)

kubectl create secret generic app-secret \
  --from-literal=DB_PASSWORD='...' \
  --from-literal=API_TOKEN='...'
env:
  - name: DB_PASSWORD
    valueFrom:
      secretKeyRef:
        name: app-secret
        key: DB_PASSWORD

Base64 no es cifrado. Cualquier persona con get secret ve el valor. La seguridad de Secret depende de:

  • RBAC restrictivo.
  • Cifrado del etcd en reposo.
  • No versionar secrets en Git.
  • Rotación.

ConfigMap/Secret en volumen

Montaje como archivo:

volumes:
  - name: secret
    secret:
      secretName: app-secret

Cada clave se convierte en un archivo. Las actualizaciones en ConfigMap/Secret se propagan al volumen (con retraso), pero no a las variables de entorno ya inyectadas. Si la aplicación lee env en el arranque, necesita reiniciarse.

immutable: true impide alteraciones y reduce la carga en el kubelet; útil para configuraciones versionadas.

El guard de credenciales

Un guard de producción verifica si contraseñas por defecto conocidas están en uso. Ejemplo real:

INF-SEC-01: credenciais default/segredo ausente detetados em produção
(app.storage.s3.accessKey, app.storage.s3.secretKey).

La app se negó a subir porque el secret tenía minioadmin. El guard tenía razón; el cluster estaba equivocado.

Lección práctica: preflight en el pipeline. Antes de cambiar la imagen:

VAL=$(kubectl -n portal get secret portal-secrets \
  -o jsonpath='{.data.APP_STORAGE_S3_ACCESSKEY}' | base64 -d)
[ "$VAL" != "minioadmin" ] || { echo "credencial default"; exit 1; }

Rotación sin downtime

  1. Cree la nueva credencial en el proveedor (MinIO, banco, API).
  2. Actualice el Secret.
  3. Reinicie los pods que leen env (rolling update).
  4. Valide.
  5. Revoque la antigua.

Para secretos que no pueden coexistir, planee una ventana. Para los que soportan múltiples claves, haga rotación gradual.

Alternativas al Secret nativo

Herramienta Idea
Sealed Secrets secret cifrado en Git
External Secrets Operator busca en Vault/AWS/GCP
SOPS cifrado en el repositorio
Vault Agent Injector inyecta secreto en runtime

El objetivo es el mismo: el valor real no queda en texto claro en Git.

Laboratorio

  1. Cree ConfigMap y Secret.
  2. Inyecte como env y como volumen.
  3. Cambie el ConfigMap y vea el archivo actualizar (y el env no).
  4. Intente subir un pod con secretKeyRef para una clave inexistente — vea el error.
  5. Decodifique el Secret y compruebe que base64 no protege.

Errores comunes

Síntoma Causa
CreateContainerConfigError clave del Secret/ConfigMap ausente
App no ve cambio env inyectado en el arranque; necesita restart
illegal base64 data valor inválido en el Secret
Archivo con \r CRLF en el valor
Secret en Git fuga; rote
Guard derriba el pod credencial por defecto en producción

Checklist

  • [ ] Configuración no sensible en ConfigMap.
  • [ ] Secretos en Secret con RBAC restringido.
  • [ ] etcd con cifrado en reposo.
  • [ ] Ningún secret en texto claro en Git.
  • [ ] Plan de rotación documentado.
  • [ ] Preflight de credenciales en el pipeline.
  • [ ] Sé que base64 no es cifrado.

Glosario

  • ConfigMap: configuración no sensible.
  • Secret: objeto para datos sensibles.
  • envFrom: importa todas las claves como env.
  • immutable: objeto inmutable.
  • External Secrets: operador que sincroniza secretos externos.
  • etcd encryption: cifrado del estado en reposo.

Próximo

Ahora que la configuración está bajo control, vamos a observar el cluster: metrics-server, Prometheus, Grafana y las señales que realmente importan.

Próximo: Curso Kubernetes 13 — Observabilidad: metrics-server, Prometheus y Grafana

Compartir

Seguir leyendo

Lea también

  • Manual LSI / Broadcom MegaRAID — MegaCli y StorCLI
    Armazenamento

    Manual LSI / Broadcom MegaRAID — MegaCli y StorCLI

    Con esta guía, su equipo gana autonomía para diagnosticar rebuilds, resolver foreign configurations, gestionar BBU y CacheCade — con escenarios reales de producción documentados.

    31 de outubro de 202620 min de leitura
  • Nginx Cheatsheet

    Nginx Cheatsheet

    Guía de bolsillo con ejemplos listos para configurar Nginx en producción: desde instalación y virtual hosts hasta ajuste de rendimiento y resolución de problemas.

    31 de outubro de 202612 min de leitura
  • Curso Kubernetes 27 — SLO/SLI, on-call y postmortem sin culpa
    Kubernetes

    Curso Kubernetes 27 — SLO/SLI, on-call y postmortem sin culpa

    Qué prometer, cómo medir y qué hacer cuando el error se dispara: SLI, SLO, presupuesto de error, alertas que despiertan a alguien y postmortem sin caza de brujas.

    31 de outubro de 20265 min de leitura

Comentarios

Aún sin comentarios

Sea el primero en compartir su opinión sobre este artículo.

Deje un comentario

Newsletter

Reciba nuevos artículos

Suscríbase para recibir publicaciones del blog Nyverra en su correo. Enviaremos un enlace de confirmación.

​
  1. Inicio
  2. Kubernetes
  3. Curso Kubernetes 12 — ConfigMap, Secret y el guard de credenciales
Kubernetes
#Kubernetes#Curso Kubernetes#K8S

Curso Kubernetes 12 — ConfigMap, Secret y el guard de credenciales

Wedson LopesWedson Lopes
31 de outubro de 20264 min de leitura