Compartilhar via


Criar e implantar fluxos de trabalho de aplicativo lógico com base em locatário único com os Aplicativos Lógicos habilitados para Azure Arc (versão prévia)

Observação

Esse recurso está em versão prévia e está sujeito aos Termos de uso suplementares para versões prévias do Microsoft Azure.

Com Aplicativos Lógicos habilitados para Azure Arc, você pode criar e implantar fluxos de trabalho de aplicativos lógicos baseados em locatário único em uma infraestrutura Kubernetes que você opera e gerencia. As suas aplicações lógicas são executadas num local personalizado que é mapeado para um cluster Kubernetes habilitado pelo Azure Arc onde instalou e habilitou o pacote de extensões da plataforma Serviço de Aplicativo do Azure.

Por exemplo, esse cluster pode ser o Serviço de Kubernetes do Azure, Kubernetes bare-metal ou alguma outra configuração. O pacote de extensões permite que você execute serviços de plataforma, como os Aplicativos Lógicos do Azure, o Serviço de Aplicativo do Azure e o Azure Functions no seu cluster do Kubernetes.

Para mais informações, consulta a seguinte documentação:

Pré-requisitos

Esta seção descreve os pré-requisitos comuns a todas as abordagens e ferramentas que você pode usar para criar e implantar fluxos de trabalho de aplicativo lógico. Os pré-requisitos específicos de uma ferramenta aparecem juntamente com suas etapas correspondentes.

  • Uma conta do Azure com uma assinatura ativa. Se você não tiver uma assinatura do Azure, crie uma conta gratuita.

  • Um ambiente do Kubernetes com um cluster do Kubernetes habilitado para Azure Arc e um local personalizado onde você pode hospedar e executar os Aplicativos Lógicos do Azure, o Serviço de Aplicativo do Azure e o Azure Functions.

    Importante

    Verifique se você está usando a mesma localização de recurso para o seu ambiente do Kubernetes, a localização personalizada e o aplicativo lógico.

    Ao criar a extensão do pacote do Serviço de Aplicativo no cluster do Kubernetes, é possível alterar o comportamento de dimensionamento padrão para executar fluxos de trabalho do aplicativo lógico. Ao criar a extensão usando o comando CLI do Azure, az k8s-extension create , certifique-se de incluir a definição de configuração, keda.enabled=true:

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

    Para mais informações, consulte a seguinte documentação:

  • Sua própria identidade do Microsoft Entra

    Se os fluxos de trabalho precisarem usar conexões hospedadas no Azure, como o Office 365 Outlook ou o Armazenamento do Microsoft Azure, seu aplicativo lógico deverá usar uma identidade do Microsoft Entra para autenticação. Os Aplicativos Lógicos habilitados para Azure Arc podem ser executados em qualquer infraestrutura, mas requerem uma identidade que tenha permissões para usar conexões hospedadas no Azure. Para configurar essa identidade, crie um registro de aplicativo no Microsoft Entra ID que seu aplicativo lógico usa como a identidade necessária.

    Observação

    Atualmente, o suporte à identidade gerenciada está indisponível para os Aplicativos Lógicos habilitados para Azure Arc.

    Para criar um registro de aplicativo do Microsoft Entra usando a CLI do Azure, siga estas etapas:

    1. Crie um registro de aplicativo usando o comando az ad sp create.

    2. Para revisar todos os detalhes, execute o comando az ad sp show.

    3. Na saída de ambos os comandos, encontre e salve a ID do cliente, a ID do objeto, a ID do locatário e os valores de segredo do cliente, que você precisará guardar para uso posterior.

    Para criar um registro de aplicativo do Microsoft Entra usando o portal do Azure, siga estas etapas:

    1. Crie um registro de aplicativo do Microsoft Entra usando o portal do Azure.

    2. Após a criação, encontre o novo registro de aplicativo no portal.

    3. No menu de registro, selecione Visão Gerale salve a ID do cliente, a ID do locatário e os valores de segredo do cliente.

    4. Para encontrar a ID do objeto, ao lado do campo Aplicativo gerenciado no diretório local, selecione o nome do registro do aplicativo. Na exibição de propriedades, copie a ID do objeto.

Definir e implantar aplicativos lógicos

Com base se pretende utilizar o CLI do Azure ou o Visual Studio Code, selecione o separador correspondente para rever os pré-requisitos e passos específicos.

