Creación e implementación de flujos de trabajo de aplicaciones lógicas basadas en un solo inquilino con Logic Apps habilitado para Azure Arc (versión preliminar)

Nota

Esta funcionalidad está en versión preliminar y está sujeta a las Condiciones de uso complementarias para las versiones preliminares de Microsoft Azure.

Con Logic Apps habilitado para Azure Arc y Azure Portal, puede crear e implementar flujos de trabajo de aplicaciones lógicas basadas en un solo inquilino en una infraestructura de Kubernetes que puede operar y administrar. Las aplicaciones lógicas se ejecutan en una ubicación personalizada que se asigna a un clúster de Kubernetes habilitado para Azure Arc donde haya instalado y habilitado el conjunto de extensiones de plataforma de Azure App Service.

Por ejemplo, este clúster puede ser una instancia de Azure Kubernetes Service, una instancia de Kubernetes sin sistema operativo u otra configuración. El conjunto de extensiones permite ejecutar servicios de plataforma como Azure Logic Apps, Azure App Service y Azure Functions en el clúster de Kubernetes.

Para más información, revise la siguiente documentación:

Requisitos previos

En esta sección se describen los requisitos previos comunes en todos los enfoques y herramientas que puede usar para crear e implementar los flujos de trabajo de la aplicación lógica. Los requisitos previos específicos de la herramienta aparecen junto a los pasos correspondientes.

  • Una cuenta de Azure con una suscripción activa. Si no tiene una suscripción a Azure, cree una cuenta gratuita.

  • Un entorno de Kubernetes con un clúster de Kubernetes habilitado para Azure Arc y una ubicación personalizada donde puede hospedar y ejecutar Azure Logic Apps, Azure App Service y Azure Functions.

    Importante

    Asegúrese de usar la misma ubicación de los recursos para el entorno de Kubernetes, la ubicación personalizada y la aplicación lógica.

    Al crear la extensión de conjunto de App Service en el clúster de Kubernetes, puede cambiar el comportamiento de escalado predeterminado para ejecutar los flujos de trabajo de la aplicación lógica. Al crear la extensión mediante el comando de la CLI de Azure, az k8s-extension create , asegúrese de incluir la opción de configuración keda.enabled=true:

    az k8s-extension create {other-command-options} --configuration-settings "keda.enabled=true"

    Para más información, revise la siguiente documentación:

  • Su propia identidad de Microsoft Entra

    Si los flujos de trabajo deben usar conexiones hospedadas en Azure, como Office 365 Outlook o Azure Storage, la aplicación lógica debe usar una identidad de Microsoft Entra para realizar la autenticación. Logic Apps habilitado para Azure Arc se puede ejecutar en cualquier infraestructura, pero requiere una identidad que tenga permisos para usar conexiones hospedadas en Azure. Para configurar esta identidad, cree un registro de aplicaciones en Microsoft Entra ID que la aplicación lógica usará como la identidad necesaria.

    Nota:

    Tenga en cuenta que la compatibilidad con identidades administradas no está disponible actualmente en Logic Apps habilitado para Azure Arc.

    Para crear un registro de aplicaciones de Microsoft Entra mediante la CLI de Azure, siga estos pasos:

    1. Cree un registro de aplicaciones mediante el comando az ad sp create.

    2. Para revisar todos los detalles, ejecute el comando az ad sp show.

    3. En los resultados de ambos comandos, busque y guarde los valores de id. de cliente, id. de objeto, id. de inquilino y de secreto de cliente, que debe conservar para su uso posterior.

    Para crear un registro de aplicaciones de Microsoft Entra mediante Azure Portal, siga estos pasos:

    1. Cree un nuevo registro de aplicación de Microsoft Entra mediante Azure Portal.

    2. Una vez que finalice la operación de creación, busque el nuevo registro de aplicaciones en el portal.

    3. En el menú de registro, seleccione Información general y guarde los valores de id. de cliente, id. de inquilino y del secreto de cliente.

    4. Para buscar el id. de objeto, junto al campo Aplicación administrada en el directorio local, seleccione el nombre del registro de la aplicación. En la vista de propiedades, copie el id. de objeto.

Creación e implementación de aplicaciones lógicas

En función de si quiere usar la CLI de Azure, Visual Studio Code o Azure Portal, seleccione la pestaña correspondiente para revisar los requisitos previos y los pasos específicos.

