Conteinerização e migração de aplicativos ASP.NET para o Serviço de Aplicativo do Azure

Neste artigo, você aprenderá a conteinerizar aplicativos ASP.NET e migrá-los para o Serviço de Aplicativo do Azure usando a ferramenta Conteinerização de Aplicativo das Migrações para Azure. O processo de conteinerização não exige acesso à sua base de código e oferece uma forma fácil de conteinerizar aplicativos existentes. A ferramenta funciona usando o estado de execução dos aplicativos em um servidor a fim de determinar os componentes do aplicativo. Ela ajuda a empacotá-los em uma imagem de contêiner. Em seguida, você pode implantar o aplicativo conteinerizado no Serviço de Aplicativo do Azure.

A ferramenta Conteinerização de Aplicativo das Migrações para Azure atualmente dá suporte a:

A ferramenta Conteinerização de Aplicativo ajuda você a:

  • Descobrir os componentes do aplicativo. A ferramenta se conecta remotamente aos servidores de aplicativo que executam seu aplicativo ASP.NET e descobre os componentes do aplicativo. Ela cria um Dockerfile que pode ser usado para criar uma imagem de contêiner do aplicativo.
  • Compile a imagem de contêiner. Você pode inspecionar e personalizar ainda mais o Dockerfile de acordo com seus requisitos de aplicativo e usá-lo para criar sua imagem de contêiner do aplicativo. A imagem de contêiner do aplicativo é enviada por push para o registro de contêiner do Azure que você especificar.
  • Implantar no Serviço de Aplicativo do Azure. A ferramenta gera os arquivos de implantação necessários para implantar o aplicativo conteinerizado no Serviço de Aplicativo do Azure.

Observação

A ferramenta Conteinerização de Aplicativo das Migrações para Azure ajuda a descobrir tipos de aplicativos específicos (aplicativos Web ASP.NET e Java no Apache Tomcat) e os respectivos componentes em um servidor de aplicativos. Para descobrir servidores e o inventário de aplicativos, funções e recursos em execução em computadores locais, use a Ferramenta de avaliação e descoberta de Migrações para Azure.

Nem todos os aplicativos serão beneficiados por uma mudança direta para contêineres sem realizar uma nova arquitetura significativa. Entretanto, alguns dos benefícios de mover aplicativos existentes para os contêineres sem realizar reescrita incluem:

  • Utilização de infraestrutura aprimorada. Ao usar contêineres, vários aplicativos podem compartilhar recursos e ser hospedados na mesma infraestrutura. Isso pode ajudar você a consolidar a infraestrutura e a melhorar a utilização.
  • Gerenciamento simplificado. Ao hospedar seus aplicativos em plataformas gerenciadas e modernas como o AKS e o Serviço de Aplicativo, você pode simplificar suas práticas de gerenciamento. Você pode conseguir essa simplificação desativando ou reduzindo os processos de manutenção e gerenciamento de infraestrutura que eram tradicionalmente executados com a infraestrutura própria.
  • Portabilidade do aplicativo. Com o aumento da adoção e a padronização das plataformas e dos formatos de especificação de contêiner, a portabilidade de aplicativos não é mais um problema.
  • Adotar o gerenciamento moderno usando o DevOps. Usar contêineres ajuda você a adotar e padronizar práticas modernas de gerenciamento e segurança para realizar a transição para o DevOps.

Neste tutorial, você aprenderá como:

  • Configurar uma conta do Azure.
  • Instale a ferramenta Conteinerização de Aplicativo das Migrações para Azure.
  • Descubra seu aplicativo ASP.NET.
  • Compile a imagem de contêiner.
  • Implante o aplicativo conteinerizado no Serviço de Aplicativo.

Observação

Os tutoriais fornecem o caminho de implantação mais simples para um cenário para que você possa configurar rapidamente uma prova de conceito. Os tutoriais usam opções padrão quando possível e não mostram todas as configurações e caminhos.

Pré-requisitos

Antes de iniciar este tutorial, você deve:

Requisito Detalhes
Identificar um computador no qual instalar a ferramenta Você precisará de um computador Windows no qual instalar e executar a ferramenta Conteinerização de Aplicativo das Migrações para Azure. O computador Windows pode executar um sistema operacional de servidor (Windows Server 2016 ou posterior) ou de cliente (Windows 10). (A ferramenta pode ser executada na área de trabalho.)

