Compartir a través de


Cómo alojar tu carga de trabajo en Azure

En este artículo se describe cómo hospedar la carga de trabajo de Fabric Extensibility Toolkit en Azure mediante una arquitectura de solo front-end. El Kit de herramientas de extensibilidad usa un enfoque de implementación nativa de la nube con servicios de Azure optimizados para aplicaciones web estáticas.

Introducción a la arquitectura

Fabric Extensibility Toolkit usa una arquitectura centrada en la implementación de front-end con los servicios de Azure:

Diagrama de una arquitectura de implementación de Azure.

Arquitectura del kit de herramientas de extensibilidad

La arquitectura del Kit de herramientas de extensibilidad incluye las siguientes características:

  • Implementación solo de front-end: la carga de trabajo se ejecuta completamente en el explorador sin un back-end independiente
  • Hospedaje de sitios web estáticos: usa sitios web estáticos de Azure Storage para hospedar
  • Azure Front Door: proporciona red CDN global, terminación SSL y enrutamiento
  • Servicios administrados: aprovecha el identificador de Entra, Key Vault y la identidad administrada para la seguridad
  • Proceso de implementación único: usa scripts de PowerShell proporcionados para la implementación

Servicios de Azure usados

Azure Front Door (portal de entrada de Azure)

Azure Front Door actúa como punto de entrada global para la carga de trabajo. Proporciona:

  • Equilibrio de carga global: enruta a los usuarios a la ubicación perimetral más cercana.
  • Terminación SSL: controla automáticamente los certificados HTTPS.
  • Firewall de aplicaciones web (WAF): protege contra vulnerabilidades web comunes
  • Almacenamiento en caché: mejora el rendimiento mediante el almacenamiento en caché de recursos estáticos en ubicaciones perimetrales

Para Extensibility Toolkit, Front Door enruta el tráfico al sitio web estático hospedado en Azure Storage, lo que garantiza una alta disponibilidad y una baja latencia en todo el mundo.

Cuenta de Azure Storage (sitio web estático)

Una cuenta de Azure Storage, que hospeda un sitio web estático, aloja su aplicación de carga de trabajo construida. y ofrece:

  • Hospedaje rentable: pago solo por almacenamiento y ancho de banda usado
  • Escalado automático: controla los picos de tráfico sin configuración
  • Disponibilidad global: el contenido se sirve desde la infraestructura de almacenamiento global de Azure.
  • Implementación basada en archivos: carga de archivos para implementar versiones

El kit de herramientas de extensibilidad compila la aplicación React en recursos HTML estáticos, JavaScript, CSS y que se implementan directamente en la cuenta de almacenamiento.

Azure Key Vault

Azure Key Vault administra la configuración confidencial y los secretos:

  • Secretos de cliente: almacena los secretos de aplicación de Entra ID de forma segura
  • Claves de API: administra claves de API de servicio externo
  • Configuración: almacena valores específicos del entorno
  • Certificados: administra los certificados SSL si es necesario.

La carga de trabajo accede a Key Vault a través de una identidad administrada para la autenticación segura y sin credenciales.

Azure Entra ID (Directorio Activo de Azure)

Azure Entra ID proporciona autenticación y autorización:

  • Registro de aplicaciones: registra su carga de trabajo como una aplicación Entra.
  • Flujos de OAuth 2.0: controla la autenticación de usuario con Fabric
  • Permisos de API: administra el acceso a las API de Fabric y Microsoft Graph.
  • Administración de tokens: proporciona tokens de acceso seguros para llamadas a la API

Identidad administrada

Managed Identity proporciona autenticación segura de servicio a servicio:

  • Sin administración de credenciales: elimina la necesidad de almacenar secretos en el código.
  • Gestión de tokens: Azure se encarga de la adquisición y renovación de tokens.
  • Acceso seguro: se conecta a Key Vault y a otros servicios de Azure de forma segura
  • Ciclo de vida de la identidad: vinculado a los recursos de Azure para la depuración

Proceso de implementación

Prerrequisitos

Antes de realizar la implementación en Azure, asegúrese de que tiene:

  • Suscripción de Azure con los permisos adecuados
  • CLI de Azure instalada y autenticada
  • Repositorio de Fabric Extensibility Toolkit clonado localmente
  • Tu carga de trabajo creada con .\scripts\Build\BuildRelease.ps1

Uso del script de implementación

Extensibility Toolkit incluye un script de implementación de PowerShell en scripts\Deploy\DeployToAzureWebApp.ps1 que automatiza el proceso de implementación.

Implementación básica