Antes de empezar, es preciso tener los siguientes elementos:

Comprobación del entorno y de la versión de la CLI

  1. Inicie sesión en Azure Portal. Para comprobar que la suscripción esté activa, ejecute el siguiente comando:

    az login
    
  2. Compruebe la versión de la CLI de Azure en una ventana de terminal o de comandos, para lo que debe ejecutar el siguiente comando:

    az --version
    

    Para saber cuál es la versión más reciente, consulte las notas de la versión más reciente.

  3. Si no tiene la versión más reciente, actualice la instalación, para lo que debe seguir las instrucciones que encontrará en la guía de instalación del sistema operativo o de la plataforma.

Instalación de la extensión Azure Logic Apps (Estándar) para la CLI de Azure

Instale la versión preliminar de la extensión Azure Logic Apps (Estándar) de inquilino único para la CLI de Azure mediante la ejecución del siguiente comando:

az extension add --yes --source "https://aka.ms/logicapp-latest-py2.py3-none-any.whl"

Creación de un grupo de recursos

Si aún no tiene un grupo de recursos para la aplicación lógica, créelo mediante la ejecución del comando az group create. A menos que ya haya establecido una suscripción predeterminada para su cuenta de Azure, asegúrese de usar el parámetro --subscription con el nombre o el identificador de la suscripción. De lo contrario, no tiene que usar el parámetro --subscription.

Sugerencia

Para establecer una suscripción predeterminada, ejecute el siguiente comando y reemplace MySubscription por el nombre o identificador de la suscripción.

az account set --subscription MySubscription

Por ejemplo, el siguiente comando crea un grupo de recursos denominado MyResourceGroupName mediante la suscripción de Azure denominada MySubscription en la ubicación eastus:

az group create --name MyResourceGroupName 
   --subscription MySubscription 
   --location eastus

Si el grupo de recursos se crea correctamente, la salida muestra provisioningState como Succeeded:

<...>
   "name": "testResourceGroup",
   "properties": {
      "provisioningState": "Succeeded"
    },
<...>

Creación de la aplicación lógica

Para crear una aplicación lógica habilitada para Azure Arc, ejecute el comando az logicapp create con los siguientes parámetros necesarios. Las ubicaciones del recurso de la aplicación lógica, la ubicación personalizada y el entorno de Kubernetes deben tener los mismos valores.

Parámetros Descripción
--name -n Nombre único de la aplicación lógica
--resource-group -g Nombre del grupo de recursos en el que quiere crear la aplicación lógica. Si no dispone de ninguno para usarlo, cree un grupo de recursos.
--storage-account -s La cuenta de almacenamiento que se usa con la aplicación lógica. En cuanto a las cuentas de almacenamiento del mismo grupo de recursos, use un valor de cadena. Para las cuentas de almacenamiento de un grupo de recursos diferente, use un id. de recurso.
az logicapp create --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --storage-account MyStorageAccount --custom-location MyCustomLocation

Para crear una aplicación lógica habilitada para Azure Arc mediante una imagen privada de Azure Container Registry (ACR), ejecute el comando az logicapp create con los siguientes parámetros obligatorios:

az logicapp create --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --storage-account MyStorageAccount --custom-location MyCustomLocation 
   --deployment-container-image-name myacr.azurecr.io/myimage:tag
   --docker-registry-server-password MyPassword 
   --docker-registry-server-user MyUsername

Muestra de los detalles de la aplicación lógica

Para mostrar información sobre una aplicación lógica habilitada para Azure Arc, ejecute el comando az logicapp show con los siguientes parámetros necesarios:

az logicapp show --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

Implementación de la aplicación lógica

Para implementar la aplicación lógica habilitada para Azure Arc mediante la implementación del archivo ZIP de Kudu de Azure App Service, ejecute el comando az logicapp deployment source config-zip con los siguientes parámetros necesarios:

Importante

Asegúrese de que el archivo zip contenga los artefactos del proyecto en el nivel raíz. Estos artefactos incluyen todas las carpetas del flujo de trabajo, los archivos de configuración, como host.json y connections.json, y cualquier otro archivo relacionado. No agregue carpetas adicionales ni coloque ningún artefacto en carpetas que no existan en la estructura del proyecto. Por ejemplo, en esta lista se muestra un estructura de archivos de ejemplo, en MyBuildArtifacts.zip:

MyStatefulWorkflow1-Folder
MyStatefulWorkflow2-Folder
connections.json
host.json
az logicapp deployment source config-zip --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --src MyBuildArtifact.zip

Inicio de la aplicación lógica

Para iniciar la aplicación lógica habilitada para Azure Arc, ejecute el comando az logicapp start con los siguientes parámetros necesarios:

az logicapp start --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

Detención de la aplicación lógica

Para detener la aplicación lógica habilitada para Azure Arc, ejecute el comando az logicapp stop con los siguientes parámetros necesarios:

az logicapp stop --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

Reinicio de la aplicación lógica

Para reiniciar la aplicación lógica habilitada para Azure Arc, ejecute el comando az logicapp restart con los siguientes parámetros necesarios:

az logicapp restart --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

Eliminación de la aplicación lógica

Para eliminar la aplicación lógica habilitada para Azure Arc, ejecute el comando az logicapp delete con los siguientes parámetros necesarios:

az logicapp delete --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

Configuración de la autenticación de la conexión

Actualmente, los clústeres de Kubernetes habilitados para Azure Arc no admiten el uso de la identidad administrada de una aplicación lógica para autenticar las conexiones de API administradas. Estas conexiones administradas y hospedadas en Azure se crean cuando se usan conectores administrados en los flujos de trabajo.

En su lugar, debe crear su propio registro de aplicación en Microsoft Entra ID. A continuación, puede usar este registro de aplicación como identidad para las aplicaciones lógicas implementadas y ejecutándose en Logic Apps habilitado para Azure Arc. Para obtener más información, revise los Requisitos previos de nivel superior.

En el registro de la aplicación, encontrará el id. de cliente, el id. de objeto, el id. de inquilino y el secreto de cliente. Si usa Visual Studio Code para realizar implementaciones, tiene una experiencia integrada para configurar la aplicación lógica con una identidad de Microsoft Entra. Para obtener más información, consulte Creación e implementación de flujos de trabajo de aplicación lógica: Visual Studio Code.

Sin embargo, si usa Visual Studio Code para el desarrollo, pero usa la CLI de Azure o canalizaciones automatizadas para realizar las implementaciones, siga estos pasos.

Configuración de la conexión y la aplicación en el proyecto

  1. En el archivo connections.json del proyecto de aplicación lógica, busque el objeto authentication de la conexión administrada. Reemplace el contenido de este objeto por la información de registro de la aplicación que generó anteriormente en los requisitos previos de nivel superior:

    "authentication": {
       "type": "ActiveDirectoryOAuth",
       "audience": "https://management.core.windows.net/",
       "credentialType": "Secret",
       "clientId": "@appsetting('WORKFLOWAPP_AAD_CLIENTID')",
       "tenant": "@appsetting('WORKFLOWAPP_AAD_TENANTID')",
       "secret": "@appsetting('WORKFLOWAPP_AAD_CLIENTSECRET')"
    } 
    
  2. En el archivo local.settings.json del proyecto de aplicación lógica, agregue el id. de cliente, el id. de objeto, el id. de inquilino y el secreto de cliente. Después de realizar la implementación, esta configuración se convierte en la configuración de la aplicación lógica.

    {
       "IsEncrypted": false,
       "Values": {
          <...>
          "WORKFLOWAPP_AAD_CLIENTID":"<my-client-ID>",
          "WORKFLOWAPP_AAD_OBJECTID":"<my-object-ID",
          "WORKFLOWAPP_AAD_TENANTID":"<my-tenant-ID>",
          "WORKFLOWAPP_AAD_CLIENTSECRET":"<my-client-secret>"
       }
    }
    

Importante

En escenarios o entornos de producción, asegúrese de proteger estos secretos e información confidencial, por ejemplo, mediante el uso de un almacén de claves.

Adición de directivas de acceso

En las instancias de Azure Logic Apps de un solo inquilino, cada aplicación lógica tiene una identidad a la que las directivas de acceso conceden permisos para usar conexiones administradas y hospedadas en Azure. Puede configurar estas directivas de acceso mediante las implementaciones de Azure Portal o de infraestructura.

Plantilla ARM

En la plantilla de Azure Resource Manager (plantilla de ARM), incluya la siguiente definición de recurso para cada conexión de API administrada y proporcione la siguiente información:

Parámetro Descripción
<connection-name> El nombre de la conexión de la API administrada, por ejemplo, office365.
<object-ID> Es el id. de objeto de la identidad de Microsoft Entra, guardada previamente desde el registro de la aplicación.
<tenant-ID> Es el id. de inquilino de la identidad de Microsoft Entra, guardada previamente desde el registro de la aplicación.
{
   "type": "Microsoft.Web/connections/accessPolicies",
   "apiVersion": "2016-06-01",
   "name": "[concat('<connection-name>'),'/','<object-ID>')]",
   "location": "<location>",
   "dependsOn": [
      "[resourceId('Microsoft.Web/connections', parameters('connection_name'))]"
   ],
   "properties": {
      "principal": {
         "type": "ActiveDirectory",
         "identity": {
            "objectId": "<object-ID>",
            "tenantId": "<tenant-ID>"
         }
      }
   }
}

Para obtener más información, revise la documentación Microsoft.Web/connections/accesspolicies (plantilla de ARM).

Azure Portal

Para esta tarea, use el id. de cliente que guardó anteriormente como id. de aplicación.

  1. En Azure Portal, busque y abra la aplicación lógica. En el menú de la aplicación lógica, en la opción Flujos de trabajo, seleccione Conexiones, que enumera todas las conexiones de los flujos de trabajo de la aplicación lógica.

  2. En Conexiones de API, seleccione una conexión; en este ejemplo es office365.

  3. En el menú de la conexión, en la opción Configuración, seleccione Directivas de acceso>Agregar.

  4. En el panel Agregar directiva de acceso, en el cuadro de búsqueda, busque y seleccione el id. de cliente que guardó anteriormente.

  5. Cuando finalice, seleccione Agregar.

  6. Repita estos pasos para cada conexión hospedada en Azure en la aplicación lógica.

Automatización de la implementación de DevOps

Para compilar e implementar las aplicaciones lógicas habilitadas para Azure Arc, puede usar las mismas canalizaciones y procesos de las aplicaciones lógicas basadas en un solo inquilino. Para automatizar las implementaciones de infraestructura mediante las canalizaciones de DevOps, realice los siguientes cambios en el nivel de infraestructura para las implementaciones que no sean de contenedor y las de contenedor.

Implementación estándar (sin contenedor)

Si usa la implementación de tipo ZIP para realizar la implementación de aplicaciones lógicas, no es necesario que configure un registro de Docker para hospedar imágenes de contenedor. Aunque las aplicaciones lógicas en Kubernetes se ejecutan técnicamente en contenedores, Logic Apps habilitado para Azure Arc puede administrar estos contenedores automáticamente. En este escenario, realice las siguientes tareas al configurar la infraestructura:

En la plantilla de Azure Resource Manager (plantilla de ARM), incluya los valores siguientes:

Elemento Propiedad JSON Descripción
Location location Asegúrese de usar la misma ubicación del recurso (región de Azure) que la ubicación personalizada y el entorno de Kubernetes. Las ubicaciones del recurso de la aplicación lógica, la ubicación personalizada y el entorno de Kubernetes deben tener los mismos valores.

Nota: Este valor no es el mismo que el nombre de la ubicación personalizada.

Tipo de aplicación kind El tipo de aplicación que va a implementar para que la plataforma de Azure pueda identificar la aplicación. En Azure Logic Apps, esta información es similar al ejemplo siguiente: kubernetes,functionapp,workflowapp,linux.
Ubicación extendida extendedLocation Este objeto requiere el valor "name" de la ubicación personalizada para el entorno de Kubernetes y debe tener el valor "type" establecido en "CustomLocation".
Id. de recurso del plan de hospedaje serverFarmId Id. de recurso del plan de App Service asociado, con el formato siguiente:

"/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}"

Cadena de conexión de almacenamiento AzureWebJobsStorage Cadena de conexión para la cuenta de almacenamiento.

Importante: debe proporcionar la cadena de conexión para la cuenta de almacenamiento en la plantilla de ARM. En escenarios o entornos de producción, asegúrese de proteger estos secretos e información confidencial, por ejemplo, mediante un almacén de claves.

Plantilla ARM

En el ejemplo siguiente se describe una muestra de la definición de recursos de Logic Apps habilitado para Azure Arc que puede usar en la plantilla de ARM. Para obtener más información, revise la documentación sobre el formato de plantilla Microsoft.Web/sites (JSON).

