Creare e distribuire flussi di lavoro di app per la logica basati su tenant singolo con App per la logica abilitate per Azure Arc (anteprima)

Nota

Questa funzionalità è disponibile in anteprima ed è soggetta alle Condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure.

Con App per la logica abilitate per Azure Arc e le portale di Azure, è possibile creare e distribuire flussi di lavoro di app per la logica basati su tenant singolo in un'infrastruttura Kubernetes gestita e gestita. Le app per la logica vengono eseguite in un percorso personalizzato mappato a un cluster Kubernetes abilitato per Azure Arc in cui è stato installato e abilitato il bundle delle estensioni della piattaforma del servizio app Azure.

Ad esempio, questo cluster può essere servizio Azure Kubernetes, bare metal Kubernetes o un'altra configurazione. Il bundle di estensioni consente di eseguire servizi della piattaforma, ad esempio App per la logica di Azure, app Azure Servizio e Funzioni di Azure nel cluster Kubernetes.

Per altre informazioni, vedere la documentazione seguente:

Prerequisiti

Questa sezione descrive i prerequisiti comuni in tutti gli approcci e gli strumenti che è possibile usare per creare e distribuire i flussi di lavoro dell'app per la logica. I prerequisiti specifici dello strumento vengono visualizzati insieme ai passaggi corrispondenti.

  • Un account Azure con una sottoscrizione attiva. Se non hai una sottoscrizione di Azure, crea un account gratuito.

  • Un ambiente Kubernetes con un cluster Kubernetes abilitato per Azure Arc e un percorso personalizzato in cui è possibile ospitare ed eseguire App per la logica di Azure, servizio app Azure e Funzioni di Azure.

    Importante

    Assicurarsi di usare la stessa posizione delle risorse per l'ambiente Kubernetes, la posizione personalizzata e l'app per la logica.

    Quando si crea l'estensione bundle servizio app nel cluster Kubernetes, è possibile modificare il comportamento di ridimensionamento predefinito per l'esecuzione dei flussi di lavoro dell'app per la logica. Quando si crea l'estensione usando il comando dell'interfaccia della riga di comando di Azure, az k8s-extension create, assicurarsi di includere l'impostazione di configurazione : keda.enabled=true

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

    Per altre informazioni, vedere la documentazione seguente:

  • Identità di Microsoft Entra

    Se i flussi di lavoro devono usare connessioni ospitate in Azure, ad esempio Office 365 Outlook o Archiviazione di Azure, l'app per la logica deve usare un'identità di Microsoft Entra per l'autenticazione. App per la logica abilitate per Azure Arc può essere eseguita in qualsiasi infrastruttura, ma richiede un'identità con autorizzazioni per l'uso delle connessioni ospitate in Azure. Per configurare questa identità, creare una registrazione dell'app nell'ID Microsoft Entra usato dall'app per la logica come identità richiesta.

    Nota

    Il supporto delle identità gestite non è attualmente disponibile per App per la logica abilitate per Azure Arc.

    Per creare una registrazione dell'app Microsoft Entra usando l'interfaccia della riga di comando di Azure, seguire questa procedura:

    1. Creare una registrazione dell'app usando il az ad sp create comando .

    2. Per esaminare tutti i dettagli, eseguire il az ad sp show comando .

    3. Dall'output di entrambi i comandi trovare e salvare l'ID client, l'ID oggetto, l'ID tenant e i valori dei segreti client, che è necessario conservare per usarli in un secondo momento.

    Per creare una registrazione dell'app Microsoft Entra usando il portale di Azure, seguire questa procedura:

    1. Creare una nuova registrazione dell'app Microsoft Entra usando il portale di Azure.

    2. Al termine della creazione, trovare la nuova registrazione dell'app nel portale.

    3. Nel menu di registrazione selezionare Panoramica e salvare i valori di ID client, ID tenant e segreto client.

    4. Per trovare l'ID oggetto, accanto al campo Applicazione gestita nella directory locale, selezionare il nome per la registrazione dell'app. Dalla visualizzazione delle proprietà copiare l'ID oggetto.