O computador Windows que executa a ferramenta deve ter conectividade de rede com os servidores ou máquinas virtuais que hospedam os aplicativos ASP.NET que serão conteinerizados.

Verifique se 6 GB está disponível no computador Windows que executa a ferramenta Conteinerização de Aplicativo das Migrações para Azure. Esse espaço serve para armazenar artefatos de aplicativo.

O computador Windows deve ter acesso à Internet, diretamente ou por meio de um proxy.

Se a ferramenta de Implantação da Web da Microsoft ainda não estiver instalada no computador que executa a ferramenta Conteinerização de Aplicativo e o servidor de aplicativos, instale-a. Você pode baixar a ferramenta.
Servidores de aplicativos Habilite a comunicação remota do PowerShell nos servidores de aplicativos: entre no servidor de aplicativos e siga estas instruções para ativar a comunicação remota do PowerShell.

Verifique se o PowerShell 5.1 está instalado no servidor de aplicativos. Siga as instruções em Instalar e Configurar o WMF 5.1 no servidor de aplicativos.

Se a ferramenta de Implantação da Web da Microsoft ainda não estiver instalada no computador que executa a ferramenta Conteinerização de Aplicativo e o servidor de aplicativos, instale-a. Você pode baixar a ferramenta.
Aplicativo ASP.NET A ferramenta atualmente dá suporte a:
  • Aplicativos ASP.NET que usam o .NET Framework 3.5 ou posterior.
  • Servidores de aplicativos que executam o Windows Server 2012 R2 ou posterior. (Os servidores de aplicativos devem estar executando o PowerShell 5.1.)
  • Aplicativos que são executados nos Serviços de Informações da Internet 7.5 ou posterior.


A ferramenta atualmente não dá suporte a:
  • Aplicativos que exigem autenticação do Windows. (Atualmente, o AKS não dá suporte a gMSA.)
  • Aplicativos que dependem de outros serviços Windows hospedados fora dos Serviços de Informações da Internet.

Preparar uma conta de usuário do Azure

Caso você não tenha uma assinatura do Azure, crie uma conta gratuita antes de começar.

Após sua assinatura estar configurada, você precisará de uma conta de usuário do Azure com:

  • Permissões de proprietário na assinatura do Azure.
  • Permissões para registrar aplicativos do Microsoft Entra.

Se você acaba de criar uma conta gratuita do Azure, você é o proprietário da assinatura. Se você não for o proprietário da assinatura, trabalhe com o proprietário para atribuir as permissões da seguinte maneira:

  1. No portal do Azure, pesquise por "assinaturas". Em Serviços, selecione Assinaturas:

    Screenshot that shows the search box for searching for an Azure subscription.

  2. Na página Assinaturas, selecione a assinatura na qual você deseja criar um projeto de Migrações para Azure.

  3. Na assinatura, no painel esquerdo, selecione Controle de acesso (IAM) .

  4. Na guia Verificar o acesso, pesquise a conta de usuário relevante.

  5. Em Adicionar uma atribuição de função, selecione Adicionar:

    Screenshot that shows searching for a user account to check access and assign a role.

  6. Na página Adicionar atribuição de função, selecione a função Proprietário e selecione a conta (azmigrateuser em nosso exemplo). Em seguida, selecione Salvar.

    Screenshot that shows the Add role assignment page.

    Sua conta do Azure também precisa de permissões para registrar aplicativos do Microsoft Entra.

  7. No portal do Azure, acesse Microsoft Entra ID>Usuários>Configurações de Usuário.

  8. Em Configurações de usuário, verifique se os usuários do Microsoft Entra podem registrar aplicativos. (Essa opção é definida como Sim por padrão.)

    Screenshot that shows the User settings page.

  9. Se a opção Registros de aplicativo estiver definida como Não, solicite ao administrador global/de locatário a atribuição da permissão necessária. Como alternativa, o administrador global/de locatário pode atribuir a função Desenvolvedor de aplicativos a uma conta para permitir o registro de aplicativos do Microsoft Entra. Para obter mais informações, confira Atribuir funções a usuários.

