Erstellen und Bereitstellen von Logik-App-Workflows auf Basis eines einzelnen Mandanten mit Logic Apps mit Azure Arc-Unterstützung (Vorschau)

Hinweis

Diese Funktion befindet sich in der Vorschauphase und unterliegt den Zusätzlichen Nutzungsbedingungen für Microsoft Azure-Vorschauversionen.

Mit Logic Apps mit Azure Arc-Unterstützung können Sie Logic App-Workflows auf Basis eines einzelnen Mandanten in einer Kubernetes-Infrastruktur erstellen und bereitstellen, die Sie betreiben und verwalten. Ihre Logik-Apps werden an einem benutzerdefinierten Speicherort ausgeführt, der einem Kubernetes-Cluster mit Azure Arc-Unterstützung zugeordnet ist, in dem Sie das Azure App Service-Plattformerweiterungspaket installiert und aktiviert haben.

Dieser Cluster kann z. B. Azure Kubernetes Service, Bare-Metal-Kubernetes oder eine andere Einrichtung sein. Mit dem Erweiterungspaket können Sie Plattformdienste wie Azure Logic Apps, Azure App Service und Azure Functions in Ihrem Kubernetes-Cluster ausführen.

Weitere Informationen finden Sie in der folgenden Dokumentation:

Voraussetzungen

In diesem Abschnitt werden die allgemeinen Voraussetzungen für alle Ansätze und Tools beschrieben, mit denen Sie Ihre Logik-App-Workflows erstellen und bereitstellen können. Toolspezifische Voraussetzungen werden zusammen mit den entsprechenden Schritten angezeigt.

  • Ein Azure-Konto mit einem aktiven Abonnement. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen.

  • Eine Kubernetes-Umgebung mit einem Kubernetes-Cluster mit Azure Arc-Unterstützung und einem benutzerdefinierten Standort, an dem Sie Azure Logic Apps, Azure App Service und Azure Functions hosten und ausführen können.

    Wichtig

    Stellen Sie sicher, dass Sie für Ihre Kubernetes-Umgebung, Ihren benutzerdefinierten Speicherort und Ihre Logik-App denselben Ressourcenspeicherort verwenden.

    Wenn Sie die App Service-Bundleerweiterung in Ihrem Kubernetes-Cluster erstellen, können Sie außerdem das Standardskalierungsverhalten ändern, das für die Ausführung Ihrer Logik-App-Workflows gilt. Wenn Sie die Erweiterung mithilfe des Azure CLI-Befehls az k8s-extension create erstellen, stellen Sie sicher, dass Sie die Konfigurationseinstellung keda.enabled=true einschließen:

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

    Weitere Informationen finden Sie in der folgenden Dokumentation:

  • Ihre eigene Microsoft Entra-Identität

    Wenn Ihre Workflows von Azure gehostete Verbindungen wie Office 365 Outlook oder Azure Storage verwenden müssen, muss Ihre Logik-App eine Microsoft Entra-Identität für die Authentifizierung verwenden. Logic Apps mit Azure Arc-Unterstützung können in jeder Infrastruktur ausgeführt werden, erfordern jedoch eine Identität, die über die Berechtigung verfügt, von Azure gehostete Verbindungen zu verwenden. Um diese Identität einzurichten, erstellen Sie eine App-Registrierung in Microsoft Entra ID, die Ihre Logik-App als erforderliche Identität verwendet.

    Hinweis

    Die Unterstützung verwalteter Identitäten ist für Logic Apps mit Azure Arc-Unterstützung derzeit nicht verfügbar.

    Führen Sie die folgenden Schritte aus, um eine Microsoft Entra-App-Registrierung mithilfe der Azure CLI zu erstellen:

    1. Erstellen Sie mit dem az ad sp create-Befehl eine App-Registrierung.

    2. Führen Sie den az ad sp show-Befehl aus, um alle Details zu überprüfen.

    3. Suchen und speichern Sie in der Ausgabe beider Befehle die Werte für Client-ID, Objekt-ID, Mandanten-ID und geheimer Clientschlüssel, die Sie zur späteren Verwendung beibehalten müssen.

    Führen Sie die folgenden Schritte aus, um eine Microsoft Entra-App-Registrierung mithilfe des Azure-Portals zu erstellen:

    1. Erstellen Sie mithilfe des Azure-Portals eine neue Microsoft Entra-App-Registrierung.

    2. Suchen Sie nach Abschluss der Erstellung die neue App-Registrierung im Portal.

    3. Wählen Sie im Registrierungsmenü Übersicht aus, und speichern Sie die Werte für Client-ID, Mandanten-ID und geheimer Clientschlüssel.

    4. Um die Objekt-ID zu ermitteln, wählen Sie neben dem Feld Verwaltete Anwendung im lokalen Verzeichnis den Namen für Ihre App-Registrierung aus. Kopieren Sie in der Eigenschaftenansicht die Objekt-ID.

