Configurar aplicaciones en AKS con ConfigMaps, secretos y almacenamiento persistente
Volver a la ruta AI-200
AI-200Capítulo 7

Preparación para la Certificación Microsoft AI-200

Configurar aplicaciones en AKS con ConfigMaps, secretos y almacenamiento persistente

Externaliza valores no confidenciales, protege credenciales con Kubernetes y servicios de Azure y elige almacenamiento duradero con PVC, controladores CSI, modos de acceso y StorageClasses.

Tiempo de estudio sugerido: 85 minutos • Nivel intermedio • Reescritura original completa con versión resumida de cada tema, evaluación comentada y laboratorio guiado

Escudo neón Microsoft Certified AI-200 con símbolos de IA, desarrollo en la nube, automatización, seguridad y supervisión

1. Externalizar estado sin perder seguridad ni confiabilidad

Una de inferencia suele cambiar y marcas entre entornos, autenticarse en servicios de modelos o datos y escribir embeddings, caché, conversaciones, cargas o registros. Incluirlo en la imagen acopla configuración a la versión, expone credenciales y pierde datos cuando se sustituye el Pod.

separa estas responsabilidades. ConfigMaps guarda valores no confidenciales, Secrets representa datos sensibles y PersistentVolumes con PersistentVolumeClaims proporciona almacenamiento fuera del sistema del contenedor. Así se logran despliegues previsibles, gobierno y cargas con estado que sobreviven a reinicios y reprogramaciones.

  • Inyectar ConfigMaps como variables o archivos montados.
  • Referenciar Secrets de Kubernetes o servicios centralizados de .
  • Solicitar capacidad duradera con PVC y StorageClass.
  • Aplicar y comprobar configuración, credenciales y persistencia con kubectl.

Resumen del tema

Mantén código e imagen estables mientras configuración, credenciales y datos duraderos siguen ciclos independientes.

2. Definir ConfigMaps para valores no confidenciales

ConfigMap es un objeto de Kubernetes con ámbito de cuyo campo data contiene pares de texto. Sirve para marcas, , ajustes y archivos de configuración, no para contraseñas o . Las claves admiten caracteres alfanuméricos, guiones, guion bajo y punto.

Cada ConfigMap está limitado a 1 MiB. Usa binaryData para valores binarios en y volumen persistente o servicio externo para contenido mayor. El límite mantiene eficiente la sincronización con nodos y el almacenamiento etcd.

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-settings
data:
  FEATURE_X_ENABLED: "true"
  SERVICE_ENDPOINT: "https://api.example.com"
  app.config: |
    log_level=info
    timeout_seconds=30

Resumen del tema

ConfigMaps externaliza configuración pequeña y no sensible; archivos grandes y datos confidenciales requieren almacenes específicos.

3. Inyectar claves seleccionadas o todas como variables

configMapKeyRef vincula una clave con una variable. envFrom con configMapRef importa todas las claves y reduce repetitivo. Las referencias individuales son explícitas y permiten renombrar; la importación masiva conviene si todas pertenecen al entorno del proceso.

env:
- name: FEATURE_X_ENABLED
  valueFrom:
    configMapKeyRef:
      name: app-settings
      key: FEATURE_X_ENABLED
# Load every key instead:
# envFrom:
# - configMapRef:
#     name: app-settings

volumes:
- name: config-volume
  configMap:
    name: app-settings
containers:
- name: api
  volumeMounts:
  - name: config-volume
    mountPath: /app/config
    readOnly: true

Las variables se capturan al iniciar. Modificar ConfigMap no cambia contenedores existentes: hace falta rollout o reinicio. Comprueba con kubectl describe pod, printenv mediante kubectl exec y registros, sin mostrar valores confidenciales.

Un ConfigMap entrega claves seleccionadas o todas como variables y también puede montarse como archivos en Pods de AKS.
Elige la forma de consumo según cómo lee configuración la aplicación.

Resumen del tema

Usa configMapKeyRef para claves explícitas, envFrom para importación masiva y reinicia Pods cuando cambian variables.

4. Montar ConfigMaps como archivos y comprender la actualización

Aplicaciones que esperan , INI u otro archivo pueden montar un volumen basado en ConfigMap. Cada clave se convierte en archivo; items selecciona claves y cambia rutas. Marca el montaje de solo lectura porque ConfigMap es la fuente de verdad.

kubelet actualiza periódicamente el contenido de un volumen normal tras un cambio. La aplicación debe observar o releer el archivo. subPath no recibe actualización automática y las variables nunca cambian en ejecución. Prueba el patrón exacto.

Resumen del tema

Monta archivos cuando la aplicación los espera, distinguiendo actualización del volumen, variables estáticas y subPath sin actualización.

5. ConfigMaps inmutables y centralizada

immutable: true evita cambios accidentales y permite cerrar watches para reducir carga de . No se puede revertir ni editar. Publica un ConfigMap versionado y actualiza la referencia; reutilizar el nombre exige borrar y recrear, mientras Pods existentes conservan su montaje anterior hasta reiniciarse.