Antes de começar, você precisa ter os seguintes itens:

Verificar o ambiente e a versão da CLI

  1. Entre no portal do Azure. Verifique se sua assinatura está ativa executando o seguinte comando:

    az login
    
  2. Verifique sua versão da CLI do Azure em uma janela de terminal ou de comando usando o seguinte comando:

    az --version
    

    Para obter a última versão, confira as notas sobre a versão mais recente.

  3. Caso não tenha a última versão, atualize a instalação seguindo o guia de instalação para seu sistema operacional ou sua plataforma.

Instalar a extensão de Aplicativos Lógicos do Azure (Standard) para a CLI do Azure

Instale a versão prévia da extensão de Aplicativos Lógicos do Azure (Standard) de locatário único para a CLI do Azure executando o seguinte comando:

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

Criar grupo de recursos

Caso ainda não tenha um grupo de recursos para seu aplicativo lógico, crie o grupo executando o comando, az group create. A menos que você já tenha definido uma assinatura padrão para sua conta do Azure, use o parâmetro --subscription com o nome ou o identificador da sua assinatura. Caso contrário, você não precisa usar o parâmetro --subscription.

Dica

Para definir uma assinatura padrão, execute o comando a seguir e substitua MySubscription pelo seu nome de assinatura ou identificador.

az account set --subscription MySubscription

Por exemplo, o seguinte comando cria um grupo de recursos chamado MyResourceGroupName usando a assinatura do Azure denominada MySubscription na localização eastus:

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

A saída mostrará o provisioningState como Succeeded se o grupo de recursos tiver sido criado com êxito:

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

Criar aplicativo lógico

Para criar um aplicativo lógico habilitado para Azure Arc, execute o comando az logicapp create com os parâmetros obrigatórios a seguir. Os locais de recurso do seu aplicativo lógico, do local personalizado e do ambiente do Kubernetes devem ser todos iguais.

Parâmetros Descrição
--name -n Um nome exclusivo para o seu aplicativo lógico
--resource-group -g O nome do grupo de recursos em que você deseja criar o aplicativo lógico. Caso ainda não tenha um para usar, crie um grupo de recursos.
--storage-account -s A conta de armazenamento a ser usada com seu aplicativo lógico. Para contas de armazenamento no mesmo grupo de recursos, use um valor de cadeia de caracteres. Para contas de armazenamento em um grupo de recursos diferente, use uma ID de recurso.
az logicapp create --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --storage-account MyStorageAccount --custom-location MyCustomLocation

Para criar um aplicativo lógico habilitado para Azure Arc usando uma imagem privada do ACR (Registro de Contêiner do Azure), execute o comando az logicapp create com os seguintes parâmetros obrigatórios:

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

Exibir detalhes do aplicativo lógico

Para mostrar detalhes sobre seu aplicativo lógico habilitado para Azure Arc, execute o comando az logicapp show com os seguintes parâmetros obrigatórios:

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

Implantar o aplicativo lógico

Para implantar seu aplicativo lógico habilitado para Azure Arc usando a implantação zip do Kudu do Serviço de Aplicativo do Azure, execute o comando az logicapp deployment source config-zip com os seguintes parâmetros obrigatórios:

Importante

Verifique se o arquivo zip contém os artefatos do seu projeto no nível raiz. Esses artefatos incluem todas as pastas de fluxo de trabalho, arquivos de configuração como host.json, connections.json e todos os outros arquivos relacionados. Não adicione nenhuma pasta extra nem inclua artefatos em pastas que ainda não existem na estrutura do projeto. Esta lista mostra um exemplo de estrutura de arquivo 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

Iniciar aplicativo lógico

Para iniciar seu aplicativo lógico habilitado para Azure Arc, execute o comando az logicapp start com os seguintes parâmetros obrigatórios:

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

Parar aplicativo lógico

Para interromper o aplicativo lógico habilitado para Azure Arc, execute o comando az logicapp stop com os seguintes parâmetros obrigatórios:

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

Reiniciar aplicativo lógico

Para reiniciar o aplicativo lógico habilitado para Azure Arc, execute o comando az logicapp restart com os seguintes parâmetros obrigatórios:

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

Excluir aplicativo lógico

Para excluir o aplicativo lógico habilitado para Azure Arc, execute o comando az logicapp delete com os seguintes parâmetros obrigatórios:

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

