Preparación para la Certificación Microsoft AI-200
Implementar backends de IA en Azure Container Apps: entornos, YAML, secretos, registros y verificación
Crea un proceso repetible para una API de procesamiento de documentos, desde el límite del entorno y la extracción privada hasta el despliegue por revisiones, los registros y el estado de las réplicas.
Tiempo de estudio sugerido: 70 minutos • Nivel intermedio • Reescritura original completa con versión resumida de cada tema y laboratorio guiado en la CLI de Azure
Por João Ricardo Dutra••Contenido original completo
1. Por qué un de IA encaja en
Imagine una que recibe documentos, extrae texto, llama a un proveedor de embeddings y devuelve vectores. El tráfico es irregular, la configuración cambia por entorno, las credenciales rotan y un fallo de inicio debe distinguirse de un error de modelo o red. ejecuta estos servicios en una plataforma mientras administra el plano de control de Kubernetes y la orquestación.
El modelo incorpora entrada, escalado por eventos, secretos de aplicación, , registros centralizados y revisiones inmutables. El equipo puede validar la revisión nueva antes de trasladar todo el tráfico.
Elegir el entorno para red, aislamiento, gobierno y registros.
Implementar con la CLI de o versionado.
Mantener configuración y secretos fuera de la imagen.
Autenticar la extracción privada y comprobar aplicación, revisión, réplica y registros.
Resumen del tema
ofrece un runtime administrado y basado en revisiones para servicios de IA en contenedores sin operar Kubernetes.
2. El entorno como límite operativo
Un entorno de es un límite lógico seguro para aplicaciones y trabajos. , worker y procesadores relacionados pueden compartir red interna y destino de registros; desarrollo, pruebas y producción pueden separarse para contener cambios. El entorno define aislamiento y operación, no es una carpeta.
Decisiones de diseño.
Decisión
Efecto
Uso
Ciclo de vida
Separa configuración y riesgo.
Entornos distintos para desarrollo, pruebas y producción.
Red
Controla comunicación privada, red virtual y alcance.
Agrupar servicios con el mismo trayecto privado.
Observabilidad
Las aplicaciones pueden compartir Analytics.
Definir destino, retención, consultas y alertas.
Capacidad
Perfiles de carga admiten Consumo y Dedicado; solo Consumo es heredado.
Preferir perfiles de carga en diseños nuevos.
Estandariza nombres de grupos, entornos y aplicaciones. Más entornos elevan el aislamiento, pero multiplican redes, directivas, registros y ciclo de vida.
El entorno agrupa componentes con el mismo límite; separar ciclos de vida reduce el .
Resumen del tema
El entorno delimita red y observabilidad compartidas; sepáralo por ciclo de vida y seguridad sin olvidar la sobrecarga operativa.
3. Crear, inspeccionar, conectar y observar el entorno
Instala o actualiza la extensión containerapp y registra Microsoft.App y Microsoft.OperationalInsights. Crear el entorno explícitamente permite controlar nombre y ciclo de vida; az containerapp up puede crear recursos automáticamente para un prototipo.
az login
az upgrade
az extension add --name containerapp --upgrade
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
az group create --name rg-ai200-aca --location centralus
az containerapp env create \
--name aca-env-ai200 \
--resource-group rg-ai200-aca \
--location centralus
az containerapp env show \
--name aca-env-ai200 \
--resource-group rg-ai200-aca
La entrada puede ser externa para una pública o interna para un componente accesible solo dentro del entorno. Debe concordar con la accesibilidad y la red virtual. Usa una red personalizada para puntos de conexión privados, grupos de seguridad, salida controlada, o ; el tipo de red no se cambia simplemente después.
centraliza stdout, stderr, eventos de escalado, plataforma y Dapr opcional. Diseña registros desde el principio porque el historial no puede reconstruirse tras un incidente.
Resumen del tema
Prepara CLI y proveedores, crea el límite, alinea entrada y red y establece registros centralizados antes del tráfico.
4. Implementación rápida y explícita con la CLI de
az containerapp up es la ruta más corta desde imagen o código y sirve para explorar. az containerapp create deja explícitos entorno, grupo, imagen, entrada y puerto. Usa una ruta de repositorio completa y en minúsculas para evitar errores parecidos a problemas de autenticación.
El FQDN devuelto es el primer que se prueba. Una aplicación interna no ofrece el mismo acceso público; el fallo externo puede ser el comportamiento correcto.
Resumen del tema
Usa up para empezar rápido y create para recursos conocidos; define sin ambigüedad imagen, entrada y puerto.
5. Revisiones, y entrega repetible
Una revisión es una instantánea inmutable de su configuración. Cambiar imagen, variables, recursos o escala crea otra. Secretos, credenciales del registro, modo de revisión y gran parte de la entrada están en el ámbito de aplicación y no crean revisión. Esta distinción explica la lista de versiones.
El modo único, predeterminado, prepara la sustituta y mueve el tráfico cuando está sana. El modo múltiple conserva varias revisiones para división de tráfico, blue-green y reversión. Valida antes de mover todo el tráfico.
Con --, el archivo es la fuente autorizada para las propiedades declaradas; evita parámetros en conflicto. Nombre, grupo y entorno aún identifican el destino. Versiona solo declaraciones no sensibles. , GitHub Actions y el portal de son alternativas, pero CLI y muestran qué cambia.
La entrega por revisiones separa creación, validación, tráfico y reversión.
Resumen del tema
Usa contra la deriva y revisiones para cambios visibles, comprobables y reversibles.
6. Variables de entorno para configuración no sensible
, niveles de registro, características, modelo, tiempos de espera y lotes pertenecen a variables de entorno. Define valores con --env-vars y combina cambios con --set-env-vars; evita duplicados porque gana la última aparición.
Como forman parte de la plantilla, sus cambios suelen crear revisión. Esto favorece auditoría y reversión, pero un secreto nunca debe escribirse como valor claro ni confirmarse en .
Resumen del tema
Mantén la imagen portátil e inyecta comportamiento no sensible mediante variables de la revisión.
7. Secretos de aplicación y referencias de
Claves de , contraseñas y material de firma son secretos. Un secreto pertenece a la aplicación y varias revisiones pueden usarlo. Proyéctalo a una variable con secretref:<nombre> en CLI o secretRef en .
az containerapp update -n ai-document-api -g rg-ai200-aca \
--set-env-vars LOG_LEVEL=debug FEATURE_EMBEDDINGS=true
az containerapp secret set -n ai-document-api -g rg-ai200-aca \
--secrets embeddings-api-key="REPLACE_WITH_REAL_VALUE"
az containerapp update -n ai-document-api -g rg-ai200-aca \
--set-env-vars EMBEDDINGS_API_KEY=secretref:embeddings-api-key
Agregar, cambiar o eliminar un secreto no crea revisión ni actualiza automáticamente un contenedor que consume un valor directo. Crea una revisión o reinicia la actual tras rotarlo. Antes de eliminarlo, quita referencias y desactiva revisiones antiguas.
En producción, una referencia de convierte la bóveda en origen autorizado. Habilita , concede Usuario de secretos de y usa e identidad. sin versión sigue la última y se actualiza periódicamente; con versión fija el valor. No guardes el secreto en repositorio, ni historial.
Resumen del tema
Protege valores en el ámbito de aplicación y usa con para rotación auditable.
8. Extraer imágenes privadas de forma segura
Un registro privado reduce exposición y controla el acceso. Usuario y contraseña son compatibles con muchos registros, pero crean credenciales duraderas. Para , evita contraseñas y autentica mediante .
Concede solo AcrPull en el modelo clásico y asocia identidad y hostname. Una identidad asignada por el usuario puede autorizarse antes del primer pull; la asignada por el sistema sigue el ciclo de vida de la aplicación.
IDENTITY_ID=$(az identity show -g rg-ai200-aca -n id-ai200-pull --query id -o tsv)
PRINCIPAL_ID=$(az identity show -g rg-ai200-aca -n id-ai200-pull --query principalId -o tsv)
ACR_ID=$(az acr show -g rg-ai200-aca -n myregistry --query id -o tsv)
az role assignment create --assignee-object-id "$PRINCIPAL_ID" \
--assignee-principal-type ServicePrincipal --scope "$ACR_ID" --role AcrPull
az containerapp identity assign -n ai-document-api -g rg-ai200-aca \
--user-assigned "$IDENTITY_ID"
az containerapp registry set -n ai-document-api -g rg-ai200-aca \
--server myregistry.azurecr.io --identity "$IDENTITY_ID"
az containerapp registry list -n ai-document-api -g rg-ai200-aca
La configuración del registro es independiente del código y está en el ámbito de aplicación. Confirma con registry list/show. Trata ImagePull como autorización, hostname, o red hasta que los registros indiquen otra causa.
La entrega privada combina mínimo privilegio con evidencia posterior.
Resumen del tema
Prefiere y mínimo privilegio en ; confirma asociación y referencia de imagen.
9. Comenzar la verificación con configuración y registros
La verificación compara intención y estado. Confirma aprovisionamiento, revisión, entrada, puerto y FQDN. Usa registros de consola para stdout/stderr y registros del sistema para pull, aprovisionamiento y escalado.
az containerapp show -n ai-document-api -g rg-ai200-aca \
--query "{fqdn:properties.configuration.ingress.fqdn,latest:properties.latestRevisionName,state:properties.provisioningState}"
az containerapp logs show -n ai-document-api -g rg-ai200-aca --tail 30
az containerapp logs show -n ai-document-api -g rg-ai200-aca --follow --tail 30
az containerapp logs show -n ai-document-api -g rg-ai200-aca --type system
az containerapp revision list -n ai-document-api -g rg-ai200-aca --all -o table
az containerapp replica list -n ai-document-api -g rg-ai200-aca -o table
--follow acompaña tráfico y --tail controla contexto. Son frecuentes variables ausentes, enlace incorrecto, dependencia caída, credencial inválida, crash o permiso del registro. Nunca registres claves, documentos ni datos personales.
Resumen del tema
Confirma configuración y alcance; luego elige consola o sistema según el origen del síntoma.
10. Revisiones, réplicas, escalado y despliegue seguro
La lista de revisiones prueba una versión, identifica activas e inactivas y muestra salud; --all incluye las desactivadas. Una réplica es una instancia y revela escala a cero, arranque en frío, bucle de fallos, ausencia de instancias y expansión.
Evidencia operativa.
Evidencia
Pregunta
Respuesta
Aplicación
¿Entrada y revisión son las previstas?
Corregir ámbito o probar desde la red correcta.
Consola
¿El proceso inició y respondió?
Corregir enlace, configuración, dependencia o código.
Sistema
¿La plataforma obtuvo y preparó la imagen?
Corregir autorización, , red o capacidad.
Revisión
¿La actualización creó una versión sana?
Mantener tráfico anterior y reparar la nueva.
Réplicas
¿Hay instancias y escalado?
Revisar reglas, latencia o crash loop.
Automatiza con --query, espera una revisión sana, llama a /health y después mueve tráfico. En IA por solicitudes, las réplicas mínimas y los gates deben considerar arranques en frío y latencia externa.
Resumen del tema
Las revisiones describen versiones y las réplicas capacidad activa; usa ambas con registros antes de declarar éxito.
11. Laboratorio guiado: de documentos en contenedor
Reserva unos 30 minutos. Necesitas suscripción con permisos de implementación y roles, CLI reciente, y Python 3.12 opcional. La disponibilidad de ACR Tasks y los créditos cambia; confirma condiciones y costes.
Crea una con /health.
Crea grupo, , identidad y entorno.
Compila y publica una versión explícita y concede pull.
Implementa con entrada externa, puerto e identidad.
Define variables y referencia la clave de embeddings como secreto.
Llama a FQDN y y examina registros.
Lista revisiones y réplicas; publica v2, valida y documenta reversión.
Elimina solo los recursos del laboratorio.
az containerapp update -n ai-document-api -g rg-ai200-aca \
--image myregistry.azurecr.io/ai-document-api:v2
FQDN=$(az containerapp show -n ai-document-api -g rg-ai200-aca \
--query properties.configuration.ingress.fqdn -o tsv)
curl -fsS "https://$FQDN/health"
az containerapp revision list -n ai-document-api -g rg-ai200-aca -o table
Resumen del tema
El laboratorio reúne infraestructura, autorización privada, configuración, pruebas, registros, revisiones, réplicas y limpieza.
12. Evaluación reescrita y explicada
Decide por concepto.
Escenario
Respuesta
Motivo
Aplicaciones comparten red privada y registros.
Mismo entorno planeado.
El entorno comparte red y observabilidad.
Configuración revisada y versionada.
create/update --.
La declaración es repetible.
Clave fuera de .
Secreto con secretref/secretRef.
Solo el nombre entra en la plantilla.
Confirmar la versión nueva.
az containerapp revision list.
Muestra revisiones del cambio.
Imagen no inicia.
az containerapp show y sistema si se sospecha el pull.
Es la evidencia más rápida.
Resumen del tema
Elige entorno para límites, para configuración, secretos para credenciales, revisiones para versiones y registros para diagnóstico.
13. Revisión final y referencias de Microsoft
Los entornos son límites de red y observabilidad.
CLI y permiten implementación repetible.
Los ámbitos de revisión y aplicación se comportan de modo diferente.
Variables no sensibles y secretos/ separan configuración.
La es preferible para .
Estado, registros, revisiones y réplicas completan la comprobación.