Erstellen und Bereitstellen von Logik-Apps

Wählen Sie abhängig davon, ob Sie die Azure CLI oder Visual Studio Code verwenden möchten, die entsprechende Registerkarte aus, um die spezifischen Voraussetzungen und Schritte zu überprüfen.

Bevor Sie beginnen, benötigen Sie Folgendes:

Überprüfen der Umgebung und CLI-Version

  1. Melden Sie sich beim Azure-Portal an. Überprüfen Sie, ob Ihr Abonnement aktiv ist, indem Sie den folgenden Befehl ausführen:

    az login
    
  2. Überprüfen Sie Ihre Version der Azure-Befehlszeilenschnittstelle in einem Terminal oder Befehlsfenster, indem Sie den folgenden Befehl ausführen:

    az --version
    

    Die neueste Version finden Sie unter Versionshinweise für die Azure CLI.

  3. Sollten Sie nicht über die neueste Version verfügen, aktualisieren Sie Ihre Installation wie unter Installieren der Azure CLI beschrieben.

Installieren der Azure Logic Apps-Erweiterung (Standard) für die Azure CLI

Installieren Sie die Vorschau der Einzelmandantenerweiterung für Azure Logic Apps (Standard) für die Azure CLI, indem Sie den folgenden Befehl ausführen:

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

Ressourcengruppe erstellen

Sollten Sie noch nicht über eine Ressourcengruppe für Ihre Logik-App verfügen, erstellen Sie die Gruppe mithilfe des Befehls az group create. Wenn Sie nicht bereits ein Standardabonnement für Ihr Azure-Konto festgelegt haben, stellen Sie sicher, dass Sie den Parameter --subscription mit Ihrem Abonnementnamen oder -bezeichner verwenden. Andernfalls müssen Sie den Parameter --subscription nicht verwenden.

Tipp

Führen Sie zum Festlegen eines Standardabonnements den folgenden Befehl aus, und ersetzen Sie MySubscription durch Ihren Abonnementnamen oder -bezeichner.

az account set --subscription MySubscription

Der folgende Befehl erstellt beispielsweise eine Ressourcengruppe mit dem Namen MyResourceGroupName unter Verwendung des Azure-Abonnements mit dem Namen MySubscription am Speicherort eastus:

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

Wenn Ihre Ressourcengruppe erfolgreich erstellt wurde, wird provisioningState als Succeeded angezeigt:

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

Erstellen einer Logik-App

Führen Sie zum Erstellen einer Logik-App mit Azure Arc-Unterstützung den Befehl az logicapp create mit den folgenden erforderlichen Parametern aus. Die Ressourcenstandorte für Ihre Logik-App, den benutzerdefinierten Standort und die Kubernetes-Umgebung müssen identisch sein.

Parameter Beschreibung
--name -n Ein eindeutiger Name für Ihre Logik-App.
--resource-group -g Der Name der Ressourcengruppe, in der Sie Ihre Logik-App erstellen möchten. Erstellen Sie eine Ressourcengruppe, falls noch keine vorhanden ist.
--storage-account -s Das Speicherkonto, das mit Ihrer Logik-App verwendet werden soll. Für Speicherkonten in derselben Ressourcengruppe verwenden Sie einen Zeichenfolgenwert. Für Speicherkonten in einer anderen Ressourcengruppe verwenden Sie eine Ressourcen-ID.
az logicapp create --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --storage-account MyStorageAccount --custom-location MyCustomLocation

Um eine Logik-App mit Azure Arc-Unterstützung über ein privates ACR-Image (Azure Container Registry) zu erstellen, führen Sie den Befehl az logicapp create mit den folgenden erforderlichen Parametern aus:

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

Anzeigen von Logik-App-Details

Um Details zu Ihrer Logik-App mit Azure Arc-Unterstützung anzuzeigen, führen Sie den Befehl az logicapp show mit den folgenden erforderlichen Parametern aus:

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

Bereitstellen einer Logik-App

Um Ihre Logik-App mit Azure Arc-Unterstützung über die Kudu-ZIP-Bereitstellung von Azure App Service bereitzustellen, führen Sie den Befehl az logicapp deployment source config-zip mit den folgenden erforderlichen Parametern aus:

Wichtig

Stellen Sie sicher, dass Ihre ZIP-Datei die Artefakte Ihres Projekts auf Stammebene enthält. Zu diesen Artefakten zählen alle Workflowordner, Konfigurationsdateien wie „host.json“ und „connections.json“ sowie alle anderen zugehörigen Dateien. Fügen Sie keine zusätzlichen Ordner hinzu, und platzieren Sie keine Artefakte in Ordnern, die noch nicht in Ihrer Projektstruktur vorhanden sind. Diese Liste zeigt ein Beispiel für die MyBuildArtifacts.zip-Dateistruktur:

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

Starten einer Logik-App

Führen Sie zum Starten Ihrer Logik-App mit Azure Arc-Unterstützung den Befehl az logicapp start mit den folgenden erforderlichen Parametern aus:

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

Beenden einer Logik-App

Führen Sie zum Beenden Ihrer Logik-App mit Azure Arc-Unterstützung den Befehl az logicapp stop mit den folgenden erforderlichen Parametern aus:

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

Neustarten einer Logik-App

Führen Sie zum erneuten Starten Ihrer Logik-App mit Azure Arc-Unterstützung den Befehl az logicapp restart mit den folgenden erforderlichen Parametern aus:

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

Löschen der Logik-App

Führen Sie zum Löschen Ihrer Logik-App mit Azure Arc-Unterstützung den Befehl az logicapp delete mit den folgenden erforderlichen Parametern aus:

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

Einrichten der Verbindungsauthentifizierung

Derzeit unterstützen Kubernetes-Cluster mit Azure Arc-Unterstützung nicht die Verwendung der verwalteten Identität einer Logik-App zur Authentifizierung von verwalteten API-Verbindungen. Sie erstellen diese in Azure gehosteten und verwalteten Verbindungen, wenn Sie verwaltete Connectors in Ihren Workflows verwenden.

Stattdessen müssen Sie ihre eigene App-Registrierung in Microsoft Entra ID erstellen. Sie können diese App-Registrierung dann als Identität für Logik-Apps verwenden, die in Logic Apps mit Azure Arc-Unterstützung bereitgestellt und ausgeführt werden. Weitere Informationen finden Sie in den allgemeinen Voraussetzungen.

Bei ihrer App-Registrierung benötigen Sie die Client-ID, die Objekt-ID, die Mandanten-ID und den geheimen Clientschlüssel. Wenn Sie Visual Studio Code für die Bereitstellung verwenden, verfügen Sie über eine integrierte Benutzeroberfläche zum Einrichten Ihrer Logik-App mit einer Microsoft Entra-Identität. Weitere Informationen finden Sie unter Erstellen und Bereitstellen von Logik-App-Workflows – Visual Studio Code.

Wenn Sie jedoch Visual Studio Code für die Entwicklung verwenden, aber die Azure-Befehlszeilenschnittstelle oder automatisierte Pipelines für die Bereitstellung verwenden, führen Sie diese Schritte aus.

Konfigurieren von Verbindungs- und App-Einstellungen in Ihrem Projekt

  1. Suchen Sie in der Datei connections.json Ihres Logik-App-Projekts das authentication-Objekt für die verwaltete Verbindung. Ersetzen Sie den Inhalt dieses Objekts durch Ihre App-Registrierungsinformationen, die Sie zuvor in den allgemeinen Voraussetzungen generiert haben:

    "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. Fügen Sie in der Datei local.settings.json Ihres Logik-App-Projekts Ihre Client-ID, Objekt-ID, Mandanten-ID und den geheimen Clientschlüssel hinzu. Nach der Bereitstellung werden diese Einstellungen zu Ihren Logik-App-Einstellungen.

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

Wichtig

Achten Sie bei Produktionsszenarien oder -umgebungen darauf, dass Sie solche Geheimnisse und sensiblen Informationen schützen und sichern, z. B. durch die Verwendung eines Schlüsseltresors.

Hinzufügen von Zugriffsrichtlinien

In Azure Logic Apps mit einzelnem Mandanten verfügt jede Logik-App über eine Identität, der durch Zugriffsrichtlinien die Berechtigung erteilt wird, in Azure gehostete und verwaltete Verbindungen zu verwenden. Sie können diese Zugriffsrichtlinien mithilfe des Azure-Portals oder von Infrastrukturbereitstellungen einrichten.

ARM-Vorlage