Configurar autenticações de conexão

Atualmente, os clusters Kubernetes ativados pelo Azure Arc não suportam a utilização de uma identidade gerida por aplicações lógicas para autenticar ligações API geridas. Você cria essas conexões hospedadas e gerenciadas no Azure quando usa conectores gerenciados nos fluxos de trabalho.

Em vez disso, você precisa criar seu próprio registro de aplicativo no Microsoft Entra ID. Em seguida, você pode usar esse registro de aplicativo como uma identidade para aplicativos lógicos implantados e em execução nos Aplicativos Lógicos habilitados para Azure Arc. Para mais informações, consulte os pré-requisitos de nível superior.

No registro do aplicativo, você precisa da ID do cliente, da ID do objeto, da ID do locatário e do segredo do cliente. Se for usar o Visual Studio Code para implantação, você terá uma experiência interna para configurar o aplicativo lógico com uma identidade do Microsoft Entra. Para mais informações, consulte Criar e implantar fluxos de trabalho de um aplicativo lógico - Visual Studio Code .

No entanto, se você for usar o Visual Studio Code para desenvolvimento, mas usar o CLI do Azure ou pipelines automatizados na implantação, siga estas etapas.

Definir configurações de conexão e aplicativo em seu projeto

  1. No arquivo connections.json do seu projeto de aplicativo lógico, encontre o objeto authentication para a conexão gerenciada. Substitua o conteúdo desse objeto pelas informações de registro do aplicativo, que você gerou anteriormente nos pré-requisitos de nível superior:

    "authentication": {
       "type": "ActiveDirectoryOAuth",
       "audience": "https://management.core.windows.net/",
       "credentialType": "Secret",
       "clientId": "@appsetting('WORKFLOWAPP_AAD_CLIENTID')",
       "tenant": "@appsetting('WORKFLOWAPP_AAD_TENANTID')",
       "secret": "@appsetting('WORKFLOWAPP_AAD_CLIENTSECRET')"
    } 
    
  2. No arquivo local.settings.js do projeto do seu aplicativo lógico, adicione a ID do cliente, a ID do objeto, a ID do locatário e o segredo do cliente. Após a implantação, essas configurações se tornam suas configurações de aplicativo lógico.

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

Em cenários de produção, proteja e garanta a segurança desses segredos e informações confidenciais, por exemplo, usando um cofre de chaves.

Adicionar políticas de acesso

Nos Aplicativos Lógicos do Azure com base em locatário único, cada aplicativo lógico tem uma identidade que recebe permissões das políticas de acesso para usar conexões gerenciadas e hospedadas no Azure. Você pode configurar essas políticas de acesso usando o portal do Azure ou implantações de infraestrutura.

Modelo de ARM

No modelo do ARM (modelo do Azure Resource Manager), inclua a definição de recurso a seguir para cada conexão da API gerenciada e forneça as seguintes informações:

Parâmetro Descrição
<connection-name> O nome da conexão de API gerenciada, por exemplo office365
<object-ID> A ID de objeto da identidade do Microsoft Entra, salva anteriormente durante o registro do aplicativo
<tenant-ID> A ID de locatário da identidade do Microsoft Entra, salva anteriormente durante o registro do aplicativo
{
   "type": "Microsoft.Web/connections/accessPolicies",
   "apiVersion": "2016-06-01",
   "name": "[concat('<connection-name>'),'/','<object-ID>')]",
   "location": "<location>",
   "dependsOn": [
      "[resourceId('Microsoft.Web/connections', parameters('connection_name'))]"
   ],
   "properties": {
      "principal": {
         "type": "ActiveDirectory",
         "identity": {
            "objectId": "<object-ID>",
            "tenantId": "<tenant-ID>"
         }
      }
   }
}

Para mais informações, consulte a documentação Microsoft.Web/Connections/accesspolicies (modelo ARM).

Portal do Azure

Para essa tarefa, use a ID do cliente salva anteriormente como a ID do aplicativo.

  1. No portal do Azure, encontre e abra seu aplicativo lógico. No menu da sua aplicação lógica, em Fluxos de trabalho, selecione Conexões, que lista todas as ligações nos fluxos de trabalho do seu recurso de aplicação lógica.

  2. Em Conexões de API, selecione uma conexão, que neste exemplo é office365.

  3. No menu de conexão, em Configurações, selecione Políticas de acesso>Adicionar.

  4. No painel Adicionar política de acesso, na caixa de pesquisa, localize e selecione a ID do cliente salva anteriormente.

  5. Quando terminar, selecione Adicionar.

  6. Repita essas etapas para cada conexão hospedada no Azure em seu aplicativo lógico.