Creare e distribuire app per la logica

In base al fatto che si voglia usare l'interfaccia della riga di comando di Azure, Visual Studio Code o il portale di Azure, selezionare la scheda corrispondente per esaminare i prerequisiti e i passaggi specifici.

Prima di iniziare, è necessario disporre degli elementi seguenti:

  • L'estensione più recente dell'interfaccia della riga di comando di Azure installata nel computer locale.

    • Se questa estensione non è disponibile, vedere la guida all'installazione per il sistema operativo o la piattaforma.

    • Se non si è certi di avere la versione più recente, seguire la procedura per controllare l'ambiente e la versione dell'interfaccia della riga di comando.

  • L'estensione di anteprima App per la logica di Azure (Standard) per l'interfaccia della riga di comando di Azure.

    Anche se la App per la logica di Azure a tenant singolo è disponibile a livello generale, l'estensione App per la logica di Azure è ancora in anteprima.

  • Un gruppo di risorse di Azure per cui creare l'app per la logica.

    Se questo gruppo di risorse non è disponibile, seguire la procedura per creare il gruppo di risorse.

  • Un account di archiviazione di Azure da usare con l'app per la logica per i dati e la conservazione della cronologia di esecuzione.

    Se questo account di archiviazione non è disponibile, è possibile creare questo account quando si crea l'app per la logica oppure seguire la procedura per creare un account di archiviazione.

Controllare l'ambiente e la versione dell'interfaccia della riga di comando

  1. Accedi al portale di Azure. Verificare che la sottoscrizione sia attiva eseguendo il comando seguente:

    az login
    
  2. Controllare la versione dell'interfaccia della riga di comando di Azure in un terminale o in una finestra di comando eseguendo il comando seguente:

    az --version
    

    Per la versione più recente, vedere le ultime note sulla versione.

  3. Se non si dispone della versione più recente, aggiornare l'installazione seguendo la guida all'installazione per il sistema operativo o la piattaforma in uso.

Installare App per la logica di Azure estensione (Standard) per l'interfaccia della riga di comando di Azure

Installare l'estensione App per la logica di Azure a tenant singolo (Standard) di anteprima per l'interfaccia della riga di comando di Azure eseguendo il comando seguente:

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

Crea gruppo di risorse

Se non si ha già un gruppo di risorse per l'app per la logica, creare il gruppo eseguendo il comando . az group create A meno che non sia già stata impostata una sottoscrizione predefinita per l'account Azure, assicurarsi di usare il parametro con il nome o l'identificatore --subscription della sottoscrizione. In caso contrario, non è necessario usare il --subscription parametro .

Suggerimento

Per impostare una sottoscrizione predefinita, eseguire il comando seguente e sostituire MySubscription con il nome o l'identificatore della sottoscrizione.

az account set --subscription MySubscription

Ad esempio, il comando seguente crea un gruppo di risorse denominato MyResourceGroupName usando la sottoscrizione di Azure denominata MySubscription nel percorso eastus:

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

Se il gruppo di risorse viene creato correttamente, l'output provisioningState mostra come Succeeded:

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

Crea un'app per la logica

Per creare un'app per la logica abilitata per Azure Arc, eseguire il comando az logicapp create, con i parametri obbligatori seguenti. Le posizioni delle risorse per l'app per la logica, la posizione personalizzata e l'ambiente Kubernetes devono essere tutte uguali.

Parametri Descrizione
--name -n Nome univoco per l'app per la logica
--resource-group -g Nome del gruppo di risorse in cui si vuole creare l'app per la logica. Se non è necessario usarlo, creare un gruppo di risorse.
--storage-account -s Account di archiviazione da usare con l'app per la logica. Per gli account di archiviazione nello stesso gruppo di risorse, usare un valore stringa. Per gli account di archiviazione in un gruppo di risorse diverso, usare un ID risorsa.
az logicapp create --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --storage-account MyStorageAccount --custom-location MyCustomLocation

Per creare un'app per la logica abilitata per Azure Arc usando un'immagine di Registro Azure Container privata , eseguire il comando , az logicapp createcon i parametri obbligatori seguenti:

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