Fügen Sie in Ihrer ARM-Vorlage (Azure Resource Manager) die folgende Ressourcendefinition für jede verwaltete API-Verbindung ein, und stellen Sie die folgenden Informationen bereit:

Parameter BESCHREIBUNG
<connection-name> Der Name Ihrer verwalteten API-Verbindung, z. B. office365.
<object-ID> Die Objekt-ID für Ihre Microsoft Entra-Identität, die zuvor bei der Registrierung Ihrer App gespeichert wurde.
<Mandanten-ID> Die Mandanten-ID für Ihre Microsoft Entra-Identität, die zuvor bei der Registrierung Ihrer App gespeichert wurde
{
   "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>"
         }
      }
   }
}

Weitere Informationen finden Sie in der Dokumentation zu Microsoft.Web/connections/accesspolicies (ARM-Vorlage).

Azure-Portal

Verwenden Sie für diese Aufgabe Ihre zuvor gespeicherte Client-ID als Anwendungs-ID.

  1. Suchen Sie im Azure-Portal nach Ihrer Logik-App, und öffnen Sie sie. Wählen Sie im Menü Ihrer Logik-App unter Workflows die Option Verbindungen aus, die alle Verbindungen in den Workflows für Ihre Logik-App-Ressource auflistet.

  2. Wählen Sie unter API-Verbindungen eine Verbindung aus (in diesem Beispiel office365).

  3. Wählen Sie im Menü der Verbindung unter Einstellungen die Option Zugriffsrichtlinien>Hinzufügen aus.

  4. Suchen Sie im Bereich Zugriffsrichtlinie hinzufügen im Suchfeld nach Ihrer zuvor gespeicherten Client-ID, und wählen Sie sie aus.

  5. Wenn Sie fertig sind, wählen Sie Hinzufügen aus.

  6. Wiederholen Sie diese Schritte für jede in Azure gehostete Verbindung in Ihrer Logik-App.

Automatisieren der DevOps-Bereitstellung

Zum Erstellen und Bereitstellen Ihrer Logik-Apps mit Azure Arc-Unterstützung können Sie dieselben Pipelines und Prozesse wie für Logik-Apps verwenden, die auf einem einzelnen Mandanten basieren. Um Infrastrukturbereitstellungen mithilfe von Pipelines für DevOps zu automatisieren, nehmen Sie die folgenden Änderungen auf der Infrastrukturebene sowohl für Nicht-Container- als auch für Containerbereitstellungen vor.

Standardbereitstellung (Nicht-Container)

Wenn Sie „zip deploy“ für die Bereitstellung von Logik-Apps verwenden, müssen Sie keine Docker-Registrierung für das Hosting von Containerimages einrichten. Obwohl Logik-Apps in Kubernetes technisch gesehen in Containern ausgeführt werden, verwaltet Logic Apps mit Azure Arc-Unterstützung diese Container für Sie. Führen Sie für dieses Szenario die folgenden Aufgaben durch, wenn Sie Ihre Infrastruktur einrichten:

Fügen Sie in Ihre ARM-Vorlage (Azure Resource Manager) die folgenden Werte ein:

Element JSON-Eigenschaft BESCHREIBUNG
Standort location Stellen Sie sicher, dass Sie denselben Ressourcenstandort (Azure-Region) wie für Ihren benutzerdefinierten Standort und Ihre Kubernetes-Umgebung verwenden. Die Ressourcenstandorte für Ihre Logik-App, den benutzerdefinierten Standort und die Kubernetes-Umgebung müssen identisch sein.

Hinweis: Dieser Wert ist nicht identisch mit dem Namen Ihres benutzerdefinierten Standorts.

App-Art kind Der Typ der App, die Sie bereitstellen, damit die Azure-Plattform Ihre App identifizieren kann. Für Azure Logic Apps sehen diese Informationen wie im folgenden Beispiel aus: kubernetes,functionapp,workflowapp,linux
Erweiterter Standort extendedLocation Für dieses Objekt muss das Element "name" Ihres benutzerdefinierten Standorts für Ihre Kubernetes-Umgebung vorhanden sein, und "type" muss auf "CustomLocation" festgelegt sein.
Ressourcen-ID des Hostingplans serverFarmId Die Ressourcen-ID des zugeordneten App Service-Plans, die wie folgt formatiert ist:

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

Speicherverbindungszeichenfolge AzureWebJobsStorage Die Verbindungszeichenfolge für Ihr Speicherkonto.