Para valores compartidos entre aplicaciones, entornos o clústeres, el proveedor de Kubernetes para recupera valores y marcas y genera ConfigMaps estándar. También resuelve referencias a . Las aplicaciones siguen usando variables o archivos mientras operaciones obtiene una vista central.

Resumen del tema

Usa ConfigMaps inmutables y versionados para configuración ligada a la versión y para administración central.

6. Crear y consumir Secrets de Kubernetes

Un Secret mantiene claves, cadenas de conexión y credenciales fuera de la imagen y configuración común. Opaque sirve para cadenas; kubernetes.io/dockerconfigjson representa credenciales de registro y kubernetes.io/ certificados y claves . Pueden originarse en literales, archivos o manifiestos, pero un manifiesto con valores reales no debe confirmarse.

kubectl create secret generic app-secrets   --from-literal=DB_CONNECTION="Host=db;User=app;Password=secure"   --from-literal=API_KEY="your-api-key"

kubectl get secrets
kubectl describe secret app-secrets
kubectl describe deployment web-api
env:
- name: DB_CONNECTION
  valueFrom:
    secretKeyRef:
      name: app-secrets
      key: DB_CONNECTION
- name: API_KEY
  valueFrom:
    secretKeyRef:
      name: app-secrets
      key: API_KEY

secretKeyRef inyecta una clave al iniciar el Pod. El valor queda en memoria y no se escribe en disco de forma predeterminada. kubectl describe secret muestra y nombres sin valores; kubectl describe confirma la referencia. debe limitar lectura y modificación.

Resumen del tema

Elige el tipo apropiado, usa secretKeyRef, comprueba nombres sin imprimir datos y aplica de privilegios mínimos.

7. Rotación, cifrado y operación segura de Secrets

no es cifrado. Evita valores en Git, historial de shell, registros y diagnósticos. Habilita cifrado en reposo de datos de Kubernetes, limita la , rota credenciales y ejecuta rollout cuando los consumidores por variable necesiten el nuevo valor.

  • Concede , list, watch, create, update o solo cuando sea necesario.
  • Prefiere y almacén externo en producción.
  • Audita accesos y fallos de rotación y ensaya revocación urgente.
  • Nunca uses ConfigMap para una contraseña porque sea configuración.

Resumen del tema

La seguridad requiere cifrado, , rotación, comportamiento de rollout, auditoría y prevención de exposición.

8. CSI de o con referencias

El proveedor de para Secrets Store CSI Driver monta secretos directamente en el sistema del Pod. Permanecen en el almacén y una o concede acceso. La rotación automática puede actualizar el montaje y un Secret sincronizado opcional. Una variable basada en ese Secret aún necesita reinicio.

La integración directa conviene cuando el secreto debe permanecer solo en y cada acceso requiere auditoría, rotación, red privada y cumplimiento. El proveedor de puede mantener referencias a , resolverlas y generar Secrets nativos para mapear centralmente qué recibe cada aplicación.

Secret de Kubernetes, montaje CSI directo de Key Vault y Configuración de la aplicación con referencias crean rutas diferentes hasta Pods de AKS.
Elige según custodia, auditoría, rotación y consumo de la aplicación.

Resumen del tema

Usa CSI directo para secretos residentes y auditados en ; usa para asignaciones centrales entregadas como recursos Kubernetes.

9. PersistentVolume, PersistentVolumeClaim y StorageClass

El sistema de archivos del contenedor es efímero. PersistentVolume representa almacenamiento duradero, PersistentVolumeClaim solicita capacidad y acceso y StorageClass identifica política y tecnología. Con aprovisionamiento dinámico, aplicar el PVC hace que cree y vincule almacenamiento de adecuado; normalmente no se escribe un PV manual.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: data-pvc
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: default

Dimensiona y planifica crecimiento y expansión compatible. La reclamación queda Pending cuando ninguna clase o volumen satisface tamaño, modo, topología, cuota o aprovisionamiento. Bound no demuestra permisos ni rendimiento suficiente.

Un PVC solicita tamaño y modo a StorageClass, que aprovisiona almacenamiento de Azure y vincula un PV montado por el Pod.
La aplicación declara intención; StorageClass y CSI la traducen en almacenamiento duradero.

Resumen del tema

PVC expresa la intención, StorageClass dirige el aprovisionamiento y PV es el recurso duradero fuera del ciclo del Pod.

10. Elegir , , o

Los controladores CSI exponen servicios de con patrones Kubernetes. aporta bloque a un nodo y sirve a bases o estado de nodo único. ofrece SMB o NFS compartido entre nodos y Pods. puede montarse para imágenes, documentos, registros y multimedia no estructurada.

es una opción administrada y nativa de bloques para cargas con estado, con operación Kubernetes y conexión rápida. Puede servir a I/O intensiva o escalado rápido. Comprueba el pool: NVMe o SSD local puede ser efímero, mientras otros pools aportan persistencia.

