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à è in anteprima ed è soggetta alle Condizioni supplementari per l'utilizzo per le anteprime di Microsoft Azure.
Con App per la logica abilitato per Azure Arc, è possibile creare e distribuire flussi di lavoro di app per la logica basati su tenant singolo in un'infrastruttura Kubernetes 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 di Azure.
Ad esempio, questo cluster può essere il servizio Azure Kubernetes, Kubernetes bare metal o un'altra configurazione. Il bundle di estensioni consente di eseguire servizi della piattaforma, ad esempio App per la logica di Azure, Servizio app di Azure e Funzioni di Azure nel cluster Kubernetes.
Per altre informazioni, vedere la documentazione seguente:
- Che cos'è App per la logica con abilitazione di Azure Arc?
- Confronto tenant singolo e multi-tenant in App per la logica di Azure
- Panoramica di Azure Arc
- Panoramica del servizio Azure Kubernetes
- Che cos'è Kubernetes con abilitazione di Azure Arc?
- Percorsi personalizzati in Kubernetes con abilitazione di Azure Arc
- Servizio app, Funzioni e App per la logica in Azure Arc (anteprima)
- Configurare un cluster Kubernetes abilitato Azure Arc per l'esecuzione del servizio app, delle funzioni e delle app per la logica (anteprima)
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 di 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 del 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 configurazionekeda.enabled=true
:az k8s-extension create {other-command-options} --configuration-settings "keda.enabled=true"
Per altre informazioni, vedere la documentazione seguente:
- Servizio app, Funzioni e App per la logica in Azure Arc (anteprima)
- Estensioni del cluster in Kubernetes con abilitazione di Azure Arc
- Configurare un cluster Kubernetes abilitato Azure Arc per l'esecuzione del servizio app, delle funzioni e delle app per la logica (anteprima)
- Modificare il comportamento di ridimensionamento predefinito
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 eseguito 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 in Microsoft Entra ID 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:
Creare una registrazione dell'app usando il comando
az ad sp create
.Per esaminare tutti i dettagli, eseguire il comando
az ad sp show
.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:
Creare una nuova registrazione dell'app Microsoft Entra usando il portale di Azure.
Al termine della creazione, trovare la nuova registrazione dell'app nel portale.
Nel menu di registrazione selezionare Panoramica e salvare i valori di ID client, ID tenant e segreto client.
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 o Visual Studio Code, 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'anteprima dell'estensione App per la logica di Azure (Standard) per l'interfaccia della riga di comando di Azure.
Anche se 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 dove 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
Accedere al portale di Azure. Verificare che la sottoscrizione sia attiva eseguendo il comando seguente:
az login
Controllare la versione dell'interfaccia della riga di comando di Azure in una finestra terminale o di comando eseguendo il comando seguente:
az --version
Per la versione più recente, vedere le ultime note sulla versione.
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 l'estensione App per la logica di Azure (Standard) per l'interfaccia della riga di comando di Azure
Installare l'anteprima dell'estensione App per la logica di Azure a tenant singolo (Standard) 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 dispone già di un gruppo di risorse per l'app per la logica, crearlo con 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 --subscription
con il nome o l'identificatore della sottoscrizione. In caso contrario, non è necessario usare il parametro --subscription
.
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 è stato creato correttamente, l'output mostra provisioningState
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 se ne possiede uno, creare un gruppo di risorse. |
--storage-account -s |
L'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 del Registro Azure Container privata, eseguire il comando az logicapp create
con 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 mostrare dettagli sull'app per la logica abilitata per Azure Arc, eseguire il comando az logicapp show
con i parametri obbligatori seguenti:
az logicapp show --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
Distribuire l'app per la logica
Per distribuire l'app per la logica abilitata per Azure Arc usando la distribuzione zip Kudu del servizio app di Azure, eseguire il comando az logicapp deployment source config-zip
, con 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 campione del file 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
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 stop
con 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 di un'identità gestita dell'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 generali.
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 dell'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
Nel file connections.json del progetto dell'app per la logica individuare l'oggetto
authentication
per la connessione gestita. Sostituire il contenuto dell'oggetto con le informazioni di registrazione dell'app generate in precedenza nei prerequisiti generali:"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')" }
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 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 il portale di Azure o le distribuzioni 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 di Resource Manager).
Azure portal
Per questa attività, usare l'ID client salvato in precedenza come ID applicazione.
Nel portale di Azure trovare e aprire l'app per la logica. Nel menu dell'app per la logica, in Flussi di lavoro selezionare Connessioni, che elenca tutte le connessioni nei flussi di lavoro per la risorsa dell'app per la logica.
In Connessioni API selezionare una connessione,
office365
in questo esempio.Nel menu della connessione, in Impostazioni selezionare Criteri di accesso>Aggiungi.
Nel riquadro Aggiungi criteri di accesso trovare e selezionare l'ID client salvato in precedenza nella casella di ricerca.
Al termine, selezionare Aggiungi.
Ripetere questi passaggi per ogni connessione ospitata in Azure nell'app per la logica.
Automatizzare la distribuzione di DevOps
Per compilare e distribuire app per la logica abilitate per Azure Arc, è possibile usare le stesse pipeline e i processi di 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 abilitato per Azure Arc gestisce automaticamente questi contenitori. Per questo scenario, completare le attività seguenti quando si configura l'infrastruttura:
- Notificare al provider di risorse che si sta creando un'app per la logica in Kubernetes.
- Includere un piano di servizio app con la distribuzione. Per altre informazioni, vedere Includere il piano di servizio app con la distribuzione.
Nel modello di Azure Resource Manager includere i valori seguenti:
Articolo | Proprietà JSON | Descrizione |
---|---|---|
Ubicazione | location |
Assicurarsi di usare la stessa posizione 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 per la 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 il valore "name" del percorso personalizzato per l'ambiente Kubernetes e deve avere il valore "type" impostato su "CustomLocation" . |
ID risorsa del piano di hosting | serverFarmId |
ID risorsa del piano di servizio app associato, formattato come segue:
|
Stringa di connessione di archiviazione | AzureWebJobsStorage |
Stringa di connessione per l'account di archiviazione Importante: è necessario specificare la stringa di connessione per l'account di archiviazione nel modello di Resource Manager. Per scenari o ambienti di produzione, assicurarsi di 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 del 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": "dotnet"
},
{
"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"
}
}
}
Nota
Per impostazione predefinita, l'impostazione dell'app per la logica FUNCTIONS_WORKER_RUNTIME è dotnet
.
In precedenza, node
era il valore predefinito. Tuttavia, dotnet
è ora il valore predefinito per tutte le app per la logica con abilitazione di Arc nuove ed esistenti, anche per le app con un valore diverso. Questa modifica non dovrebbe influire sul runtime del flusso di lavoro e tutto dovrebbe funzionare allo stesso modo di prima. Per altre informazioni, vedere l'impostazione dell'app FUNCTIONS_WORKER_RUNTIME.
L'impostazione dell'app per la logica APP_KIND è impostata su workflowapp, ma in alcuni scenari questa impostazione dell'app è mancante, ad esempio a causa del fatto che l'automazione usa i modelli di Azure Resource Manager o altri scenari in cui l'impostazione potrebbe non essere inclusa. Se determinate azioni non funzionano, come l'azione Eseguire codice JavaScript o il flusso di lavoro smette di funzionare, controllare che l'impostazione dell'app APP_KIND esista e sia impostata su workflowapp. Per maggiori informazioni, vedere l'impostazione dell'app APP_KIND.
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 abilitato 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 la procedura per compilare e pubblicare un'immagine nel registro Docker, ad esempio vedere Esercitazione: Compilare e distribuire immagini del contenitore nel cloud con Attività del Registro Azure Container.
Nota
Se si usa SQL come provider di archiviazione, assicurarsi di usare un'immagine di 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 effettuare la distribuzione. 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 il piano di servizio app con la distribuzione.
Nel modello di Azure Resource Manager includere i valori seguenti:
Articolo | Proprietà JSON | Descrizione |
---|---|---|
Ubicazione | location |
Assicurarsi di usare la stessa posizione 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 per la 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 il valore "name" del percorso personalizzato per l'ambiente Kubernetes e deve avere il valore "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:
|
Stringa di connessione di archiviazione | AzureWebJobsStorage |
Stringa di connessione per l'account di archiviazione Importante: quando si implementa in un contenitore Docker, è necessario specificare la stringa di connessione per l'account di archiviazione nel modello di Resource Manager. Per scenari o ambienti di produzione, assicurarsi di 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 Docker | DOCKER_REGISTRY_SERVER_URL |
URL del server del registro Docker |
Server del registro Docker | DOCKER_REGISTRY_SERVER_USERNAME |
Nome utente per accedere al server del registro Docker |
Password del server del registro Docker | DOCKER_REGISTRY_SERVER_PASSWORD |
Password per accedere al server del registro 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 del 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": "dotnet"
},
{
"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>"
}
}
}
Nota
In precedenza, il valore predefinito dell'impostazione FUNCTIONS_WORKER_RUNTIME era node
.
A questo punto, dotnet
è il valore predefinito per tutte le app per la logica Standard nuove ed esistenti, anche per le app con un valore diverso. Questa modifica non dovrebbe influire sul runtime del flusso di lavoro e tutto dovrebbe funzionare allo stesso modo di prima. Per altre informazioni, vedere l'impostazione dell'app FUNCTIONS_WORKER_RUNTIME.
Includere il piano di servizio app con la distribuzione
Sia che si abbia una distribuzione standard o un 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 informazioni sku
.
Nel modello di Azure Resource Manager includere i valori seguenti:
Articolo | Proprietà JSON | Descrizione |
---|---|---|
Ubicazione | location |
Assicurarsi di usare la stessa posizione 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 per la posizione personalizzata. |
Tipologia | kind |
Tipo di piano di servizio app da distribuire, che deve essere kubernetes,linux |
Posizione estesa | extendedLocation |
Questo oggetto richiede il valore "name" del percorso personalizzato per l'ambiente Kubernetes e deve avere il valore "type" impostato su "CustomLocation" . |
Nome piano di hosting | name |
Nome del piano di servizio app |
Livello di piano | sku: tier |
Livello del piano di servizio app, K1 |
Nome piano | sku: name |
Nome del piano di servizio app, Kubernetes |
Modello ARM
L'esempio seguente descrive una definizione di risorsa del piano di servizio app di esempio che è possibile usare con la distribuzione dell'app. Per altre informazioni, vedere la documentazione del formato di modello Microsoft.Web/serverfarms (modello di Resource Manager).
{
"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 abilitato 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 di 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 processi. Questo sequencer orchestra l'esecuzione dei processi per la definizione del flusso di lavoro, ma il motore di orchestrazione dei processi di App per la logica di Azure sottostante 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 processi (o 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 in memoria gli stati di azione.
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 del servizio app creata in precedenza deve avere la proprietà keda.enabled
impostata su true
. Per altre informazioni, vedere i prerequisiti generali.
Modificare la soglia di ridimensionamento
In App per la logica abilitato 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 su 20
processi. Per ridimensionare meno frequentemente, aumentare la lunghezza della coda. Per ridimensionare più frequentemente, ridurre la lunghezza della coda. Questo processo potrebbe richiedere alcuni tentativi ed errori.
Per modificare la lunghezza della coda, nel file host.json di livello radice del progetto dell'app per la logica impostare la proprietà Runtime.ScaleMonitor.KEDA.TargetQueueLength
, ad esempio:
"extensions": {
"workflow": {
"settings": {
"Runtime.ScaleMonitor.KEDA.TargetQueueLength": "10"
}
}
}
Modificare la velocità effettiva massima
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 il portale di Azure.
Interfaccia della riga di comando di Azure
Per creare una nuova app per la logica, eseguire il comando az logicapp create
, con 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 parametro --settings
:
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:
Nel portale di Azure trovare e aprire l'app per la logica basata su tenant singolo.
Nel menu dell'app per la logica, in Impostazioni, selezionare Configurazione.
Nel riquadro Configurazione, in Impostazioni applicazione aggiungere una nuova impostazione dell'applicazione o modificare il valore esistente, se già aggiunto.
Selezionare Nuova impostazione applicazione e aggiungere l'impostazione
K8SE_APP_MAX_INSTANCE_COUNT
con il valore massimo desiderato.Modificare il valore esistente per l'impostazione
K8SE_APP_MAX_INSTANCE_COUNT
.
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 minimo 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 scale
con 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 create
, con 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:
Nel portale di Azure trovare e aprire l'app per la logica basata su tenant singolo.
Nel menu dell'app per la logica, in Impostazioni, selezionare Scale Out.
Nel riquadro Scale Out trascinare il dispositivo di scorrimento delle istanze minime sul valore desiderato.
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 appsettings
con 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 set
con i parametri seguenti. Assicurarsi di usare il parametro --settings
con il nome e il 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 delete
con i parametri seguenti. Assicurarsi di usare il parametro --setting-names
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:
Nel portale di Azure trovare e aprire l'app per la logica distribuita.
Nel menu dell'app per la logica selezionare Flussi di lavoro e quindi selezionare il flusso di lavoro.
Nel menu del flusso di lavoro selezionare Monitoraggio.
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.