Wichtig: Sie müssen die Verbindungszeichenfolge für Ihr Speicherkonto in Ihrer ARM-Vorlage angeben. Achten Sie bei Produktionsszenarien oder -umgebungen darauf, dass Sie solche Geheimnisse und sensiblen Informationen schützen und sichern, z. B. durch die Verwendung eines Schlüsseltresors.

ARM-Vorlage

Das folgende Beispiel beschreibt eine beispielhafte Logic Apps-Ressourcendefinition mit Azure Arc-Unterstützung, die Sie in Ihrer ARM-Vorlage verwenden können. Weitere Informationen finden Sie in der Dokumentation zu Microsoft.Web/sites – Vorlagenformat (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"
      }
   }
}

Hinweis

Standardmäßig ist die FUNCTIONS_WORKER_RUNTIME-App-Einstellung für Ihre Logik-App dotnet. Bisher war der Standardwert node. Der Standardwert für alle neuen und vorhandenen bereitgestellten Arc-fähigen Logik-Apps ist jetzt jedoch dotnet, auch für Apps, die einen anderen Wert hatten. Diese Änderung sollte sich nicht auf die Runtime Ihres Workflows auswirken, und alles sollte wie zuvor funktionieren. Weitere Informationen finden Sie unter der FUNCTIONS_WORKER_RUNTIME-App-Einstellung.

Die App-Einstellung APP_KIND für Ihre Logik-App ist auf workflowapp festgelegt. In einigen Szenarien fehlt diese App-Einstellung jedoch, z. B. aufgrund von Azure Resource Manager-Vorlagen oder anderen Szenarien, in denen die Einstellung möglicherweise nicht enthalten ist. Wenn bestimmte Aktionen nicht funktionieren, z. B. die Aktion JavaScript-Code ausführen, oder der Workflow nicht mehr funktioniert, überprüfen Sie, ob die App-Einstellung APP_KIND vorhanden und auf workflowapp festgelegt ist. Weitere Informationen finden Sie unter APP_KIND-App-Einstellung.

Containerbereitstellung

Wenn Sie es vorziehen, Containertools und Bereitstellungsprozesse zu verwenden, können Sie Ihre Logik-Apps containerisieren und in Logic Apps mit Azure Arc-Unterstützung bereitstellen. Führen Sie für dieses Szenario die folgenden allgemeinen Aufgaben durch, wenn Sie Ihre Infrastruktur einrichten:

  • Richten Sie eine Docker-Registrierung zum Hosten Ihrer Containerimages ein.

  • Fügen Sie zum Containerisieren Ihrer Logik-App dem Stammordner Ihres Logik-App-Projekts die folgende Dockerfile-Datei hinzu, und führen Sie die Schritte zum Erstellen und Veröffentlichen eines Images in Ihrer Docker-Registrierung aus. Beispiel: Tutorial: Erstellen und Bereitstellen von Containerimages in der Cloud mit Azure Container Registry Tasks.

    Hinweis

    Wenn Sie SQL als Speicheranbieter verwenden, vergewissern Sie sich, dass Sie ein Azure Functions-Image, Version 3.3.1 oder höher, verwenden.

    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
    
  • Benachrichtigen Sie den Ressourcenanbieter, dass Sie eine Logik-App in Kubernetes erstellen.

  • Zeigen Sie in Ihrer Bereitstellungsvorlage auf die Docker-Registrierung und das Containerimage, in denen Sie die Bereitstellung planen. Azure Logic Apps mit einzelnem Mandanten verwendet diese Informationen, um das Containerimage von Ihrer Docker-Registrierung abzurufen.

  • Schließen Sie einen App Service-Plan in Ihre Bereitstellung ein. Weitere Informationen hierzu finden Sie unter Einschließen eines App Service-Plans in die Bereitstellung.

Fügen Sie in Ihre ARM-Vorlage (Azure Resource Manager) die folgenden Werte ein:

Element JSON-Eigenschaft BESCHREIBUNG
Standort location Stellen Sie sicher, dass Sie denselben Ressourcenstandort (Azure-Region) wie für Ihren benutzerdefinierten Standort und Ihre Kubernetes-Umgebung verwenden. Die Ressourcenstandorte für Ihre Logik-App, den benutzerdefinierten Standort und die Kubernetes-Umgebung müssen identisch sein.

Hinweis: Dieser Wert ist nicht identisch mit dem Namen Ihres benutzerdefinierten Standorts.