Automatizar a implantação do DevOps

Para criar e implantar aplicativos lógicos habilitados para Azure Arc, você pode usar os mesmos pipelines e processos dos aplicativos lógicos com base em locatário único. Para automatizar implantações de infraestrutura usando pipelines para DevOps, faça as seguintes alterações no nível da infraestrutura para implantações que não sejam de contêiner e de contêiner.

Implantação padrão (não contêiner)

Se você for usar a implantação de zip na implantação de aplicativo lógico, não será necessário configurar um registro do Docker para hospedar imagens de contêiner. Embora os aplicativos lógicos no Kubernetes tecnicamente sejam executados em contêineres, os Aplicativos Lógicos habilitados para Azure Arc gerenciam esses contêineres para você. Para esse cenário, conclua as seguintes tarefas ao configurar sua infraestrutura:

No modelo do ARM (modelo do Azure Resource Manager) inclua os seguintes valores:

Item Propriedade JSON Descrição
Location location Verifique se está usando o mesmo local de recurso (região do Azure) que o seu local personalizado e o ambiente do Kubernetes. Os locais de recurso do seu aplicativo lógico, do local personalizado e do ambiente do Kubernetes devem ser todos iguais.

Observação: Esse valor não é igual ao nome do seu local personalizado.

Tipo de aplicativo kind O tipo de aplicativo que você está implantando, para que a plataforma do Azure possa identificar seu aplicativo. No caso dos Aplicativos Lógicos do Azure, essas informações se parecem com o exemplo a seguir: kubernetes,functionapp,workflowapp,linux
Local estendido extendedLocation Esse objeto requer o "name" do seu local personalizado para o ambiente do Kubernetes e precisa ter o "type" definido como "CustomLocation".
ID do recurso do plano de hospedagem serverFarmId O ID do recurso do Plano do Serviço de Aplicativo associado, formatado como segue:

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

Cadeia de conexão de armazenamento AzureWebJobsStorage A cadeia de conexão para a sua conta de armazenamento

Importante: você precisa fornecer a cadeia de conexão para a sua conta de armazenamento do modelo do ARM. Em cenários de produção, proteja e garanta a segurança desses segredos e informações confidenciais, por exemplo, usando um cofre de chaves.

Modelo de ARM

O exemplo a seguir descreve uma amostra de um recurso dos Aplicativos Lógicos habilitados para Azure Arc que você pode usar em seu modelo do ARM. Para mais informações, consulte a documentação de formato de modelo (JSON) do Microsoft.Web/sites.

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

Observação

Por padrão, a configuração do aplicativo FUNCTIONS_WORKER_RUNTIME para seu aplicativo lógico é dotnet. Anteriormente, node era o valor padrão. No entanto, dotnet é agora o valor padrão para todos os aplicativos lógicos habilitados para Arc novos e existentes implantados, mesmo para aplicativos que tinham um valor diferente. Essa alteração não deve afetar o runtime do fluxo de trabalho e tudo deve funcionar da mesma maneira que antes. Para obter mais informações, consulte a configuração do aplicativo FUNCTIONS_WORKER_RUNTIME .

A configuração de aplicativo APP_KIND para o seu aplicativo lógico é definida como workflowApp, mas em alguns cenários essa configuração de aplicativo está ausente, por exemplo, devido a modelos do Azure Resource Manager ou outros cenários em que a configuração pode não estar incluída. Se determinadas ações, como a ação Executar Código JavaScript, não funcionarem ou o fluxo de trabalho parar de funcionar, verifique se a configuração de aplicativo APP_KIND existe e está definida como workflowapp. Para obter mais informações, confira a configuração de aplicativo APP_KIND.

Implantação de contêiner