{
   "type": "Microsoft.Web/sites",
   "apiVersion": "2020-12-01",
   "name": "[parameters('name')]",
   "location": "[parameters('location')]",
   "kind": "kubernetes,functionapp,workflowapp,linux",
   "extendedLocation": {
      "name": "[parameters('customLocationId')]",
      "type": "CustomLocation"
    },
   "properties": {
      "clientAffinityEnabled": false,
      "name": "[parameters('name')]",
      "serverFarmId": "<hosting-plan-ID>",
      "siteConfig": {
         "appSettings": [
            {
               "name": "FUNCTIONS_EXTENSION_VERSION",
               "value": "~3"
            },
            {
               "name": "FUNCTIONS_WORKER_RUNTIME",
               "value": "node"
            },
            {
               "name": "AzureWebJobsStorage",
               "value": "<storage-connection-string>"
            },
            {
               "name": "AzureFunctionsJobHost__extensionBundle__id",
               "value": "Microsoft.Azure.Functions.ExtensionBundle.Workflows"
            },
            {
               "name": "AzureFunctionsJobHost__extensionBundle__version",
               "value": "[1.*, 2.0.0)"
            },
            {
               "name": "APP_KIND",
               "value": "workflowapp"
            }
         ],
         "use32BitWorkerProcess": "[parameters('use32BitWorkerProcess')]",
         "linuxFxVersion": "Node|12"
      }
   }
}

Implementación de contenedores

Si prefiere usar herramientas de contenedor y procesos de implementación, puede incluir en contenedores las aplicaciones lógicas e implementarlas en Logic Apps habilitado para Azure Arc. En este escenario, realice las siguientes tareas de alto nivel al configurar la infraestructura:

  • Configure un registro de Docker para hospedar las imágenes de contenedor.

  • Para crear una aplicación lógica en contenedores, agregue el Dockerfile siguiente a la carpeta raíz del proyecto de aplicación lógica y siga los pasos para compilar y publicar una imagen en el registro de Docker; por ejemplo, revise Tutorial: Compilación e implementación de imágenes de contenedor en la nube con Azure Container Registry Tasks.

    Nota

    Si usa SQL como proveedor de almacenamiento, asegúrese de utilizar una imagen de Azure Functions de la versión 3.3.1 o posterior.

    FROM mcr.microsoft.com/azure-functions/node:3.3.1
    ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
    AzureFunctionsJobHost__Logging__Console__IsEnabled=true \
    FUNCTIONS_V2_COMPATIBILITY_MODE=true
    COPY . /home/site/wwwroot
    RUN cd /home/site/wwwroot
    
  • Notifique al proveedor de recursos que va a crear una aplicación lógica en Kubernetes.

  • En la plantilla de implementación, seleccione el registro de Docker y la imagen de contenedor donde planea implementarlo. La instancia de Azure Logic Apps de un solo inquilino usa esta información para obtener la imagen de contenedor del registro de Docker.

  • Incluya un plan de App Service con la implementación. Para obtener más información, consulte Incluir un plan de App Service con una implementación.

En la plantilla de Azure Resource Manager (plantilla de ARM), incluya los valores siguientes:

Elemento Propiedad JSON Descripción
Location location Asegúrese de usar la misma ubicación del recurso (región de Azure) que la ubicación personalizada y el entorno de Kubernetes. Las ubicaciones del recurso de la aplicación lógica, la ubicación personalizada y el entorno de Kubernetes deben tener los mismos valores.

Nota: Este valor no es el mismo que el nombre de la ubicación personalizada.

Tipo de aplicación kind El tipo de aplicación que va a implementar para que la plataforma de Azure pueda identificar la aplicación. En Azure Logic Apps, esta información es similar al ejemplo siguiente: kubernetes,functionapp,workflowapp,container.
Ubicación extendida extendedLocation Este objeto requiere el valor "name" de la ubicación personalizada para el entorno de Kubernetes y debe tener el valor "type" establecido en "CustomLocation".
Nombre del contenedor linuxFxVersion El nombre del contenedor cuenta con el formato siguiente: DOCKER\|<container-name>.
Id. de recurso del plan de hospedaje serverFarmId Id. de recurso del plan de App Service asociado, con el formato siguiente:

"/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}"

Cadena de conexión de almacenamiento AzureWebJobsStorage Cadena de conexión para la cuenta de almacenamiento.