Visualizzare i dettagli dell'app per la logica

Per visualizzare i dettagli sull'app per la logica abilitata per Azure Arc, eseguire il comando , az logicapp showcon i parametri obbligatori seguenti:

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

Distribuire un'app per la logica

Per distribuire l'app per la logica abilitata per Azure Arc usando la distribuzione zip kudu del servizio app Azure, eseguire il comando , az logicapp deployment source config-zipcon i parametri obbligatori seguenti:

Importante

Assicurarsi che il file ZIP contenga gli artefatti del progetto a livello radice. Questi artefatti includono tutte le cartelle del flusso di lavoro, i file di configurazione, ad esempio host.json, connections.json e qualsiasi altro file correlato. Non aggiungere cartelle aggiuntive né inserire elementi in cartelle che non esistono già nella struttura del progetto. Ad esempio, questo elenco mostra una struttura di file MyBuildArtifacts.zip di esempio:

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

Avviare l'app per la logica

Per avviare l'app per la logica abilitata per Azure Arc, eseguire il comando az logicapp start, con i parametri obbligatori seguenti:

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

Arrestare l'app per la logica

Per arrestare l'app per la logica abilitata per Azure Arc, eseguire il comando , az logicapp stopcon i parametri obbligatori seguenti:

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

Riavviare l'app per la logica

Per riavviare l'app per la logica abilitata per Azure Arc, eseguire il comando az logicapp restart, con i parametri obbligatori seguenti:

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

Eliminare l'app per la logica

Per eliminare l'app per la logica abilitata per Azure Arc, eseguire il comando az logicapp delete, con i parametri obbligatori seguenti:

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

Configurare l'autenticazione della connessione

Attualmente, i cluster Kubernetes abilitati per Azure Arc non supportano l'uso dell'identità gestita di un'app per la logica per autenticare le connessioni API gestite. Queste connessioni gestite e ospitate in Azure vengono create quando si usano connettori gestiti nei flussi di lavoro.

È invece necessario creare una registrazione dell'app personalizzata in Microsoft Entra ID. È quindi possibile usare questa registrazione dell'app come identità per le app per la logica distribuite e in esecuzione in App per la logica abilitate per Azure Arc. Per altre informazioni, vedere i prerequisiti di primo livello.

Dalla registrazione dell'app sono necessari l'ID client, l'ID oggetto, l'ID tenant e il segreto client. Se si usa Visual Studio Code per la distribuzione, è disponibile un'esperienza predefinita per configurare l'app per la logica con un'identità Microsoft Entra. Per altre informazioni, vedere Creare e distribuire flussi di lavoro di app per la logica - Visual Studio Code.

Tuttavia, se si usa Visual Studio Code per lo sviluppo, ma si usano l'interfaccia della riga di comando di Azure o pipeline automatizzate per la distribuzione, seguire questa procedura.

Configurare le impostazioni di connessione e app nel progetto

  1. Nel file connections.json del progetto dell'app per la logica trovare l'oggetto della authentication connessione gestita. Sostituire il contenuto dell'oggetto con le informazioni di registrazione dell'app generate in precedenza nei prerequisiti di primo livello:

    "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. Nel file local.settings.json del progetto dell'app per la logica aggiungere l'ID client, l'ID oggetto, l'ID tenant e il segreto client. Dopo la distribuzione, queste impostazioni diventano le impostazioni dell'app per la logica.

    {
       "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

Per scenari o ambienti di produzione, assicurarsi di proteggere e proteggere tali segreti e informazioni riservate, ad esempio usando un insieme di credenziali delle chiavi.

Aggiungere criteri di accesso

In App per la logica di Azure a tenant singolo, ogni app per la logica ha un'identità concessa dai criteri di accesso per l'uso di connessioni gestite e ospitate in Azure. È possibile configurare questi criteri di accesso usando le distribuzioni di portale di Azure o dell'infrastruttura.

Modello ARM

Nel modello di Azure Resource Manager includere la definizione di risorsa seguente per ogni connessione API gestita e fornire le informazioni seguenti:

Parametro Descrizione
<nome connessione> Nome della connessione API gestita, ad esempio office365
<object-ID> ID oggetto per l'identità di Microsoft Entra, salvato in precedenza dalla registrazione dell'app
<tenant-ID> ID tenant per l'identità di Microsoft Entra, salvato in precedenza dalla registrazione dell'app
{
   "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>"
         }
      }
   }
}