Se preferir usar ferramentas de contêiner e processos de implantação, poderá colocar os aplicativos lógicos em contêineres e implantá-los nos Aplicativos Lógicos habilitados para Azure Arc. Para esse cenário, conclua as seguintes tarefas de nível superior ao configurar sua infraestrutura:

  • Configure um registro do Docker para hospedar suas imagens de contêiner.

  • Para colocar seu aplicativo lógico em contêineres, adicione o Dockerfile a seguir à pasta raiz do projeto de aplicativo lógico e siga as etapas para criar e publicar uma imagem no registro do Docker. Por exemplo, revise o Tutorial: Criar e implantar imagens de contêiner na nuvem com Tarefas do Registro de Contêiner do Azure.

    Observação

    Se você usa o SQL como seu provedor de armazenamento, use uma imagem do Azure Functions versão 3.3.1 ou posterior.

    FROM mcr.microsoft.com/azure-functions/node:3.3.1
    ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
    AzureFunctionsJobHost__Logging__Console__IsEnabled=true \
    FUNCTIONS_V2_COMPATIBILITY_MODE=true
    COPY . /home/site/wwwroot
    RUN cd /home/site/wwwroot
    
  • Notifique o fornecedor de recursos de que está a criar uma aplicação lógica em Kubernetes.

  • No modelo de implantação, aponte para a imagem de contêiner e registro do Docker onde você planeja implantar. Os Aplicativos Lógicos do Azure com base em locatário único usam essas informações para obter a imagem de contêiner do registro do Docker.

  • Inclua um Plano do Serviço de Aplicativo na sua implantação. Para mais informações, consulte Incluir Plano do Serviço de Aplicativo com implantação.

No modelo do ARM (modelo do Azure Resource Manager) inclua os seguintes valores:

Item Propriedade JSON Descrição
Location location Verifique se está usando o mesmo local de recurso (região do Azure) que o seu local personalizado e o ambiente do Kubernetes. Os locais de recurso do seu aplicativo lógico, do local personalizado e do ambiente do Kubernetes devem ser todos iguais.

Observação: Esse valor não é igual ao nome do seu local personalizado.

Tipo de aplicativo kind O tipo de aplicativo que você está implantando, para que a plataforma do Azure possa identificar seu aplicativo. No caso dos Aplicativos Lógicos do Azure, essas informações se parecem com o exemplo a seguir: kubernetes,functionapp,workflowapp,container
Local estendido extendedLocation Esse objeto requer o "name" do seu local personalizado para o ambiente do Kubernetes e precisa ter o "type" definido como "CustomLocation".
Nome do contêiner linuxFxVersion O nome do seu contêiner, formatado da seguinte maneira: DOCKER\|<container-name>
ID do recurso do plano de hospedagem serverFarmId O ID do recurso do Plano do Serviço de Aplicativo associado, formatado como segue:

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

Cadeia de conexão de armazenamento AzureWebJobsStorage A cadeia de conexão para a sua conta de armazenamento

Importante: ao implantar em um contêiner do Docker, você precisa fornecer a cadeia de conexão para sua conta de armazenamento no modelo do ARM. Em cenários ou ambientes de produção, proteja e garanta a segurança desses segredos e informações confidenciais, por exemplo, usando um cofre de chaves.

Para referenciar o Registro do Docker e a imagem de contêiner, inclua estes valores em seu modelo:

Item Propriedade JSON Descrição
URL do servidor de registro do Docker DOCKER_REGISTRY_SERVER_URL A URL do servidor de registro do Docker
Servidor de registro do Docker DOCKER_REGISTRY_SERVER_USERNAME O nome de usuário para acessar o servidor de registro do Docker
Senha do servidor de registro do Docker DOCKER_REGISTRY_SERVER_PASSWORD A senha para acessar o servidor de registro do Docker

Modelo de ARM

O exemplo a seguir descreve uma amostra de um recurso dos Aplicativos Lógicos habilitados para Azure Arc que você pode usar em seu modelo do ARM. Para mais informações, consulte a documentação de formato de modelo (modelo do ARM) do Microsoft.Web/sites.

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

Observação

Anteriormente, o valor padrão da configuração FUNCTIONS_WORKER_RUNTIME era node. Agora, dotnet é o valor padrão para todos os aplicativos lógicos Standard novos e existentes implantados, mesmo para aplicativos que tinham um valor diferente. Essa alteração não deve afetar o runtime do fluxo de trabalho e tudo deve funcionar da mesma maneira que antes. Para obter mais informações, consulte a configuração do aplicativo FUNCTIONS_WORKER_RUNTIME.