Importante: al implementar contenido en un contenedor de Docker, debe proporcionar la cadena de conexión de la cuenta de almacenamiento en la plantilla de ARM. En escenarios o entornos de producción, asegúrese de proteger estos secretos e información confidencial, por ejemplo, mediante un almacén de claves.

Para hacer referencia a la imagen de contenedor y del registro de Docker, incluya estos valores en la plantilla:

Elemento Propiedad JSON Descripción
Dirección URL del servidor de registro de Docker DOCKER_REGISTRY_SERVER_URL Es la dirección URL del servidor del registro de Docker.
Servidor de registro de Docker DOCKER_REGISTRY_SERVER_USERNAME Es el nombre de usuario para obtener acceso al servidor del registro de Docker.
Contraseña del servidor de registro de Docker DOCKER_REGISTRY_SERVER_PASSWORD Es la contraseña para obtener acceso al servidor del registro de Docker.

Plantilla ARM

En el ejemplo siguiente se describe una muestra de la definición de recursos de Logic Apps habilitado para Azure Arc que puede usar en la plantilla de ARM. Para obtener más información, revise la documentación sobre el formato de plantilla Microsoft.Web/sites (plantilla de ARM).

{
   "type": "Microsoft.Web/sites",
   "apiVersion": "2020-12-01",
   "name": "[parameters('name')]",
   "location": "[parameters('location')]",
   "kind": " kubernetes,functionapp,workflowapp,container",
   "extendedLocation": {
      "name": "[parameters('customLocationId')]",
      "type": "CustomLocation"
    },
   "properties": {
      "name": "[parameters('name')]",
      "clientAffinityEnabled": false,
      "serverFarmId": "<hosting-plan-ID>",
      "siteConfig": {
         "appSettings": [
            {
               "name": "FUNCTIONS_EXTENSION_VERSION",
               "value": "~3"
            },
            {
               "name": "FUNCTIONS_WORKER_RUNTIME",
               "value": "node"
            },
            {
               "name": "AzureWebJobsStorage",
               "value": "<storage-connection-string>"
            },
            {
               "name": "AzureFunctionsJobHost__extensionBundle__id",
               "value": "Microsoft.Azure.Functions.ExtensionBundle.Workflows"
            },
            {
               "name": "AzureFunctionsJobHost__extensionBundle__version",
               "value": "[1.*, 2.0.0)"
            },
            {
               "name": "APP_KIND",
               "value": "workflowapp"
            }, 
            {
               "name": "DOCKER_REGISTRY_SERVER_URL",
               "value": "<docker-registry-server-URL>"
            },
            { 
               "name": "DOCKER_REGISTRY_SERVER_USERNAME",
               "value": "<docker-registry-server-username>"
            },
            {
               "name": "DOCKER_REGISTRY_SERVER_PASSWORD",
               "value": "<docker-registry-server-password>"
            }
         ],
         "use32BitWorkerProcess": "[parameters('use32BitWorkerProcess')]",
         "linuxFxVersion": "DOCKER|<container-name>"
      }
   }
}

Inclusión del plan de App Service con la implementación

Tanto si tiene una implementación estándar como de contenedor, debe incluir un plan de App Service con la implementación. Aunque este plan se vuelve menos relevante con un entorno de Kubernetes, recuerde que las implementaciones estándar y de contenedor seguirán necesitando un plan de App Service.

Aunque otras opciones de creación normalmente controlan el aprovisionamiento del recurso de Azure para este plan, si las implementaciones usan plantillas de tipo "infraestructura como código", tendrá que crear explícitamente el recurso de Azure para el plan. El recurso del plan de hospedaje no cambia, solo la información sku.

En la plantilla de Azure Resource Manager (plantilla de ARM), incluya los valores siguientes:

Elemento Propiedad JSON Descripción
Location location Asegúrese de usar la misma ubicación del recurso (región de Azure) que la ubicación personalizada y el entorno de Kubernetes. Las ubicaciones del recurso de la aplicación lógica, la ubicación personalizada y el entorno de Kubernetes deben tener los mismos valores.

Nota: Este valor no es el mismo que el nombre de la ubicación personalizada.