Per altre informazioni, vedere la documentazione di Microsoft.Web/connections/accesspolicies (modello arm).

Azure portal

Per questa attività, usare l'ID client salvato in precedenza come ID applicazione.

  1. Nel portale di Azure trovare e aprire l'app per la logica. Nel menu dell'app per la logica, in Flussi di lavoro selezionare Connessione ions, che elenca tutte le connessioni nei flussi di lavoro dell'app per la logica.

  2. In API Connessione ions selezionare una connessione, in office365 questo esempio.

  3. Nel menu della connessione, in Impostazioni, selezionare Criteri di accesso>Aggiungi.

  4. Nella casella di ricerca del riquadro Aggiungi criteri di accesso individuare e selezionare l'ID client salvato in precedenza.

  5. Al termine, selezionare Aggiungi.

  6. Ripetere questi passaggi per ogni connessione ospitata in Azure nell'app per la logica.

Automatizzare la distribuzione di DevOps

Per compilare e distribuire le app per la logica abilitate per Azure Arc, è possibile usare le stesse pipeline e i processi delle app per la logica basate su tenant singolo. Per automatizzare le distribuzioni dell'infrastruttura usando le pipeline per DevOps, apportare le modifiche seguenti a livello di infrastruttura sia per le distribuzioni non contenitore che per i contenitori.

Distribuzione standard (non contenitore)

Se si usa la distribuzione zip per la distribuzione di app per la logica, non è necessario configurare un registro Docker per l'hosting di immagini del contenitore. Anche se le app per la logica in Kubernetes vengono eseguite tecnicamente nei contenitori, app per la logica abilitate per Azure Arc gestisce automaticamente questi contenitori. Per questo scenario, completare le attività seguenti quando si configura l'infrastruttura:

Nel modello di Azure Resource Manager (modello arm) sono inclusi i valori seguenti:

Articolo Proprietà JSON Descrizione
Ubicazione location Assicurarsi di usare la stessa località della risorsa (area di Azure) della posizione personalizzata e dell'ambiente Kubernetes. Le posizioni delle risorse per l'app per la logica, la posizione personalizzata e l'ambiente Kubernetes devono essere tutte uguali.

Nota: questo valore non corrisponde al nome della posizione personalizzata.

Tipo di app kind Tipo di app che si sta distribuendo in modo che la piattaforma Azure possa identificare l'app. Per App per la logica di Azure, queste informazioni sono simili all'esempio seguente:kubernetes,functionapp,workflowapp,linux
Posizione estesa extendedLocation Questo oggetto richiede la posizionepersonalizzata per l'ambiente "name" Kubernetes e deve avere impostato "type" su "CustomLocation".
ID risorsa del piano di hosting serverFarmId ID risorsa del piano di servizio app associato, formattato come segue:

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

Stringa di connessione di archiviazione AzureWebJobsStorage Il stringa di connessione per l'account di archiviazione

Importante: è necessario fornire il stringa di connessione per l'account di archiviazione nel modello di Resource Manager. Per scenari o ambienti di produzione, assicurarsi di proteggere e proteggere tali segreti e informazioni riservate, ad esempio usando un insieme di credenziali delle chiavi.

Modello ARM

L'esempio seguente descrive una definizione di risorsa di App per la logica abilitata per Azure Arc di esempio che è possibile usare nel modello di Resource Manager. Per altre informazioni, vedere la documentazione relativa al formato di modello 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"
      }
   }
}

Distribuzione di contenitori