Incluir Plano do Serviço de Aplicativo na implantação

Tanto no caso de uma implantação, quanto para uma implantação de contêiner, será preciso incluir um plano do Serviço de Aplicativo com a implantação. Embora esse plano se torne menos relevante em um ambiente do Kubernetes, as implantações padrão e de contêiner ainda exigem um plano do Serviço de Aplicativo.

Enquanto outras opções de criação geralmente lidam com o provisionamento do recurso do Azure para esse plano, se as suas implantações usarem modelos do tipo "infraestrutura como código", você precisará criar explicitamente o recurso do Azure para o plano. O recurso de plano de hospedagem não muda, apenas as informações do sku.

No modelo do ARM (modelo do Azure Resource Manager) inclua os seguintes valores:

Item Propriedade JSON Descrição
Location location Verifique se está usando o mesmo local de recurso (região do Azure) que o seu local personalizado e o ambiente do Kubernetes. Os locais de recurso do seu aplicativo lógico, do local personalizado e do ambiente do Kubernetes devem ser todos iguais.

Observação: Esse valor não é igual ao nome do seu local personalizado.

Tipo kind O tipo de plano do serviço de aplicativo que está sendo implantado que precisa ser kubernetes,linux
Local estendido extendedLocation Esse objeto requer o "name" do seu local personalizado para o ambiente do Kubernetes e precisa ter o "type" definido como "CustomLocation".
Nome do plano de hospedagem name O nome do plano do Serviço de Aplicativo
Camada de plano sku: tier A camada do plano do serviço de aplicativo, que é K1
Nome do plano sku: name O nome do plano do serviço de aplicativo, que é Kubernetes

Modelo de ARM

O exemplo a seguir descreve uma amostra da definição de recurso do plano do serviço de aplicativo que você pode usar com a implantação do aplicativo. Para mais informações, consulte a documentação de formato de modelo (modelo do ARM) do Microsoft.Web/sites.

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

Alterar o comportamento de dimensionamento padrão

Os Aplicativos Lógicos habilitados para Azure Arc gerenciam automaticamente o escala de seus aplicativos lógicos com base no número de trabalhos na fila de armazenamento de back-end. No entanto, você pode alterar o comportamento de dimensionamento padrão.

Em um aplicativo lógico, a definição de fluxo de trabalho especifica a sequência de ações a serem executadas. Sempre que uma execução de fluxo de trabalho é disparada, o tempo de execução dos aplicativos lógicos do Azure cria um trabalho para cada tipo de ação na definição do fluxo. Em seguida, o runtime organiza esses trabalhos em um sequenciador de trabalho. Esse sequenciador orquestra a execução dos trabalhos para a definição de fluxo de trabalho, mas o mecanismo de orquestração de trabalhos subjacentes dos Aplicativos Lógicos do Azure executa cada trabalho.

Para fluxos de trabalho com estado, o mecanismo de orquestração de trabalhos usa mensagens de fila de armazenamento para agendar trabalhos nos sequenciadores de trabalho. Nos bastidores, os dispatchers de trabalho (ou as instâncias de trabalho do Dispatcher) monitoram essas filas de trabalho. O mecanismo de orquestração usa um número mínimo e máximo padrão de instâncias de trabalho para monitorar as filas de trabalho. Para fluxos de trabalho sem estado, o mecanismo de orquestração mantém os estados de ação completamente na memória.

Para alterar o comportamento de dimensionamento padrão, você deve especificar números mínimos e máximos diferentes das instâncias de trabalho que monitoram as filas de trabalho.

Pré-requisitos para alterar o dimensionamento

Em seu cluster do Kubernetes habilitado para Azure Arc, a extensão do pacote do Serviço de Aplicativo criada anteriormente precisa ter a propriedade keda.enabled definida como true. Para mais informações, consulte os pré-requisitos de nível superior.

Alterar o limite de dimensionamento

Nos Aplicativos Lógicos habilitados para Azure Arc, o comprimento da fila de trabalho dispara um evento de escala e define um limite para a frequência do dimensionamento do aplicativo lógico. Você pode alterar o comprimento da fila, que tem o valor padrão definido como 20 trabalhos. Para dimensionar com menor frequência, aumente o comprimento da fila. Para dimensionar com maior frequência, diminua o comprimento da fila. Esse processo pode exigir o uso de tentativa e erro.

