Compartilhar via


Configurar a implantação do DevOps para fluxos de trabalho de aplicativos lógicos Standard nos Aplicativos Lógicos do Azure com locatário único

Aplica-se a: Aplicativos Lógicos do Azure (Standard)

Este painel mostra principalmente como configurar a implantação para um projeto de aplicativo lógico Standard no Visual Studio Code para sua infraestrutura usando ferramentas e processos do DevOps. Se o seu aplicativo lógico Standard existir no portal do Azure, você poderá baixar os arquivos de artefato do seu aplicativo lógico para usar com a implantação do DevOps. Com base em se você deseja usar o GitHub ou o Azure DevOps, escolha o caminho e as ferramentas que funcionam melhor para o seu cenário de implantação.

Se você não tiver um aplicativo lógico Standard, ainda poderá seguir esse guia usando os projetos de aplicativo lógico Standard de amostra vinculados mais exemplos para implantação no Azure por meio do GitHub ou do Azure DevOps. Para obter mais informações, revise Visão geral da implantação do DevOps para Aplicativos Lógicos do Azure de locatário único.

Pré-requisitos

Implantar recursos de infraestrutura

Para experimentar a experiência de implantação do DevOps sem configuração prévia de aplicativo lógico Standard ou infraestrutura, use os seguintes projetos de amostra para que você possa configurar a implantação para um exemplo de aplicativo lógico Standard e infraestrutura, com base em se você deseja usar o GitHub ou o Azure DevOps:

Ambas as amostras incluem os seguintes recursos que um aplicativo lógico Standard usa para executar:

Nome do recurso Necessária Descrição
Aplicativo lógico Padrão Sim Esse recurso do Azure contém os fluxos de trabalho executados nos Aplicativos Lógicos do Azure de locatário único.

Importante: No seu projeto de aplicativo lógico, cada fluxo de trabalho tem um arquivo workflow.json que contém a definição do fluxo de trabalho, que inclui as definições de gatilho e ação.
Conexões de API Sim, se existirem conexões de API Esses recursos do Azure definem quaisquer conexões de API gerenciadas que seus fluxos de trabalho usam para executar operações de conector gerenciado, como Office 365, SharePoint e assim por diante.

Importante: em seu projeto de aplicativo lógico, o arquivo connections.jsno contém metadados, pontos de extremidade e chaves para quaisquer conexões de API gerenciadas e funções do Azure que seus fluxos de trabalho usam. Para usar diferentes conexões e funções em cada ambiente, certifique-se de parametrizar esse arquivo connections.json e atualizar os pontos de extremidade.

Para obter mais informações, consulte Recursos de conexão de API e políticas de acesso.
Plano de hospedagem do Functions Premium ou do Serviço de Aplicativo Sim Esse recurso do Azure especifica os recursos de hospedagem a serem usados para executar seu aplicativo lógico, como computação, processamento, armazenamento, rede e assim por diante.

Importante: na experiência atual, o recurso de Aplicativo Lógico Standard requer o plano de hospedagem Fluxo de Trabalho Standard, que se baseia no plano de hospedagem Premium do Azure Functions.
Conta de armazenamento do Azure Sim, para fluxos de trabalho com e sem estado Este recurso do Azure armazena os metadados, as chaves para controle de acesso, o estado, as entradas, as saídas, o histórico de execução e outras informações sobre os fluxos de trabalho.
Application Insights Opcional Esse recurso do Azure fornece recursos de monitoramento para seus fluxos de trabalho.
Modelo do ARM (Azure Resource Manager) Opcional Esse recurso do Azure define uma implantação de infraestrutura da linha de base que você pode reutilizar ou exportar.

Recursos de conexão de API e políticas de acesso

Nos Aplicativos Lógicos do Azure de locatário único, cada recurso de conexão de API gerenciado no seu fluxo de trabalho requer uma política de acesso associada. Essa política precisa da identidade do aplicativo lógico para fornecer as permissões corretas para acessar a infraestrutura do conector gerenciado. Os exemplos de projetos incluídos incluem um modelo do ARM que inclui todos os recursos de infraestrutura necessários, incluindo essas políticas de acesso.

Por exemplo, o diagrama a seguir mostra as dependências entre um projeto de aplicativo lógico Standard e recursos de infraestrutura:

O diagrama conceitual mostra as dependências de infraestrutura para o projeto de aplicativo lógico Standard no modelo de Aplicativos Lógicos do Azure de locatário único.

Baixar artefatos do aplicativo lógico Standard do portal