Se si preferisce usare strumenti contenitore e processi di distribuzione, è possibile inserire in contenitori le app per la logica e distribuirle in App per la logica abilitate per Azure Arc. Per questo scenario, completare le attività generali seguenti quando si configura l'infrastruttura:

  • Configurare un registro Docker per ospitare le immagini del contenitore.

  • Per inserire in un contenitore l'app per la logica, aggiungere il Dockerfile seguente alla cartella radice del progetto dell'app per la logica e seguire i passaggi per compilare e pubblicare un'immagine nel registro Docker, ad esempio Esercitazione: Compilare e distribuire immagini del contenitore nel cloud con attività Registro Azure Container.

    Nota

    Se si usa SQL come provider di archiviazione, assicurarsi di usare un'immagine Funzioni di Azure versione 3.3.1 o successiva.

    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
    
  • Notificare al provider di risorse che si sta creando un'app per la logica in Kubernetes.

  • Nel modello di distribuzione puntare al registro Docker e all'immagine del contenitore in cui si prevede di distribuire. Il App per la logica di Azure a tenant singolo usa queste informazioni per ottenere l'immagine del contenitore dal registro Docker.

  • Includere un piano di servizio app con la distribuzione. Per altre informazioni, vedere Includere servizio app piano con la distribuzione.

Nel modello di Azure Resource Manager (modello arm) includere i valori seguenti:

Articolo Proprietà JSON Descrizione
Ubicazione location Assicurarsi di usare la stessa località della risorsa (area di Azure) della posizione personalizzata e dell'ambiente Kubernetes. Le posizioni delle risorse per l'app per la logica, la posizione personalizzata e l'ambiente Kubernetes devono essere tutte uguali.

Nota: questo valore non corrisponde alnome della posizione personalizzata.

Tipo di app kind Tipo di app che si sta distribuendo in modo che la piattaforma Azure possa identificare l'app. Per App per la logica di Azure, queste informazioni sono simili all'esempio seguente:kubernetes,functionapp,workflowapp,container
Posizione estesa extendedLocation Questo oggetto richiede la posizione personalizzata per l'ambiente "name" Kubernetes e deve avere "type" impostato su "CustomLocation".
Nome contenitore linuxFxVersion Il nome del contenitore, formattato come segue: DOCKER\|<container-name>
ID risorsa del piano di hosting serverFarmId ID risorsa del piano di servizio app associato, formattato come segue:

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

Stringa di connessione di archiviazione AzureWebJobsStorage Il stringa di connessione per l'account di archiviazione

Importante: quando si esegue la distribuzione in un contenitore Docker, è necessario fornire il stringa di connessione per l'account di archiviazione nel modello di Resource Manager. Per scenari o ambienti di produzione, assicurarsi di proteggere e proteggere tali segreti e informazioni riservate, ad esempio usando un insieme di credenziali delle chiavi.

Per fare riferimento all'immagine del registro Docker e del contenitore, includere questi valori nel modello:

Articolo Proprietà JSON Descrizione
URL del server del Registro di sistema Docker DOCKER_REGISTRY_SERVER_URL URL del server del Registro di sistema Docker
Server del Registro di sistema Docker DOCKER_REGISTRY_SERVER_USERNAME Nome utente per accedere al server del Registro di sistema Docker
Password del server del Registro di sistema Docker DOCKER_REGISTRY_SERVER_PASSWORD Password per accedere al server del Registro di sistema Docker

Modello ARM

L'esempio seguente descrive una definizione di risorsa di App per la logica abilitata per Azure Arc di esempio che è possibile usare nel modello di Resource Manager. Per altre informazioni, vedere la documentazione relativa al formato di modello Microsoft.Web/sites (modello di Resource Manager).

{
   "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>"
      }
   }
}

Includere servizio app piano con la distribuzione

Indipendentemente dal fatto che sia disponibile una distribuzione standard o contenitore, è necessario includere un piano di servizio app con la distribuzione. Anche se questo piano diventa meno rilevante con un ambiente Kubernetes, le distribuzioni standard e contenitore richiedono comunque un piano di servizio app.

Anche se altre opzioni di creazione gestiscono in genere il provisioning della risorsa di Azure per questo piano, se le distribuzioni usano modelli "infrastruttura come codice", è necessario creare in modo esplicito la risorsa di Azure per il piano. La risorsa del piano di hosting non cambia, ma solo le sku informazioni.