# Deploy to an existing Azure Web App
.\scripts\Deploy\DeployToAzureWebApp.ps1 -WebAppName "my-fabric-workload" -ResourceGroupName "fabric-workload-rg"

Opciones de implementación adicionales

# Deploy to staging slot with custom settings
.\scripts\Deploy\DeployToAzureWebApp.ps1 `
    -WebAppName "my-fabric-workload" `
    -ResourceGroupName "fabric-workload-rg" `
    -SlotName "staging" `
    -Force $true `
    -CreateBackup $true `
    -RestartAfterDeploy $true

Parámetros de script de implementación

Parámetro Description Obligatorio Predeterminado
WebAppName Nombre de la aplicación web de Azure en la que se va a implementar -
ResourceGroupName Grupo de recursos que contiene la aplicación web -
ReleasePath Ruta de acceso a los archivos de aplicación compilados No ..\..\release\app
DeploymentMethod Método deployment (ZipDeploy, FTP, LocalGit) No ZipDeploy
SlotName Ranura de implementación para almacenamiento provisional No -
Force Omitir avisos de confirmación No $false
CreateBackup Creación de una copia de seguridad antes de la implementación No $true
RestartAfterDeploy Reinicio de la aplicación después de la implementación No $true

Características del script de implementación

El script de implementación proporciona funcionalidades de implementación completas:

Validación y seguridad

  • Comprobación de requisitos previos: valida la instalación y la autenticación de la CLI de Azure
  • Validación de recursos: confirma que existe la aplicación web de destino y es accesible
  • Validación de compilación: garantiza que el directorio de entrega contiene los archivos necesarios.
  • Creación de copias de seguridad: crea una copia de seguridad de implementación para las funcionalidades de reversión.

Flujo de trabajo de implementación

  • Creación de paquetes ZIP: comprime la aplicación integrada en el paquete de implementación.
  • Informes de tamaño: muestra el tamaño del paquete de implementación para la comprobación
  • Supervisión del progreso: proporciona actualizaciones de estado de implementación en tiempo real
  • Control de errores: mensajes de error detallados con instrucciones para la solución de problemas

Posterior a la implementación

  • Comprobación de estado: valida que la aplicación implementada responde correctamente.
  • Informes de direcciones URL: proporciona un vínculo directo a la aplicación implementada.
  • Guía del manifiesto: muestra los pasos siguientes para la carga de manifiestos en Fabric
  • Métricas de tiempo: notifica la duración total de la implementación

Implementación manual

También puede implementar la aplicación de front-end manualmente mediante comandos de Azure PowerShell:

Compilación de la aplicación

En primer lugar, compile la aplicación de front-end para el entorno de prueba:

npm run build:test

Creación de un paquete de implementación

  1. Vaya a la build\Frontend carpeta del proyecto.
  2. Seleccione todos los archivos y la assets carpeta en el directorio de compilación.
  3. Crear un .zip archivo que contenga todos los archivos seleccionados

Implementación mediante Azure PowerShell

# Connect to Azure
Connect-AzAccount

# Set your subscription context
Set-AzContext -Subscription "<subscription_id>"

# Deploy the zip file to your web app
Publish-AzWebApp -ResourceGroupName <resource_group_name> -Name <web_app_name> -ArchivePath <zip_file_path>

Parámetros de implementación manual

Parámetro Description Example
<subscription_id> Identificador de suscripción de Azure 12345678-1234-1234-1234-123456789012
<resource_group_name> Grupo de recursos que contiene la aplicación web fabric-workload-rg
<web_app_name> Nombre de la aplicación web de Azure my-fabric-workload
<zip_file_path> Ruta de acceso completa al archivo ZIP de implementación C:\path\to\deployment.zip

Nota:

La implementación manual requiere que tenga los permisos de Azure adecuados y el módulo de Azure PowerShell instalado en la máquina.

Consideraciones de seguridad

Flujo de autenticación

La carga de trabajo se autentica con Fabric mediante el flujo estándar de OAuth 2.0:

  1. El usuario accede a la carga de trabajo a través de Fabric
  2. Fabric redirige a la aplicación hospedada en Azure.
  3. La aplicación redirige a Entra ID para la autenticación.
  4. Entra ID devuelve el token de autenticación.
  5. La aplicación usa el token para acceder a las API de Fabric.

Configuración segura

  • Variables de entorno: almacenar la configuración en Azure App Settings, no en el código
  • Integración de Key Vault: acceso a secretos mediante identidad administrada
  • Solo HTTPS: exigir HTTPS para toda la comunicación
  • Configuración de CORS: Configuración de directivas de CORS adecuadas para dominios de Fabric

