Partilhar via


Configurar a implantação de DevOps para aplicativos lógicos padrão em aplicativos lógicos do Azure de locatário único

Aplica-se a: Aplicativos Lógicos do Azure (Padrão)

Este guia mostra principalmente como configurar a implantação de um projeto de aplicativo lógico padrão no Visual Studio Code para sua infraestrutura usando ferramentas e processos de DevOps. Se seu aplicativo lógico padrão existir no portal do Azure, você poderá baixar os arquivos de artefato do aplicativo lógico para uso 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 seu cenário de implantação.

Se você não tiver um aplicativo lógico Padrão, ainda poderá seguir este guia usando os projetos de aplicativo lógico padrão de exemplo vinculados, além de exemplos para implantação no Azure por meio do GitHub ou do Azure DevOps. Para obter mais informações, consulte 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 a configuração prévia de infraestrutura ou aplicativo lógico padrão, use os seguintes projetos de exemplo para que você possa configurar a implantação para um exemplo de aplicativo lógico padrão e infraestrutura, com base se você deseja usar o GitHub ou o Azure DevOps:

Ambos os exemplos incluem os seguintes recursos que um aplicativo lógico padrão usa para executar:

Nome do recurso Necessário Description
Aplicativo lógico padrão Sim Este recurso do Azure contém os fluxos de trabalho executados em Aplicativos Lógicos do Azure de locatário único.

Importante: em seu projeto de aplicativo lógico, cada fluxo de trabalho tem um arquivo de workflow.json que contém a definição do fluxo de trabalho, que inclui as definições de gatilho e ação.
Ligações da 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 de connections.json 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 conexões e funções diferentes em cada ambiente, certifique-se de parametrizar o 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 Functions Premium ou App Service Sim Este 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 Workflow Standard, que se baseia no plano de hospedagem do Azure Functions Premium.
Conta de armazenamento do Azure Sim, para fluxos de trabalho com e sem monitoração de estado Este recurso do Azure armazena os metadados, chaves para controle de acesso, estado, entradas, saídas, histórico de execução e outras informações sobre seus fluxos de trabalho.
Application Insights Opcional Este recurso do Azure fornece recursos de monitoramento para seus fluxos de trabalho.
Modelo do Azure Resource Manager (ARM) Opcional Este recurso do Azure define uma implantação de infraestrutura de 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 em seu fluxo de trabalho requer uma política de acesso associada. Essa política precisa da identidade do seu aplicativo lógico para fornecer as permissões corretas para acessar a infraestrutura do conector gerenciado. Os projetos de exemplo incluídos incluem um modelo 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 padrão e recursos de infraestrutura:

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

Baixar artefatos de aplicativo lógico padrão do portal

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

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

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

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

  4. Quando o prompt aparecer, selecione Salvar como, navegue até a pasta local desejada e selecione Salvar para salvar o arquivo zip.

  5. Extraia o ficheiro zip.

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

    Quando você abre a pasta, o Visual Studio Code cria automaticamente um espaço de trabalho.

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

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

Criar e implantar aplicativo lógico (zip deploy)

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

Construa o seu projeto

  1. Envie seu projeto de aplicativo lógico padrão e arquivos de artefato para seu repositório de origem, por exemplo, GitHub ou Azure DevOps.

  2. Configure um pipeline de compilação com base no seu tipo de projeto de aplicativo lógico concluindo as seguintes ações correspondentes:

    Tipo de projeto Descrição e passos
    Baseado em Nuget A estrutura do projeto baseado em NuGet é baseada no .NET Framework. Para criar esses projetos, certifique-se de seguir as etapas de compilação para o .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 do idioma e não requer nenhuma etapa de compilação específica do idioma.
  3. Compacte seus arquivos de projeto usando qualquer método que desejar.

    Importante

    Certifique-se de que o arquivo zip contenha os artefatos de construção reais do 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 pastas extras nem coloque artefatos em pastas que ainda não existam na estrutura do projeto.

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

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

Antes de lançar para o Azure

As conexões de API gerenciadas dentro do arquivo connections.json do projeto de aplicativo lógico são criadas especificamente para uso local no Visual Studio Code. Antes de liberar seus artefatos de projeto 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 usar no Azure.

Atualizar tipo de autenticação

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

Formato de código do Visual Studio

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

Crie conexões de API conforme necessário

Se você estiver implantando seu aplicativo lógico padrão em uma região ou assinatura do Azure diferente do seu ambiente de desenvolvimento local, também deverá criar essas conexões de API gerenciadas antes da implantação. A implantação do modelo do Azure Resource Manager (modelo 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 SQL em um modelo 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 localizar os valores necessários para o properties objeto 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, localize o connectionParameters objeto, que contém as informações necessárias para concluir a definição de recurso para esse conector específico. O exemplo a seguir mostra uma definição de recurso de exemplo para uma conexão gerenciada 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 revisar o rastreamento de rede para quando criar uma conexão usando o designer de fluxo de trabalho nos Aplicativos Lógicos do Azure. Encontre a PUT chamada enviada para a API do conector gerenciado, conforme descrito anteriormente, e examine o corpo da solicitação para obter todas as informações necessárias.

Definição de recursos de gateway de dados local

Se sua conexão usa um recurso de gateway de dados local, essa definição de recurso existe separadamente da definição de recurso do conector. Para exibir a definição de recursos 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.

Lançamento para o Azure

Para configurar um pipeline de versão que implanta no Azure, siga as etapas associadas para GitHub, Azure DevOps ou CLI do Azure.

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

  • O nome do aplicativo lógico a ser usado para implantação
  • O arquivo zip que contém seus artefatos de compilação 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, consulte Entrega contínua usando a Ação do GitHub.

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 zip, você deve abrir seu recurso de aplicativo lógico padrão no portal do Azure e criar políticas de acesso para cada conexão de API para configurar permissões para o aplicativo lógico implantado. A implantação 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 em seu projeto de aplicativo lógico.

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