App-Art kind Der Typ der App, die Sie bereitstellen, damit die Azure-Plattform Ihre App identifizieren kann. Für Azure Logic Apps sehen diese Informationen wie im folgenden Beispiel aus: kubernetes,functionapp,workflowapp,container
Erweiterter Standort extendedLocation Für dieses Objekt muss das Element "name" Ihres benutzerdefinierten Standorts für Ihre Kubernetes-Umgebung vorhanden sein, und "type" muss auf "CustomLocation" festgelegt sein.
Containername linuxFxVersion Der Name Ihres Containers, der wie folgt formatiert ist: DOCKER\|<container-name>
Ressourcen-ID des Hostingplans serverFarmId Die Ressourcen-ID des zugeordneten App Service-Plans, die wie folgt formatiert ist:

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

Speicherverbindungszeichenfolge AzureWebJobsStorage Die Verbindungszeichenfolge für Ihr Speicherkonto.

Wichtig: Wenn Sie einen Docker-Container bereitstellen, müssen Sie die Verbindungszeichenfolge für Ihr Speicherkonto in Ihrer ARM-Vorlage angeben. Achten Sie bei Produktionsszenarien oder -umgebungen darauf, dass Sie solche Geheimnisse und sensiblen Informationen schützen und sichern, z. B. durch die Verwendung eines Schlüsseltresors.

Fügen Sie diese Werte in Ihre Vorlage ein, um auf Ihre Docker-Registrierung und das Containerimage zu verweisen:

Element JSON-Eigenschaft BESCHREIBUNG
Server-URL der Docker-Registrierung DOCKER_REGISTRY_SERVER_URL Die URL für den Docker-Registrierungsserver.
Docker-Registrierungsserver DOCKER_REGISTRY_SERVER_USERNAME Der Benutzername für den Zugriff auf den Docker-Registrierungsserver.
Kennwort des Docker-Registrierungsservers DOCKER_REGISTRY_SERVER_PASSWORD Das Kennwort für den Zugriff auf den Docker-Registrierungsserver.

ARM-Vorlage

Das folgende Beispiel beschreibt eine beispielhafte Logic Apps-Ressourcendefinition mit Azure Arc-Unterstützung, die Sie in Ihrer ARM-Vorlage verwenden können. Weitere Informationen finden Sie in der Dokumentation zu Microsoft.Web/sites – Vorlagenformat (ARM-Vorlage).

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

Hinweis

Zuvor war der Standardwert derFUNCTIONS_WORKER_RUNTIME Einstellung node. Jetzt ist der Standardwert für alle neuen und vorhandenen bereitgestellten Standard-Logik-Apps dotnet, auch für Apps, die einen anderen Wert hatten. Diese Änderung sollte sich nicht auf die Runtime Ihres Workflows auswirken, und alles sollte wie zuvor funktionieren. Weitere Informationen finden Sie unter der FUNCTIONS_WORKER_RUNTIME-App-Einstellung.

Einschließen eines App Service-Plans in die Bereitstellung

Unabhängig davon, ob Sie über eine Standard- oder Containerbereitstellung verfügen, müssen Sie einen App Service-Plan in Ihre Bereitstellung einschließen. Obwohl dieser Plan für eine Kubernetes-Umgebung weniger relevant wird, erfordern sowohl die Standard- als auch die Containerbereitstellung weiterhin einen App Service-Plan.

Während andere Erstellungsoptionen in der Regel die Bereitstellung der Azure-Ressource für diesen Plan behandeln, müssen Sie die Azure-Ressource für den Plan explizit erstellen, wenn Ihre Bereitstellungen „Infrastructure-as-Code“-Vorlagen verwenden. Die Hostingplanressource ändert sich nicht, sondern nur die sku-Informationen.

Fügen Sie in Ihre ARM-Vorlage (Azure Resource Manager) die folgenden Werte ein:

Element JSON-Eigenschaft BESCHREIBUNG
Standort location Stellen Sie sicher, dass Sie denselben Ressourcenstandort (Azure-Region) wie für Ihren benutzerdefinierten Standort und Ihre Kubernetes-Umgebung verwenden. Die Ressourcenstandorte für Ihre Logik-App, den benutzerdefinierten Standort und die Kubernetes-Umgebung müssen identisch sein.

Hinweis: Dieser Wert ist nicht identisch mit dem Namen Ihres benutzerdefinierten Standorts.

Typ kind Die Art des bereitzustellenden App Service-Plans. Dies muss kubernetes,linux sein.
Erweiterter Standort extendedLocation Für dieses Objekt muss das Element "name" Ihres benutzerdefinierten Standorts für Ihre Kubernetes-Umgebung vorhanden sein, und "type" muss auf "CustomLocation" festgelegt sein.
Name des Hostingplans name Der Name für den App Service-Plan.
Planebene sku: tier Die App Service-Planebene, die K1 lautet.
Planname sku: name Der Name des App Service-Plans, der Kubernetes lautet.