procedimientos recomendados

  • Privilegios mínimos: conceda permisos mínimos necesarios a la identidad administrada.
  • Rotación de secretos: Cambio regular de secretos almacenados del Key Vault
  • Seguridad de red: use puntos de conexión privados siempre que sea posible.
  • Supervisión: Habilitación de Application Insights para la supervisión de seguridad

Configuración después de la implementación

Configuración de Azure App Service

Después de la implementación, configure Azure App Service:

# Set environment variables for your workload
az webapp config appsettings set --name "my-fabric-workload" --resource-group "fabric-workload-rg" --settings \
    "FABRIC_CLIENT_ID=your-client-id" \
    "FABRIC_TENANT_ID=your-tenant-id" \
    "KEY_VAULT_URL=https://your-keyvault.vault.azure.net/"

Configuración de Key Vault

Almacenamiento de la configuración confidencial en Key Vault:

# Store client secret
az keyvault secret set --vault-name "your-keyvault" --name "FabricClientSecret" --value "your-client-secret"

# Store API keys
az keyvault secret set --vault-name "your-keyvault" --name "ExternalApiKey" --value "your-api-key"

Configuración de identidad administrada

Configuración de la identidad administrada para el acceso a Key Vault:

# Enable system-assigned managed identity
az webapp identity assign --name "my-fabric-workload" --resource-group "fabric-workload-rg"

# Grant access to Key Vault
az keyvault set-policy --name "your-keyvault" \
    --object-id "managed-identity-principal-id" \
    --secret-permissions get list

Implementación del manifiesto

Después de implementar la aplicación en Azure, debe cargar el paquete de manifiesto en Fabric:

Generar paquete de manifiesto

En primer lugar, compile el paquete de manifiesto:

.\scripts\Build\BuildManifestPackage.ps1

Esto crea release\ManifestPackage.1.0.0.nupkg que contiene el manifiesto de tareas.

Cargar en el Portal de administración de Fabric

  1. Abrir el Portal de administración de Microsoft Fabric
  2. Vaya a Administración de cargas de trabajo>Cargar carga de trabajo
  3. Carga del ManifestPackage.1.0.0.nupkg archivo
  4. Configurar los ajustes y permisos de la carga de trabajo
  5. Activación de la carga de trabajo para el inquilino

Actualización del manifiesto para la implementación de Azure

Antes de compilar el paquete de manifiesto para la implementación de Azure, asegúrese de que los valores del .env archivo (como FRONTEND_URL, FRONTEND_APPIDy cualquier otra variable necesaria) se establecen correctamente para el entorno de Azure. Estos valores se sustituirán en el WorkloadManifest.xml durante el proceso de compilación.

Para obtener una lista completa de las variables de entorno necesarias e instrucciones sobre cómo establecerlas, consulte Los requisitos generales de publicación.

Supervisión y solución de problemas

Application Insights

Habilite Application Insights para la supervisión:

  • Supervisión del rendimiento: seguimiento de los tiempos de carga de páginas y las interacciones del usuario
  • Seguimiento de errores: Monitorización de errores de JavaScript y solicitudes fallidas
  • Análisis de uso: comprender cómo interactúan los usuarios con la carga de trabajo
  • Telemetría personalizada: adición de métricas personalizadas para la lógica de negocios

Problemas comunes y soluciones

Errores de implementación

  • Errores de autenticación: Verificar el inicio de sesión de la CLI de Azure con az account show
  • Recurso no encontrado: confirme que el nombre de la aplicación web y el grupo de recursos son correctos.
  • Permiso denegado: asegúrese de que la cuenta tiene el rol de colaborador en el grupo de recursos.

Nota:

Error: el URI de front-end no está en la lista de dominios de inquilino: este error significa que el dominio personalizado de la carga de trabajo no está registrado en la lista de dominios aceptados del inquilino de Entra ID. Para resolverlo, agregue el dominio personalizado a Entra ID. Para obtener más información, vea Comprobación de dominio personalizado en los requisitos generales de publicación.

Problemas en tiempo de ejecución

  • Pantalla blanca: comprobar si hay errores de JavaScript en la consola del explorador
  • Errores de autenticación: verificar el registro de la aplicación Entra ID y los URI de redirección
  • Fallos de llamada de API: Verifique la configuración de CORS y los permisos de API

Optimización del rendimiento

  • Carga lenta: habilite la compresión y optimice el tamaño del lote.
  • Problemas de almacenamiento en caché: configuración de encabezados de caché adecuados en Front Door
  • Latencia geográfica: asegúrese de que Front Door está configurado correctamente para el enrutamiento global.