Tipo kind El tipo de plan de App Service implementado que debe ser kubernetes,linux
Ubicación extendida extendedLocation Este objeto requiere el valor "name" de la ubicación personalizada para el entorno de Kubernetes y debe tener el valor "type" establecido en "CustomLocation".
Nombre del plan de hospedaje name El nombre del plan de App Service.
Nivel de plan sku: tier Es el nivel del plan de App Service, que es K1.
Nombre del plan sku: name Es el nombre del plan de App Service, que es Kubernetes.

Plantilla ARM

En el ejemplo siguiente se describe una definición de recursos del plan de App Service que puede usar con la implementación de la aplicación. Para obtener más información, revise la documentación sobre el formato de plantilla Microsoft.Web/serverfarms (plantilla de ARM).

{
   "type": "Microsoft.Web/serverfarms",
   "apiVersion": "2020-12-01",
   "location": "<location>",
   "name": "<hosting-plan-name>",
   "kind": "kubernetes,linux",
   "extendedLocation": {
      "name": "[parameters('customLocationId')]",
      "type": "CustomLocation"
   },
   "sku": {
      "tier": "Kubernetes",
      "name": "K1", 
      "capacity": 1
   },
   "properties": {
      "kubeEnvironmentProfile": {
         "id": "[parameters('kubeEnvironmentId')]"
      }
   }
}

Cambio del comportamiento de escalado predeterminado

Logic Apps habilitado para Azure Arc administra automáticamente el escalado de las aplicaciones lógicas en función del número de trabajos de la cola de almacenamiento de back-end. Sin embargo, puede cambiar el comportamiento de escalado predeterminado.

En una aplicación lógica, la definición del flujo de trabajo especifica la secuencia de acciones que se ejecutarán. Cada vez que se desencadena una ejecución de flujo de trabajo, el tiempo de ejecución de Azure Logic Apps crea un trabajo para cada tipo de acción en la definición del flujo de trabajo. A continuación, el tiempo de ejecución organiza estos trabajos en un secuenciador de trabajos. Este secuenciador orquesta la ejecución de los trabajos para la definición del flujo de trabajo, pero el motor de orquestación del trabajo subyacente de Azure Logic Apps ejecuta cada trabajo.

En cuanto a los flujos de trabajo con estado, el motor de orquestación de trabajos usa mensajes de cola de almacenamiento para programar trabajos en los secuenciadores de trabajos. En segundo plano, los distribuidores de trabajos (o las instancias de trabajo del distribuidor) supervisan estas colas de trabajos. El motor de orquestación usa un número mínimo y máximo predeterminado de instancias de trabajo para supervisar las colas de trabajos. En el caso de los flujos de trabajo sin estado, el motor de orquestación mantiene completamente los estados de acción en la memoria.

Para cambiar el comportamiento de escalado predeterminado, especifique diferentes números mínimos y máximos de instancias de trabajo que supervisan las colas de trabajos.

Requisitos previos para cambiar el escalado

En el clúster de Kubernetes habilitado para Azure Arc, la extensión de conjunto de App Service que se creó anteriormente debe tener la propiedad keda.enabled establecida en true. Para obtener más información, revise los Requisitos previos de nivel superior.

Cambio del umbral de escalado

En Logic Apps habilitado para Azure Arc, la longitud de la cola de trabajos desencadena un evento de escalado y establece un umbral para indicar la frecuencia con la que se produce el escalado de la aplicación lógica. Puede cambiar la longitud de la cola, que tiene el valor predeterminado establecido en 20 trabajos. Para escalar con menos frecuencia, aumente la longitud de la cola. Para escalar con mayor frecuencia, aumente la longitud de la cola. Este proceso puede requerir algunas operaciones de prueba y error.

Para cambiar la longitud de la cola, en el archivo de nivel raíz host.json del proyecto de aplicación lógica, configure la propiedad Runtime.ScaleMonitor.KEDA.TargetQueueLength, por ejemplo:

"extensions": {
   "workflow": {
      "settings": {
         "Runtime.ScaleMonitor.KEDA.TargetQueueLength": "10"
      }
   }
}

Cambio del valor máximo del rendimiento

En un recurso de aplicación lógica existente, puede cambiar el número máximo de instancias de trabajo, que tiene el valor predeterminado establecido en 2. Este valor controla el límite superior en el número de instancias de trabajo que pueden supervisar las colas de trabajos.

Para cambiar este máximo, use la CLI de Azure (solo para la creación de la aplicación lógica) y Azure Portal.

Azure CLI

Para crear una aplicación lógica, ejecute el comando, az logicapp create, con los siguientes parámetros:

az logicapp create --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --storage-account MyStorageAccount --custom-location MyCustomLocation 
   [--plan MyHostingPlan] [--min-worker-count 1] [--max-worker-count 4]

Para configurar el número máximo de instancias, use el parámetro --settings:

az logicapp config appsettings set --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription
   --settings "K8SE_APP_MAX_INSTANCE_COUNT=10"

Azure Portal

En la configuración de la aplicación lógica basada en un solo inquilino, agregue o edite el valor de configuración K8SE_APP_MAX_INSTANCE_COUNT siguiendo estos pasos:

  1. En Azure Portal, busque y abra la aplicación lógica basada en un solo inquilino.

  2. En el menú de la aplicación lógica, en Configuración, seleccione Configuración.

  3. En el panel Configuración, en la opción Configuración de la aplicación, agregue una nueva configuración de aplicación o edite el valor existente, si ya se ha agregado.

    1. Seleccione Nueva configuración de aplicación y agregue la configuración K8SE_APP_MAX_INSTANCE_COUNT con el valor máximo que quiera.

    2. Edite el valor existente para la configuración K8SE_APP_MAX_INSTANCE_COUNT.

  4. Cuando haya terminado, guarde los cambios.

Cambio del valor mínimo del rendimiento

En un recurso de aplicación lógica existente, puede cambiar el número mínimo de instancias de trabajo, que tiene el valor predeterminado establecido en 1. Este valor controla el límite inferior en el número de instancias de trabajo que pueden supervisar las colas de trabajos. Para obtener una alta disponibilidad o rendimiento, aumente este valor.

Para cambiar este mínimo, use la CLI de Azure o Azure Portal.

Azure CLI

En el caso de un recurso de aplicación lógica existente, ejecute el comando, az logicapp scale, con los siguientes parámetros:

az logicapp scale --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --instance-count 5 

Para crear una aplicación lógica, ejecute el comando, az logicapp create, con los siguientes parámetros:

az logicapp create --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --storage-account MyStorageAccount --custom-location MyCustomLocation 
   [--plan MyHostingPlan] [--min-worker-count 2] [--max-worker-count 4]

Azure Portal

En la configuración de la aplicación lógica basada en un solo inquilino, cambie el valor de la propiedad Escalar horizontalmente siguiendo estos pasos:

  1. En Azure Portal, busque y abra la aplicación lógica basada en un solo inquilino.

  2. En la opción Configuración del menú de la aplicación lógica, seleccione Escalar horizontalmente.

  3. En el panel Escalar horizontalmente, arrastre el control deslizante de instancias mínimas al valor que quiera.

  4. Cuando haya terminado, guarde los cambios.

Solucionar problemas

Para obtener más información sobre las aplicaciones lógicas implementadas, pruebe las siguientes opciones:

Acceso a la configuración y la configuración de la aplicación

Para acceder a la configuración de una aplicación, ejecute el comando,az logicapp config appsettings, con los siguientes parámetros:

az logicapp config appsettings list --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

Para configurar un valor de una aplicación, ejecute el comando,az logicapp config appsettings set, con los siguientes parámetros. Asegúrese de usar el parámetro --settings con el nombre y el valor de su configuración.

az logicapp config appsettings set --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --settings "MySetting=1"

Para eliminar un valor de una aplicación, ejecute el comando,az logicapp config appsettings delete, con los siguientes parámetros. Asegúrese de usar el parámetro --setting-names con el nombre del valor que quiere eliminar.

az logicapp config appsettings delete --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription
   --setting-names MySetting

Visualización de las propiedades de la aplicación lógica

Para ver la información y las propiedades de la aplicación, ejecute el comando, az logicapp show, con los siguientes parámetros:

az logicapp show --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

Supervisión de la actividad del flujo de trabajo

Para ver la actividad de un flujo de trabajo en la aplicación lógica, siga estos pasos:

  1. En Azure Portal, busque la aplicación lógica implementada y ábrala.

  2. En el menú de la aplicación lógica, seleccione Flujos de trabajo y, a continuación, seleccione su flujo de trabajo.

  3. En el menú del flujo de trabajo, seleccione Supervisión.

Recopilación de registros

Para obtener los datos registrados sobre la aplicación lógica, habilite Application Insights en la aplicación lógica si aún no lo está.

Pasos siguientes