ARM-Vorlage

Im folgenden Beispiel wird eine Beispielressourcendefinition für den App Service-Plan beschrieben, die Sie mithilfe Ihrer App-Bereitstellung verwenden können. Weitere Informationen finden Sie in der Dokumentation zu Microsoft.Web/serverfarms – Vorlagenformat (ARM-Vorlage).

{
   "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')]"
      }
   }
}

Ändern des Standardskalierungsverhaltens

Logic Apps mit Azure Arc-Unterstützung verwaltet automatisch die Skalierung für Ihre Logik-Apps basierend auf der Anzahl der Aufträge in der Back-End-Speicherwarteschlange. Sie können jedoch das Standardskalierungsverhalten ändern.

In einer Logik-App gibt die Workflowdefinition die Reihenfolge der auszuführenden Aktionen an. Bei jeder Auslösung einer Workflowausführung erstellt die Azure Logic Apps-Runtime einen Auftrag für jeden Aktionstyp in der Workflowdefinition. Die Runtime organisiert diese Aufträge dann in einem Auftragssequenzierer. Dieser Sequenzierer orchestriert die Ausführung der Aufträge für die Workflowdefinition, aber die zugrunde liegende Azure Logic Apps-Engine für die Auftragsorchestrierung führt jeden Auftrag aus.

Bei zustandsbehafteten Workflows verwendet die Engine für die Auftragsorchestrierung entsprechende Speicherwarteschlangennachrichten, um Aufträge in den Auftragssequenzierern zu planen. Im Hintergrund überwachen Auftragsdispatcher (oder Dispatcher-Workerinstanzen) diese Auftragswarteschlangen. Die Orchestrierungsengine verwendet eine standardmäßige minimale und maximale Anzahl von Workerinstanzen, um die Auftragswarteschlangen zu überwachen. Bei zustandslosen Workflows behält die Orchestrierungsengine Aktionszustände vollständig im Arbeitsspeicher bei.

Um das Standardskalierungsverhalten zu ändern, geben Sie eine andere minimale und maximale Anzahl von Workerinstanzen an, die die Auftragswarteschlangen überwachen.

Voraussetzungen zum Ändern der Skalierung

Auf Ihrem Kubernetes-Cluster mit Azure Arc-Unterstützung muss für die zuvor erstellte App Service-Paketerweiterung die Eigenschaft keda.enabled auf true festgelegt sein. Weitere Informationen finden Sie in den allgemeinen Voraussetzungen.

Ändern des Skalierungsschwellenwerts

In Logic Apps mit Azure Arc-Unterstützung löst die Länge der Auftragswarteschlange ein Skalierungsereignis aus und legt einen Schwellenwert dafür fest, wie oft die Skalierung für Ihre Logik-App erfolgt. Sie können die Warteschlangenlänge ändern, bei der der Standardwert auf 20 Aufträge festgelegt ist. Erhöhen Sie die Warteschlangenlänge, um die Häufigkeit der Skalierung zu verringern. Verringern Sie die Warteschlangenlänge, um die Häufigkeit der Skalierung zu erhöhen. Für diesen Prozess sind möglicherweise einige Tests erforderlich.

Um die Länge der Warteschlange zu ändern, legen Sie in der Datei host.json auf der Stammebene Ihres Logik-App-Projekts die Runtime.ScaleMonitor.KEDA.TargetQueueLength-Eigenschaft fest. Beispiel:

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

Ändern des maximalen Durchsatzes

Für eine vorhandene Logik-App-Ressource können Sie die maximale Anzahl von Workerinstanzen ändern, für die der Standardwert auf 2 festgelegt ist. Dieser Wert steuert die Obergrenze für die Anzahl von Workerinstanzen, die die Auftragswarteschlangen überwachen können.

Um dieses Maximum zu ändern, verwenden Sie die Azure CLI (nur Erstellen der Logik-App) und das Azure-Portal.

Azure CLI

Um eine neue Logik-App zu erstellen, führen Sie den Befehl az logicapp create mit den folgenden Parametern aus:

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]

Verwenden Sie den Parameter --settings, um die maximale Anzahl von Instanzen zu konfigurieren:

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

Azure-Portal

