Implementar backends de IA en Azure Container Apps: entornos, YAML, secretos, registros y verificación
Volver a la ruta AI-200
AI-200Capítulo 3

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

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

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ónEfectoUso
Ciclo de vidaSepara configuración y riesgo.Entornos distintos para desarrollo, pruebas y producción.
RedControla comunicación privada, red virtual y alcance.Agrupar servicios con el mismo trayecto privado.
ObservabilidadLas aplicaciones pueden compartir Analytics.Definir destino, retención, consultas y alertas.
CapacidadPerfiles 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.

Entorno de Azure Container Apps con API y worker de IA que comparten red y Log Analytics, separado de otro 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.

az containerapp up \
  --name ai-document-api \
  --resource-group rg-ai200-aca \
  --location centralus \
  --environment aca-env-ai200 \
  --image mcr.microsoft.com/k8se/quickstart:latest \
  --ingress external --target-port 80 \
  --query properties.configuration.ingress.fqdn

az containerapp create \
  --name ai-document-api \
  --resource-group rg-ai200-aca \
  --environment aca-env-ai200 \
  --image mcr.microsoft.com/k8se/quickstart:latest \
  --ingress external --target-port 80

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.

properties:
  configuration:
    ingress:
      external: true
      targetPort: 8000
  template:
    containers:
      - name: ai-document-api
        image: myregistry.azurecr.io/ai-document-api:v2
        env:
          - name: LOG_LEVEL
            value: info
          - name: EMBEDDINGS_API_KEY
            secretRef: embeddings-api-key
    scale:
      minReplicas: 1
      maxReplicas: 5
az containerapp create -n ai-document-api -g rg-ai200-aca \
  --environment aca-env-ai200 --yaml ./containerapp.yml
az containerapp update -n ai-document-api -g rg-ai200-aca --yaml ./containerapp.yml

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.

YAML versionado pasa por la CLI de Azure hacia una revisión nueva, validación, cambio de tráfico y reversión.
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.

az containerapp create -n ai-document-api -g rg-ai200-aca \
  --environment aca-env-ai200 --image myregistry.azurecr.io/ai-document-api:v1 \
  --ingress external --target-port 8000 --env-vars LOG_LEVEL=info FEATURE_EMBEDDINGS=true
az containerapp update -n ai-document-api -g rg-ai200-aca \
  --set-env-vars LOG_LEVEL=debug REQUEST_TIMEOUT_SECONDS=30

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.

Identidad administrada con AcrPull en Azure Container Registry seguida de comprobación de revisión, réplica y registros.
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.
EvidenciaPreguntaRespuesta
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.

  1. Crea una con /health.
  2. Crea grupo, , identidad y entorno.
  3. Compila y publica una versión explícita y concede pull.
  4. Implementa con entrada externa, puerto e identidad.
  5. Define variables y referencia la clave de embeddings como secreto.
  6. Llama a FQDN y y examina registros.
  7. Lista revisiones y réplicas; publica v2, valida y documenta reversión.
  8. 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.
EscenarioRespuestaMotivo
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.
  1. Introducción a
  2. Entornos de
  3. Redes en el entorno
  4. Implementar la primera aplicación
  5. Revisiones
  6. Administrar variables de entorno
  7. Administrar secretos
  8. Pull desde ACR con identidad
  9. Registro de aplicaciones
  10. CLI de : az containerapp

Resumen del tema

Una implementación de producción es declarativa, usa identidad, configura fuera de la imagen, conoce revisiones, observa y valida antes del tráfico.