Nel modello di Azure Resource Manager (modello arm) includere i valori seguenti:

Articolo Proprietà JSON Descrizione
Ubicazione location Assicurarsi di usare la stessa località della risorsa (area di Azure) della posizione personalizzata e dell'ambiente Kubernetes. Le posizioni delle risorse per l'app per la logica, la posizione personalizzata e l'ambiente Kubernetes devono essere tutte uguali.

Nota: questo valore non corrisponde al nome della posizione personalizzata.

Tipologia kind Tipo di piano di servizio app da distribuire che deve essere kubernetes,linux
Posizione estesa extendedLocation Questo oggetto richiede la posizione personalizzata per l'ambiente "name" Kubernetes e deve avere "type" impostato su "CustomLocation".
Nome del piano di hosting name Nome del piano di servizio app
Livello di piano sku: tier Livello di piano servizio app, ovveroK1
Nome piano sku: name Nome del piano servizio app, ovveroKubernetes

Modello ARM

L'esempio seguente descrive una definizione di risorsa di esempio servizio app piano che è possibile usare con la distribuzione dell'app. Per altre informazioni, vedere la documentazione relativa al formato di modello Microsoft.Web/serverfarms (modello 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')]"
      }
   }
}

Modificare il comportamento di ridimensionamento predefinito

App per la logica abilitate per Azure Arc gestisce automaticamente il ridimensionamento per le app per la logica in base al numero di processi nella coda di archiviazione back-end. Tuttavia, è possibile modificare il comportamento di ridimensionamento predefinito.

In un'app per la logica la definizione del flusso di lavoro specifica la sequenza di azioni da eseguire. Ogni volta che viene attivata un'esecuzione del flusso di lavoro, il runtime App per la logica di Azure crea un processo per ogni tipo di azione nella definizione del flusso di lavoro. Il runtime organizza quindi questi processi in un sequencer di processo. Questo sequencer orchestra l'esecuzione dei processi per la definizione del flusso di lavoro, ma il motore di orchestrazione dei processi sottostante App per la logica di Azure esegue ogni processo.

Per i flussi di lavoro con stato, il motore di orchestrazione dei processi usa i messaggi della coda di archiviazione per pianificare i processi nei sequencer di processo. Dietro le quinte, i dispatcher di processo (o le istanze del ruolo di lavoro dispatcher) monitorano queste code di processi. Il motore di orchestrazione usa un numero minimo e massimo predefinito di istanze di lavoro per monitorare le code dei processi. Per i flussi di lavoro senza stato, il motore di orchestrazione mantiene completamente gli stati di azione in memoria.

Per modificare il comportamento di ridimensionamento predefinito, specificare diversi numeri minimi e massimi di istanze di lavoro che monitorano le code dei processi.

Prerequisiti per la modifica del ridimensionamento

Nel cluster Kubernetes abilitato per Azure Arc, l'estensione del bundle servizio app creata in precedenza deve avere la keda.enabled proprietà impostata su true. Per altre informazioni, vedere i prerequisiti di primo livello.

Modificare la soglia di ridimensionamento

In App per la logica abilitate per Azure Arc la lunghezza della coda di processi attiva un evento di scalabilità e imposta una soglia per la frequenza con cui si verifica la scalabilità per l'app per la logica. È possibile modificare la lunghezza della coda, con il valore predefinito impostato sui 20 processi. Per ridimensionare meno spesso, aumentare la lunghezza della coda. Per ridimensionare più spesso, ridurre la lunghezza della coda. Questo processo potrebbe richiedere alcuni tentativi ed errori.

Per modificare la lunghezza della coda, nel file host.json a livello radice del progetto dell'app per la logica impostare la Runtime.ScaleMonitor.KEDA.TargetQueueLength proprietà, ad esempio:

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

Modificare il numero massimo di velocità effettiva

In una risorsa dell'app per la logica esistente è possibile modificare il numero massimo di istanze del ruolo di lavoro, con il valore predefinito impostato su 2. Questo valore controlla il limite massimo per il numero di istanze del ruolo di lavoro che possono monitorare le code dei processi.