Fügen Sie in den Einstellungen Ihrer auf einem einzelnen Mandanten basierenden Logik-App den Einstellungswert K8SE_APP_MAX_INSTANCE_COUNT hinzu, oder bearbeiten Sie diesen, indem Sie die folgenden Schritte ausführen:

  1. Suchen Sie im Azure-Portal Ihre auf einem einzelnen Mandanten basierende Logik-App, und öffnen Sie diese.

  2. Wählen Sie im Menü der Logik-App unter Einstellungen die Option Konfiguration aus.

  3. Fügen Sie im Bereich Konfiguration unter Anwendungseinstellungen entweder eine neue Anwendungseinstellung hinzu, oder bearbeiten Sie den vorhandenen Wert, sofern er bereits hinzugefügt wurde.

    1. Wählen Sie Neue Anwendungseinstellung aus, und fügen Sie die K8SE_APP_MAX_INSTANCE_COUNT-Einstellung mit dem gewünschten maximalen Wert hinzu.

    2. Bearbeiten Sie den vorhandenen Wert für die K8SE_APP_MAX_INSTANCE_COUNT-Einstellung.

  4. Speichern Sie Ihre Änderungen, wenn Sie fertig sind.

Ändern des minimalen Durchsatzes

Für eine vorhandene Logik-App-Ressource können Sie die minimale Anzahl von Workerinstanzen ändern, für die der Standardwert auf 1 festgelegt ist. Dieser Wert steuert die Untergrenze für die Anzahl von Workerinstanzen, die die Auftragswarteschlangen überwachen können. Erhöhen Sie diesen Wert für die Hochverfügbarkeit oder Leistung.

Verwenden Sie die Azure CLI oder das Azure-Portal, um diesen minimalen Wert zu ändern.

Azure CLI

Für eine vorhandene Logik-App-Ressource führen Sie den Befehl az logicapp scale mit den folgenden Parametern aus:

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

Um eine neue Logik-App zu erstellen, führen Sie den Befehl az logicapp create mit den folgenden Parametern aus:

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

Ändern Sie in den Einstellungen Ihrer auf einem einzelnen Mandanten basierenden Logik-App den Eigenschaftswert Aufskalieren, indem Sie die folgenden Schritte ausführen:

  1. Suchen Sie im Azure-Portal Ihre auf einem einzelnen Mandanten basierende Logik-App, und öffnen Sie diese.

  2. Wählen Sie im Menü der Logik-App unter Einstellungen die Option Aufskalieren aus.

  3. Ziehen Sie im Bereich Aufskalieren den Schieberegler für die Mindestanzahl der Instanzen auf den gewünschten Wert.

  4. Speichern Sie Ihre Änderungen, wenn Sie fertig sind.

Behandeln von Problemen

Versuchen Sie die folgenden Optionen, um weitere Informationen über Ihre bereitgestellten Logik-Apps zu erhalten:

Zugreifen auf App-Einstellungen und die Konfiguration

Um auf Ihre App-Einstellungen zuzugreifen, führen Sie den Befehl az logicapp config appsettings mit den folgenden Parametern aus:

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

Um eine App-Einstellung zu konfigurieren, führen Sie den Befehl az logicapp config appsettings set mit den folgenden Parametern aus. Stellen Sie sicher, dass Sie den Parameter --settings mit dem Namen und Wert Ihrer Einstellung verwenden.

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

Um eine App-Einstellung zu löschen, führen Sie den Befehl az logicapp config appsettings delete mit den folgenden Parametern aus. Stellen Sie sicher, dass Sie den Parameter --setting-names mit dem Namen der Einstellung verwenden, die Sie löschen möchten.

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

Anzeigen von Logik-App-Eigenschaften

Um die Informationen und Eigenschaften Ihrer App anzuzeigen, führen Sie den Befehl az logicapp show mit den folgenden Parametern aus:

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

Überwachen der Workflowaktivität

Führen Sie die folgenden Schritte aus, um die Aktivität für einen Workflow in Ihrer Logik-App anzeigen zu können:

  1. Suchen Sie im Azure-Portal nach Ihrer bereitgestellten Logik-App, und öffnen Sie sie.

  2. Wählen Sie im Menü der Logik-App die Option Workflows und dann Ihren Workflow aus.

  3. Wählen Sie im Menü „Workflow“ die Option Überwachen aus.

Erfassen von Protokollen

Wenn Sie protokollierte Daten zu Ihrer Logik-App abrufen möchten, aktivieren Sie Application Insights in Ihrer Logik-App, sofern noch nicht geschehen.

Nächste Schritte