Baixar e instalar a ferramenta Conteinerização de Aplicativo das Migrações para Azure

  1. Baixe o instalador da Conteinerização de Aplicativo das Migrações para Azure em um computador Windows.

  2. Abra o PowerShell no modo de administrador e altere o diretório do PowerShell para a pasta que contém o instalador.

  3. Execute o script de instalação usando o comando:

    .\AppContainerizationInstaller.ps1
    

Observação

Para o Windows Server 2022, edite a linha 135 e remova PowerShell-ISE da lista de recursos, pois ela não tem mais suporte.

Abra a ferramenta Conteinerização de Aplicativo

  1. Abra um navegador em qualquer computador que possa se conectar ao computador Windows que executa a ferramenta Conteinerização de Aplicativo. Acesse a URL da ferramenta: https://nome do computador ou endereço IP: 44369.

    Como alternativa, você pode abrir o aplicativo na área de trabalho usando o atalho do aplicativo.

  2. Se você vir um aviso informando que sua conexão não é privada, selecione Avançado e prossiga para o site. Esse aviso é exibido porque a interface da Web usa um certificado TLS/SSL autoassinado.

  3. Na tela de conexão, use a conta de administrador local do computador para entrar.

  4. Selecione Aplicativos Web ASP.NET como o tipo de aplicativo que você deseja conteinerizar.

  5. Para especificar a lista Serviço de destino do Azure, selecione Contêineres no Serviço de Aplicativo do Azure:

    Screenshot that shows the application type and target lists.

Concluir os pré-requisitos da ferramenta

  1. Aceite os termos de licença e leia as informações de terceiros.
  2. No aplicativo Web da ferramenta Configurar pré-requisitos, conclua estas etapas:
    • Conectividade. A ferramenta verifica se o computador Windows tem acesso à Internet. Se o computador usar um proxy:

      1. Selecione Configurar proxy para especificar o endereço de proxy (como endereço IP ou FQDN) e a porta de escuta.

      2. Especifique as credenciais caso o proxy exija autenticação.

      3. Se você tiver adicionado detalhes de proxy ou desabilitado o proxy ou a autenticação, selecione Salvar para disparar a verificação de conectividade novamente.

      Há suporte apenas para o proxy HTTP.

    • Instale as atualizações. A ferramenta verifica automaticamente as atualizações mais recentes e as instala. Você também pode instalar manualmente a versão mais recente da ferramenta.

    • Instale a ferramenta Implantação da Web da Microsoft. A ferramenta verificará se a ferramenta de Implantação da Web da Microsoft está instalada no computador Windows que executa a ferramenta Conteinerização de Aplicativo das Migrações para Azure.

    • Habilite a comunicação remota do PowerShell. A ferramenta perguntará se a comunicação remota do PowerShell está habilitada nos servidores de aplicativos que executam os aplicativos ASP.NET que você deseja conteinerizar.

Entrar no Azure

  1. Selecione Entrar para entrar na sua conta do Azure.

    Será necessário um código do dispositivo para a autenticação com o Azure. Selecionar Entrar deve abrir uma janela que contém o código do dispositivo. Se a janela não for exibida, verifique se você desabilitou o bloqueador de pop-ups no navegador.

  2. Selecione Copiar código e entrar para copiar o código do dispositivo e abrir um prompt de conexão do Azure em uma nova guia do navegador:

    Screenshot that shows the Device code for Azure Sign in window.

  3. Na nova guia, cole o código do dispositivo e conclua a conexão usando as suas credenciais de conta do Azure. Depois de ter entrado, você pode fechar a guia do navegador e retornar à interface da Web da ferramenta Conteinerização de Aplicativo.

  4. Selecione o locatário do Azure que deseja usar.

  5. Escolha a assinatura do Azure que você deseja usar.

Descobrir aplicativos ASP.NET