Per modificare questo valore massimo, usare l'interfaccia della riga di comando di Azure (solo app per la logica) e portale di Azure.

Interfaccia della riga di comando di Azure

Per creare una nuova app per la logica, eseguire il comando , az logicapp createcon i parametri seguenti:

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]

Per configurare il numero massimo di istanze, usare il --settings parametro :

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

Azure portal

Nelle impostazioni dell'app per la logica basata su tenant singolo aggiungere o modificare il valore dell'impostazione K8SE_APP_MAX_INSTANCE_COUNT seguendo questa procedura:

  1. Nella portale di Azure trovare e aprire l'app per la logica basata su tenant singolo.

  2. Nel menu dell'app per la logica, in Impostazioni, selezionare Configurazione.

  3. Nel riquadro Configurazione, in Impostazioni applicazione aggiungere una nuova impostazione dell'applicazione o modificare il valore esistente, se già aggiunto.

    1. Selezionare Nuova impostazione applicazione e aggiungere l'impostazione K8SE_APP_MAX_INSTANCE_COUNT con il valore massimo desiderato.

    2. Modificare il valore esistente per l'impostazione K8SE_APP_MAX_INSTANCE_COUNT .

  4. Al termine, salvare le modifiche.

Modificare la velocità effettiva minima

In una risorsa dell'app per la logica esistente è possibile modificare il numero minimo di istanze del ruolo di lavoro, con il valore predefinito impostato su 1. Questo valore controlla il limite inferiore per il numero di istanze del ruolo di lavoro che possono monitorare le code dei processi. Per la disponibilità elevata o le prestazioni, aumentare questo valore.

Per modificare questo valore minimo, usare l'interfaccia della riga di comando di Azure o il portale di Azure.

Interfaccia della riga di comando di Azure

Per una risorsa dell'app per la logica esistente, eseguire il comando , az logicapp scalecon i parametri seguenti:

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

Per creare una nuova app per la logica, eseguire il comando , az logicapp createcon i parametri seguenti:

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

Nelle impostazioni dell'app per la logica basata su tenant singolo modificare il valore della proprietà Scale out seguendo questa procedura:

  1. Nella portale di Azure trovare e aprire l'app per la logica basata su tenant singolo.

  2. Nel menu dell'app per la logica, in Impostazioni, selezionare Scalabilità orizzontale.

  3. Nel riquadro Scale out trascinare il dispositivo di scorrimento delle istanze minime sul valore desiderato.

  4. Al termine, salvare le modifiche.

Risoluzione dei problemi

Per ottenere altre informazioni sulle app per la logica distribuite, provare le opzioni seguenti:

Accedere alle impostazioni e alla configurazione dell'app

Per accedere alle impostazioni dell'app, eseguire il comando , az logicapp config appsettingscon i parametri seguenti:

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

Per configurare un'impostazione dell'app, eseguire il comando , az logicapp config appsettings setcon i parametri seguenti. Assicurarsi di usare il parametro con il nome e il --settings valore dell'impostazione.

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

Per eliminare un'impostazione dell'app, eseguire il comando , az logicapp config appsettings deletecon i parametri seguenti. Assicurarsi di usare il --setting-names parametro con il nome dell'impostazione da eliminare.

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

Visualizzare le proprietà dell'app per la logica

Per visualizzare le informazioni e le proprietà dell'app, eseguire il comando , az logicapp show, con i parametri seguenti:

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

Monitorare l'attività del flusso di lavoro

Per visualizzare l'attività per un flusso di lavoro nell'app per la logica, seguire questa procedura:

  1. Nella portale di Azure trovare e aprire l'app per la logica distribuita.

  2. Nel menu dell'app per la logica selezionare Flussi di lavoro e quindi selezionare il flusso di lavoro.

  3. Scegliere Monitoraggio dal menu del flusso di lavoro.

Raccogliere i log

Per ottenere i dati registrati sull'app per la logica, abilitare Application Insights nell'app per la logica, se non è già abilitato.

Passaggi successivi