Se o seu aplicativo lógico Standard estiver no portal do Azure, você poderá baixar um arquivo zip que contém os arquivos de artefato do seu aplicativo lógico, incluindo workflow.json, connections.json, host.json e local.settings.json.

  1. No portal do Azure, localize e abra o recurso de aplicativo lógico Standard.

  2. No menu do aplicativo lógico, selecione Visão geral.

  3. Na barra de ferramentas Visão geral, selecione Download do conteúdo do aplicativo. Na caixa de confirmação que aparece, selecione Download.

  4. Quando a solicitação aparecer, selecione Salvar como, procure a pasta local que você deseja e selecione Salvar para salvar o arquivo zip.

  5. Extraia os arquivos compactados.

  6. No Visual Studio Code, abra a pasta que contém os arquivos descompactados.

    Quando você abrir a pasta, o Visual Studio Code criará automaticamente um espaço de trabalho.

  7. Edite o conteúdo da pasta para incluir apenas as pastas e arquivos necessários para implantação usando o DevOps.

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

Criar e implantar aplicativo lógico (implantar zip)

Você pode configurar pipelines de build e liberação dentro ou fora do Azure que implantam aplicativos lógicos Standard em sua infraestrutura.

Compilar o projeto

  1. Transmita seu projeto de aplicativo lógico Standard e arquivos de artefato para seu repositório de origem, por exemplo, GitHub ou Azure DevOps.

  2. Configurar um pipeline de build com base no tipo de projeto de aplicativo lógico concluindo as seguintes ações correspondentes:

    Tipo de projeto Descrição e etapas
    Baseado em NuGet A estrutura de projeto baseada em NuGet é baseada na .NET Framework. Para criar esses projetos, siga as etapas de compilação para .NET Standard. Para obter mais informações, consulte a documentação para Criar um pacote NuGet usando o MSBuild.
    Baseado em pacote O projeto baseado em pacote de extensão não é específico a um idioma, e não requer nenhuma etapa de build específica a um idioma.
  3. Compacte seus arquivos de projeto usando qualquer método que você desejar.

    Importante

    Certifique-se de que seu arquivo zip contenha os artefatos de build reais do seu projeto no nível raiz, incluindo todas as pastas de fluxo de trabalho, arquivos de configuração como host.json, connections.json, local.settings.json e quaisquer outros arquivos relacionados. Não adicione nenhuma pasta extra nem inclua artefatos em pastas que ainda não existem na estrutura do projeto.

    Por exemplo, a lista a seguir mostra um exemplo de estrutura de arquivo MyBuildArtifacts.zip:

    MyStatefulWorkflow1-Folder
    MyStatefulWorkflow2-Folder
    connections.json
    host.json
    local.settings.json
    

Antes de liberar para o Azure

As conexões de API gerenciadas dentro do arquivo Connections. JSON do seu projeto de aplicativo lógico são criadas especificamente para uso local em Visual Studio Code. Antes de poder liberar seu projeto de artiffacts do Visual Studio Code para o Azure, você precisa atualizar esses artefatos. Para usar as conexões de API gerenciadas no Azure, você precisa atualizar seus métodos de autenticação para que eles estejam no formato correto para uso no Azure.

Atualizar tipo de Autenticação

Para cada conexão de API gerenciada que usa autenticação, você deve atualizar o authentication objeto do formato local no Visual Studio Code para o formato do portal do Azure, conforme mostrado pelos primeiros e segundos exemplos de código, respectivamente:

Formato do Visual Studio Code

{
   "managedApiConnections": {
      "sql": {
         "api": {
            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Web/locations/westus/managedApis/sql"
         },
         "connection": {
            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ase/providers/Microsoft.Web/connections/sql-2"
         },
         "connectionRuntimeUrl": "https://xxxxxxxxxxxxxx.01.common.logic-westus.azure-apihub.net/apim/sql/xxxxxxxxxxxxxxxxxxxxxxxxx/",
         "authentication": {
            "type": "Raw",
            "scheme": "Key",
            "parameter": "@appsetting('sql-connectionKey')"
         }
      }
   }
}

Formato do portal do Azure

{
   "managedApiConnections": {
      "sql": {
         "api": {
            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Web/locations/westus/managedApis/sql"
         },
         "connection": {
            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ase/providers/Microsoft.Web/connections/sql-2"
         },
         "connectionRuntimeUrl": "https://xxxxxxxxxxxxxx.01.common.logic-westus.azure-apihub.net/apim/sql/xxxxxxxxxxxxxxxxxxxxxxxxx/",
         "authentication": {
            "type": "ManagedServiceIdentity",
         }
      }
   }
}