Matriz de decisión.
OpciónAccesoUso de IA
ReadWriteOnce; bloqueÍndice vectorial, base o caché de un nodo.
ReadWriteMany; SMB/NFSModelos, cargas, registros y contenido compartido.
Objetos montados por CSIGrandes conjuntos de imágenes, documentos o medios.
Bloque nativo administradoServicios con estado sensibles al rendimiento.

Resumen del tema

Relaciona bloque, archivo compartido, objeto o almacenamiento nativo con concurrencia, latencia, forma, durabilidad y coste.

11. Modos de acceso y StorageClasses CSI integradas

ReadWriteOnce permite lectura y escritura por un nodo, no necesariamente un solo Pod. ReadWriteMany permite montajes simultáneos en nodos distintos. Las clases de disco usan RWO y las de archivos ofrecen RWX.

Clases CSI del módulo.
StorageClassServicioAccesoUso
managed-csi (default)ReadWriteOnceHDD/SSD Standard y estado económico.
managed-csi-premiumReadWriteOnceSSD Premium y baja latencia.
azurefile-csiReadWriteManyArchivos Standard compartidos.
azurefile-csi-premiumReadWriteManyArchivos Premium compartidos.

Resumen del tema

Elige RWO para bloque por nodo y RWX para archivos compartidos y selecciona Standard o Premium según latencia y rendimiento medidos.

12. Montar y demostrar persistencia tras sustituir el Pod

El Pod declara volume con persistentVolumeClaim.claimName y el contenedor volumeMount y mountPath. Comprueba que el usuario pueda leer y escribir; propiedad, permisos, security context, protocolo e identidad pueden fallar en ejecución.

spec:
  template:
    spec:
      volumes:
      - name: data-volume
        persistentVolumeClaim:
          claimName: data-pvc
      containers:
      - name: api
        image: myregistry.azurecr.io/web-api:v1
        volumeMounts:
        - name: data-volume
          mountPath: /app/data
kubectl apply -f configmap.yaml
kubectl apply -f secret.yaml
kubectl apply -f pvc.yaml
kubectl apply -f deployment.yaml
kubectl describe configmap app-settings
kubectl describe pvc data-pvc
kubectl describe pod -l app=web-api
kubectl exec <pod-name> -- printenv | grep FEATURE
  1. Aplica PVC antes o junto al .
  2. Confirma PVC Bound y Pod Running.
  3. Escribe un archivo reconocible en /app/data.
  4. Borra el Pod y espera el reemplazo.
  5. Lee el archivo en el nuevo Pod y ejecuta una prueba de I/O.

Resumen del tema

PVC Bound se convierte en persistencia demostrada cuando el reemplazo remonta, lee datos previos y cumple el objetivo de I/O.

13. Laboratorio guiado: configurar una en

El ejercicio de unos 30 minutos implementa y , compila y publica la imagen, configura valores con ConfigMaps, credenciales con Secrets y registros con PVC, expone mediante LoadBalancer, prueba con Python, lee registros persistentes y elimina recursos.

  1. Descarga el proyecto e identifica marcadores de ConfigMap, Secret, PVC, y Service.
  2. Implementa recursos y publica la imagen.
  3. Actualiza y aplica y comprueba vínculos y configuración.
  4. Llama a la , revisa registros, sustituye el Pod y confirma los datos.
  5. Elimina recursos facturables.

Requisitos: suscripción de con permisos, , Python 3.12 o posterior, la CLI de más reciente y kubectl. Las tareas de pueden requerir pago por uso porque los créditos gratuitos pueden no cubrirlas.

Resumen del tema

El laboratorio demuestra configuración, entrega de secretos, acceso público y registros duraderos en un flujo completo de .

14. Evaluación, lista de producción y referencias

Decisiones de la evaluación.
EscenarioRespuesta correctaMotivo
Cadena con contraseñaKubernetes SecretEs sensible y debe quedar fuera del código.
Marcas y sin recompilarConfigMap y configMapKeyRefNo son sensibles y quedan fuera de la imagen.
Aplicar PVC con StorageClass válida aprovisiona almacenamiento de La clase define la política CSI.
Secret como variablevalueFrom con secretKeyRefAsigna la clave al inicio.
Aplicación espera en discoMontar ConfigMap como archivoAparece en la ruta esperada.
  • Versiona configuración y documenta actualización o reinicio.
  • Mantén credenciales en cuando custodia y auditoría lo exijan.
  • Comprueba , cifrado, rotación e identidad.
  • Elige almacenamiento por acceso, rendimiento, durabilidad, topología y coste.
  • Prueba vinculación, permisos, sustitución, supervivencia e I/O.
  1. ConfigMaps in Kubernetes
  2. Secrets in Kubernetes
  3. Persistent volumes in Kubernetes
  4. for applications in
  5. CSI drivers for Disk, , and Blob in
  6. provider for Secrets Store CSI Driver
  7. secret autorotation in
  8. Kubernetes Provider
  9. documentation

Resumen del tema

El examen decide por sensibilidad, forma de consumo e intención de almacenamiento; producción añade identidad, rotación, observabilidad y evidencia de rendimiento.