A ferramenta Conteinerização de Aplicativo conecta-se remotamente aos servidores de aplicativos usando as credenciais fornecidas e tenta descobrir aplicativos ASP.NET hospedados nos servidores de aplicativos.

  1. Especifique o Endereço IP/FQDN do servidor e as credenciais do servidor que executa o aplicativo ASP.NET a serem usados na conexão remota do servidor para fins de descoberta de aplicativo.

    • As credenciais fornecidas precisam ser de um administrador local (Windows) no servidor de aplicativos.
    • Em contas de domínio (o usuário precisa ser um administrador no servidor de aplicativos), adote o nome de domínio como prefixo do nome de usuário no seguinte formato: <domain\user name>.
    • Em contas locais (o usuário precisa ser um administrador no servidor de aplicativos), adote o nome do host como prefixo do nome de usuário no seguinte formato: <host name\user name>.
    • Você pode executar a descoberta de aplicativos em até cinco servidores de cada vez.
  2. Selecione Validar para verificar se o servidor de aplicativos pode ser acessado pelo computador que executa a ferramenta e se as credenciais são válidas. Após o sucesso da validação, a coluna Status exibirá o status Mapeado:

    Screenshot that shows the server status as Mapped.

  3. Selecione Continuar para iniciar a descoberta do aplicativo nos servidores de aplicativo selecionados.

  4. Quando a descoberta do aplicativo for concluída, selecione os aplicativos que você deseja conteinerizar:

    Screenshot that shows the discovered ASP.NET application.

  5. Especifique um nome para o contêiner de destino de cada aplicativo selecionado. Especifique o nome do contêiner como <name:tag>, where tag é usada para a imagem de contêiner. Por exemplo, você pode especificar o nome do contêiner de destino como nomedoaplicativo:v1.

Parametrizar as configurações do aplicativo

A parametrização da configuração a disponibiliza como um parâmetro de tempo de implantação. A parametrização permite que você defina uma configuração enquanto implanta o aplicativo em vez de embuti-lo em código como um valor específico na imagem de contêiner. Por exemplo, essa opção é útil para parâmetros como cadeias de conexão de banco de dados.

  1. Selecione configurações de aplicativo para examinar as configurações detectadas.

  2. Selecione os parâmetros que você deseja parametrizar e clique em Aplicar:

    Screenshot that shows the list of detected configurations.

Externalizar dependências do sistema de arquivos

Você pode adicionar outras pastas usadas pelo seu aplicativo. Especifique se elas devem fazer parte da imagem de contêiner ou se elas serão externalizadas para o armazenamento persistente por meio do compartilhamento de arquivo do Azure. O uso de armazenamento persistente externo funciona de forma ideal para aplicativos com estado que armazenam o estado fora do contêiner ou têm outros conteúdos estáticos armazenados no sistema de arquivos.

  1. Selecione Editar em Pastas do aplicativo para examinar as pastas do aplicativo detectadas. Essas pastas foram identificadas como artefatos obrigatórios necessários pelo aplicativo. Elas serão copiadas para a imagem de contêiner.

  2. Selecione Adicionar pasta e especifique os caminhos da pasta que você deseja adicionar.

  3. Para adicionar várias pastas no mesmo volume, separe os valores com vírgulas.

  4. Selecione Compartilhamento de arquivo do Azure como a opção de armazenamento para que as pastas sejam armazenadas fora do contêiner em um armazenamento persistente.

  5. Selecione Salvar depois de examinar as pastas do aplicativo:

    Screenshot that shows the Edit application folders window.

  6. Selecione Continuar para prosseguir até a fase de build da imagem de contêiner.

Criar imagem de contêiner

  1. Na lista suspensa, selecione um registro de contêiner do Azure que será usado para criar e armazenar as imagens de contêiner dos aplicativos. Você pode usar um registro de contêiner do Azure existente ou criar outro selecionando Criar registro:

    Screenshot that shows the Build images window.

    Observação

    São exibidos somente os registros de contêiner do Azure com a conta de usuário administrador habilitada. No momento, a conta de usuário administrador é necessária para implantar uma imagem de um registro de contêiner do Azure no Serviço de Aplicativo do Azure. Para obter mais informações, confira Autenticar-se com um registro de contêiner do Azure.

  2. Os Dockerfiles necessários para criar as imagens de contêiner de cada aplicativo selecionado são gerados no início da etapa de build. Selecione Examinar para examinar o Dockerfile. Você também pode adicionar todas as personalizações necessárias ao Dockerfile na etapa de análise e salvar as alterações antes de iniciar o processo de build.

  3. Selecione os aplicativos para os que você deseja criar imagens e selecione Criar. Selecionar Criar iniciará o build da imagem de contêiner para cada aplicativo. A ferramenta monitora o status de build e permitirá que você continue na próxima etapa quando o build for concluído.

  4. Você pode monitorar o progresso do build selecionando Build em Andamento na coluna de status. O link ficará ativo alguns minutos depois que você disparar o processo de build.

  5. Depois que o build tiver sido concluído, selecione Continuar para especificar as configurações de implantação:

    Screenshot that shows the Review link, the container image status, and the Build and Continue buttons.