Criar conexões de API conforme necessário

Se você estiver implantando seu aplicativo lógico Standard em uma região do Azure ou assinatura diferente do seu ambiente de desenvolvimento local, também deve garantir que essas conexões de API gerenciadas sejam criadas antes da implantação. A implantação de modelo do Azure Resource Manager (modelo do ARM) é a maneira mais fácil de criar conexões de API gerenciadas.

O exemplo a seguir mostra uma definição de recurso de conexão de API gerenciada por SQL em um modelo do ARM:

{
   "type": "Microsoft.Web/connections",
   "apiVersion": "2016–06–01",
   "location": "[parameters('location')]",
   "name": "[parameters('connectionName')]",
   "properties": {
      "displayName": "sqltestconnector",
      "api": {
         "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/sql"
      },
      "parameterValues": {
         "authType": "windows", 
         "database": "TestDB",
         "password": "TestPassword",
         "server": "TestServer",
         "username": "TestUserName"
      }
   }
}

Para encontrar os valores necessários para o objeto properties para que você possa concluir a definição do recurso de conexão, use a seguinte API para um conector específico:

GET https://management.azure.com/subscriptions/{Azure-subscription-ID}/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/{connector-name}?api-version=2016-06-01

Na resposta, encontre o objeto connectionParameters, que contém as informações necessárias para concluir a definição do recurso para esse conector específico. O exemplo a seguir mostra uma definição de recurso de exemplo para uma conexão gerenciada do SQL:

{
   "type": "Microsoft.Web/connections",
   "apiVersion": "2016–06–01",
   "location": "[parameters('location')]",
   "name": "[parameters('connectionName')]",
   "properties": {
      "displayName": "sqltestconnector",
      "api": {
         "id": "/subscriptions/{Azure-subscription-ID}/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/sql"
      },
      "parameterValues": {
         "authType": "windows",
         "database": "TestDB",
         "password": "TestPassword",
         "server": "TestServer",
         "username": "TestUserName"
      }
   }
}

Como alternativa, você pode capturar e examinar o rastreamento de rede para quando você cria uma conexão usando o designer de fluxo de trabalho no Aplicativos Lógicos do Azure. Encontre a chamada PUT que é enviada para a API do conector gerenciado conforme descrito anteriormente e revise o corpo da solicitação para todas as informações necessárias.

Definição de recurso de gateway de dados local

Se sua conexão usar um recurso de gateway de dados local, essa definição de recurso existirá separadamente da definição de recurso do conector. Para exibir a definição de recurso do gateway de dados, consulte Automatizar a implantação de Aplicativos Lógicos do Azure usando modelos do Azure Resource Manager e Microsoft.Web connectionGateways.

Liberar para o Azure

Para configurar um pipeline de lançamento implantado no Azure, siga as etapas associada para GitHub, Azure DevOps ou CLI do Azure.

Para implantações do GitHub, você pode implantar seu aplicativo lógico usando GitHub Actions, por exemplo, o GitHub Actions no Azure Functions. Essa ação requer que você passe as seguintes informações:

  • O nome do aplicativo lógico a ser usado para a implantação
  • O arquivo zip que contém seus artefatos de build reais, incluindo todas as pastas de fluxo de trabalho, arquivos de configuração como host.json, connections.json, local.settings.json e quaisquer outros arquivos relacionados.
  • Seu perfil de publicação, que é usado para autenticação
- name: 'Run Azure Functions Action'
  uses: Azure/functions-action@v1
  id: fa
  with:
   app-name: 'MyLogicAppName'
   package: 'MyBuildArtifact.zip'
   publish-profile: 'MyLogicAppPublishProfile'

Para obter mais informações, revise Entrega contínua usando o GitHub Actions.

Após a implantação no Azure

Cada conexão de API tem políticas de acesso. Após a conclusão da implantação do zip, você deve abrir seu recurso de aplicativo lógico Standard no portal do Azure e criar políticas de acesso para cada conexão de API para configurar as permissões para o aplicativo lógico implantado. A implantação de zip não cria configurações de aplicativo para você. Após a implantação, você deve criar essas configurações de aplicativo com base no arquivo local.settings.json no seu projeto de aplicativo lógico.

Gostaríamos de conhecer suas experiências com os Aplicativos Lógicos do Azure de locatário único!