Para alterar o comprimento da fila, no arquivo de nível raiz host.jsondo projeto do aplicativo lógico, configure a propriedade Runtime.ScaleMonitor.KEDA.TargetQueueLength, por exemplo:

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

Alterar o valor máximo da taxa de transferência

Em um recurso de aplicativo lógico preexistente, você pode alterar o número máximo de instâncias de trabalho, que tem o valor padrão definido como 2. Esse valor controla o limite máximo de instâncias de trabalho que podem monitorar as filas de trabalho.

Para alterar esse máximo, use o CLI do Azure (somente para criação de aplicativos lógicos) e o portal do Azure.

CLI do Azure

Para criar um aplicativo lógico, execute o comando, az logicapp create, com os seguintes parâmetros:

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

Para configurar a contagem máxima de instâncias, use o parâmetro --settings:

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

Portal do Azure

Nas configurações do aplicativo lógico baseado em locatário único, adicione ou edite o valor de configuração K8SE_APP_MAX_INSTANCE_COUNT seguindo essas etapas:

  1. No portal do Azure, encontre e abra o seu aplicativo lógico com base em locatário único.

  2. No menu do aplicativo lógico, acesse Configurações e selecione Configuração.

  3. No painel Configuração, em Configurações do aplicativo, adicione uma nova configuração de aplicativo ou edite o valor existente, se já tiver sido adicionado.

    1. Selecione Nova configuração de aplicativo e adicione a configuraçãoK8SE_APP_MAX_INSTANCE_COUNT com o valor máximo que desejar.

    2. Edite o valor existente da configuração K8SE_APP_MAX_INSTANCE_COUNT.

  4. Quando terminar, salve suas alterações.

Alterar o valor mínimo da taxa de transferência

Em um recurso de aplicativo lógico preexistente, você pode alterar o número mínimo de instâncias de trabalho, que tem o valor padrão definido como 1. Esse valor controla o limite mínimo de instâncias de trabalho que podem monitorar as filas de trabalho. Para garantir alta disponibilidade ou desempenho, aumente esse valor.

Para alterar o mínimo, use o CLI do Azure ou o portal do Azure.

CLI do Azure

Para um recurso de aplicação lógica existente, execute o comando, az logicapp scale, com os seguintes parâmetros:

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

Para criar um aplicativo lógico, execute o comando, az logicapp create, com os seguintes parâmetros:

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

Portal do Azure

Nas configurações do aplicativo lógico baseado em locatário único, altere o valor da propriedade Escalabilidade seguindo essas etapas:

  1. No portal do Azure, encontre e abra o aplicativo lógico com base em locatário único.

  2. No menu do aplicativo lógico, em Configurações, selecione Escalar horizontalmente.

  3. No painel Escalar horizontalmente, arraste o controle deslizante de mínimo de instâncias para o valor desejado.

  4. Quando terminar, salve suas alterações.

Solução de problemas

Para obter mais informações sobre os aplicativos lógicos implantados, experimente as seguintes opções:

Acessar definições e configuração de aplicativos

Para acessar as configurações do aplicativo, execute o comando, az logicapp config appsettings, com os seguintes parâmetros:

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

Para definir uma configuração de aplicativo, execute o comando, az logicapp config appsettings set, com os parâmetros a seguir. Certifique-se de usar o parâmetro --settings com o nome e o valor da sua configuração.

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

Para excluir uma configuração de aplicativo, execute o comando, az logicapp config appsettings delete, com os parâmetros a seguir. Use o parâmetro --setting-names com o nome da configuração que você deseja excluir.

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

Exibir as propriedades do aplicativo lógico

Para visualizar as informações e propriedades do seu aplicativo, execute o comando az logicapp show, com os seguintes parâmetros:

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

Monitorar atividade de fluxo de trabalho

Para exibir a atividade de um fluxo de trabalho em seu aplicativo lógico, siga estas etapas:

  1. No portal do Azure, localize o aplicativo lógico implantado e abra-o.

  2. No menu do aplicativo lógico, selecione fluxos de trabalho e escolha o fluxo de trabalho.

  3. No menu de fluxo de trabalho, selecione Monitorar.

Coletar logs

Para obter dados registrados sobre o aplicativo lógico, habilite o Application Insights no aplicativo lógico, caso ele ainda não esteja habilitado.

Próximas etapas