Implantar o aplicativo conteinerizado no Serviço de Aplicativo do Azure

Depois que a imagem de contêiner for criada, a próxima etapa será implantar o aplicativo como contêiner no Serviço de Aplicativo do Azure.

  1. Selecionar o plano do Serviço de Aplicativo do Azure que aplicativo deve usar.

    Se você não tiver um plano do Serviço de Aplicativo ou quiser criar um plano do Serviço de Aplicativo para uso, poderá criar um selecionando Criar plano do Serviço de Aplicativo.

  2. Selecione Continuar depois de escolher o plano do Serviço de Aplicativo.

  3. Se você tiver parametrizado as configurações do aplicativo, especifique o repositório secreto a ser usado para o aplicativo. Você pode escolher as configurações de aplicativo do Azure Key Vault ou do Serviço de Aplicativo para gerenciar os segredos do aplicativo. Para obter mais informações, confira Configurar cadeias de conexão.

    • Se você selecionou as configurações de aplicativo do Serviço de Aplicativo para gerenciar seus segredos, selecione Continuar.
    • Se você quiser usar um cofre de chaves do Azure para gerenciar os segredos do aplicativo, especifique o cofre de chaves que deseja usar.
      • Se você não tiver um Azure Key Vault ou quiser criar um cofre de chaves, poderá criar um selecionando Criar o Azure Key Vault.
      • A ferramenta atribuirá automaticamente as permissões necessárias para o gerenciamento de segredos por meio do cofre de chaves.
  4. Se você adicionou mais pastas e selecionou a opção de compartilhamento de arquivo do Azure para armazenamento persistente, especifique o compartilhamento de arquivo do Azure a ser usado pela ferramenta Conteinerização de Aplicativo durante a implantação. A ferramenta copiará as pastas do aplicativo que estão configurados para os Arquivos do Azure e as montará no contêiner do aplicativo durante a implantação. 

    Se você não tiver um compartilhamento de arquivo do Azure ou desejar criar outro compartilhamento de arquivo do Azure, crie um clicando em Criar Conta de Armazenamento e compartilhamento de arquivo.

  5. Agora você precisa especificar a configuração de implantação do aplicativo. Selecione Configurar para personalizar a implantação do aplicativo. Na etapa de configuração, você pode oferecer estas personalizações:

    • Nome. Especifique um nome exclusivo para o aplicativo. Esse nome será usado para gerar a URL do aplicativo. Ele também será usado como um prefixo para outros recursos criados como parte da implantação.
    • Configuração de aplicativo. Para configurações de aplicativo parametrizadas, informe os valores a serem usados na implantação atual.
    • Configuração do armazenamento. Examine as informações de todas as pastas do aplicativo que foram configuradas para armazenamento persistente.

    Screenshot that shows the deployment configuration.

  6. Depois de salvar a configuração de implantação do aplicativo, a ferramenta gera o YAML de implantação do Kubernetes do aplicativo.

    • Selecione Examinar para analisar a configuração de implantação dos aplicativos.

    • Selecione os aplicativos que você deseja implantar.

    • Selecione Implantar para iniciar a implantação dos aplicativos selecionados.

      Screenshot that shows the Deploy button.

    • Após o aplicativo ser implantado, você poderá clicar na coluna Status de implantação para rastrear os recursos que foram implantados no aplicativo.

Solução de problemas

Para solucionar problemas com a ferramenta de Conteinerização de Aplicativo, você poderá examinar os arquivos de log no computador Windows que está em execução na ferramenta. Os arquivos de log da ferramenta estão localizados em C:\ProgramData\Microsoft Azure Migrate App Containerization\Logs.

Próximas etapas