Conteinerização e migração de aplicativo ASP.NET para o Serviço de Kubernetes do Azure

Neste artigo, você aprenderá a conteinerizar aplicativos ASP.NET e migrá-los para o AKS (Serviço de Kubernetes do Azure) usando a ferramenta Migrações para Azure: Conteinerização de Aplicativo. 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 com o uso do estado de execução dos aplicativos em um servidor a fim de determinar os componentes do aplicativo e ajuda você a empacotá-los em uma imagem de contêiner. O aplicativo em contêineres pode, então, ser implantado no AKS (Serviço de Kubernetes do Azure).

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

  • Como conteinerizar aplicativos ASP.NET e implantá-los em contêineres do Windows no Serviço de Kubernetes do Azure.
  • Como conteinerizar aplicativos ASP.NET e implantá-los em contêineres do Windows no Serviço de Aplicativo do Azure. Saiba mais.
  • Como conteinerizar aplicativos Web Java no Apache Tomcat (em servidores Linux) e implantá-los em contêineres do Linux no AKS. Saiba mais.
  • Como conteinerizar aplicativos Web Java no Apache Tomcat (em servidores Linux) e implantá-los em contêineres do Linux no Serviço de Aplicativo. Saiba mais.

A ferramenta Migrações para Azure: Conteinerização de Aplicativo ajuda você a:

  • Descobrir seu aplicativo: a ferramenta se conecta remotamente aos servidores de aplicativo que executam seu aplicativo ASP.NET e descobre os componentes do aplicativo. A ferramenta cria um Dockerfile que pode ser usado a fim de criar uma imagem de contêiner para o aplicativo.
  • Criar 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 de aplicativo. A imagem de contêiner do aplicativo é enviada por push para o Registro de Contêiner do Azure que você especificar.
  • Fazer a implantação no Serviço de Kubernetes do Azure: a ferramenta gera os arquivos YAML de definição de recurso do Kubernetes necessários para implantar o aplicativo conteinerizado no cluster do Serviço de Kubernetes do Azure. Você pode personalizar os arquivos YAML e usá-los para implantar o aplicativo no AKS.

Observação

A ferramenta Migrações para Azure: Conteinerização de Aplicativo ajuda a descobrir tipos de aplicativos específicos (aplicativos Web ASP.NET e Java no Apache Tomcat) e seus 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 o recurso Migrações para Azure: Descoberta e a capacidade de avaliação. Saiba mais

Embora nem todos os aplicativos se beneficiem de uma mudança direta para contêineres sem uma rearquitetura significativa, alguns dos benefícios de mover aplicativos existentes para contêineres sem reprogramação incluem:

  • Utilização de infraestrutura aprimorada: com 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: hospedando seus aplicativos em uma plataforma gerenciada moderna como o AKS e o Serviço de Aplicativo, você pode simplificar suas práticas de gerenciamento. Você pode conseguir isso desativando ou reduzindo os processos de manutenção e gerenciamento de infraestrutura que eram tradicionalmente executados com a infraestrutura própria.
  • Portabilidade de aplicativos: com o aumento da adoção e a padronização dos formatos de especificação de contêiner e das plataformas, a portabilidade de aplicativos não é mais um problema.
  • Adoção de um gerenciamento moderno com DevOps: ajuda você a adotar e padronizar práticas modernas de gerenciamento e segurança para adotar o DevOps.

Neste tutorial, você aprenderá como:

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

Observação

Os tutoriais mostram 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 todos os caminhos possíveis.

Pré-requisitos

Antes de iniciar este tutorial, você deverá:

Requisito Detalhes
Identificar um computador no qual instalar a ferramenta Um computador Windows para instalar e executar a ferramenta Migrações para Azure: Conteinerização de Aplicativo. O computador Windows pode ser um sistema operacional de servidor (Windows Server 2016 ou posterior) ou de cliente (Windows 10), o que significa que a ferramenta também pode ser executada na área de trabalho.

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

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

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

Instale a ferramenta Implantação da Web da Microsoft no computador que executa a ferramenta auxiliar de Conteinerização de aplicativo e o servidor de aplicativos, se ainda não estiver instalado. Você pode baixar a ferramenta aqui.
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 para baixar e instalar o PowerShell 5.1 no servidor de aplicativos.

Instale a ferramenta Implantação da Web da Microsoft no computador que executa a ferramenta auxiliar de Conteinerização de aplicativo e o servidor de aplicativos, se ainda não estiver instalado. Você pode baixar a ferramenta aqui.
Aplicativo ASP.NET A ferramenta atualmente dá suporte a:
- Aplicativos ASP.NET que usam o Microsoft .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 versão 5.1).
-Aplicativos em execução no IIS (Serviços de Informações da Internet) 7.5 ou versão posterior.

A ferramenta atualmente não dá suporte a:
- Aplicativos que exigem autenticação do Windows (atualmente, a ferramenta conteinerização de aplicativo não dá suporte à gMSA).
- Aplicativos que dependem de outros serviços do Windows hospedados fora do IIS.

Preparar uma conta de usuário do Azure

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

Quando sua assinatura estiver 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" e, em Serviços, selecione Assinaturas.

    Screenshot of search box to search for the Azure subscription.

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

  3. Selecione IAM (Controle de acesso) .

  4. Selecione Adicionar>Adicionar atribuição de função para abrir a página Adicionar atribuição de função.

  5. Atribua a função a seguir. Para ver as etapas detalhadas, confira Atribuir funções do Azure usando o portal do Azure.

    Configuração Valor
    Função Proprietário
    Atribuir acesso a Usuário
    Membros azmigrateuser (neste exemplo)

    Screenshot of add role assignment page in Azure portal.

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

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

  8. Em Configurações de Usuário, certifique-se de que os usuários do Microsoft Entra possam registrar aplicativos (configurado como Sim por padrão).

    Screenshot of verification in User Settings if users can register Active Directory apps.

  9. Caso as configurações de 'Registros de aplicativo' estejam definidas como 'Não', solicite ao administrador global/de locatários a atribuição da permissão necessária. Alternativamente, o locatário/administrador global pode atribuir a função de Desenvolvedor de Aplicativos a uma conta para permitir o registro do Aplicativo do Microsoft Entra. Saiba mais.

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

  1. Baixe a ferramenta Migrações para Azure: Conteinerização de Aplicativo em um computador Windows.

  2. Inicie 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 ele não tem mais suporte.

Iniciar 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 e abra a URL da ferramenta: https://nome do computador ou endereço IP: 44369.

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

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

  3. Na tela de entrada, use a conta de administrador local no computador para fazer logon.

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

  5. Para especificar o serviço do Azure de destino, selecione Contêineres no Serviço de Kubernetes do Azure.

    Screenshot of default load-up for App Containerization tool.

Pré-requisitos da ferramenta completa

  1. Aceite os termos de licença e leia as informações de terceiros.
  2. No aplicativo Web da ferramenta >Configurar pré-requisitos, siga estas etapas:
    • Conectividade: a ferramenta verifica se o computador Windows tem acesso à Internet. Se o computador usar um proxy:
      • Selecione Configurar proxy para especificar o endereço de proxy (como endereço IP ou FQDN) e a porta de escuta.
      • Especifique as credenciais caso o proxy exija autenticação.
      • Há suporte apenas para o proxy HTTP.
      • Se você tiver adicionado detalhes de proxy ou desabilitado o proxy e/ou a autenticação, selecione Salvar para disparar a verificação de conectividade novamente.
    • Instalar atualizações: a ferramenta verificará automaticamente as últimas atualizações e as instalará. Você também pode instalar manualmente a versão mais recente da ferramenta aqui.
    • Instalar a ferramenta de 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 Migrações para Azure: Conteinerização de Aplicativo.
    • Habilitar 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 serão conteinerizados.

Entrar no Azure

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

  2. Será necessário um código do dispositivo para a autenticação com o Azure. Selecionar Entrar abrirá um modal com o código do dispositivo.

  3. Selecione Copiar código e entrar para copiar o código do dispositivo e abrir um prompt de entrada do Azure em uma nova guia do navegador. Se essa opção não for exibida, verifique se você desabilitou o bloqueador de pop-ups no navegador.

    Screenshot of modal showing device code.

  4. Na nova guia, cole o código do dispositivo e conclua a entrada usando suas credenciais de conta do Azure. É possível fechar a guia do navegador depois de concluir a entrada e voltar para a tela da ferramenta de conteinerização de aplicativo.

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

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

Descobrir aplicativos ASP.NET

A ferramenta auxiliar 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 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.
    • No caso de contas de domínio (o usuário precisa ser um administrador no servidor de aplicativo), coloque o nome de domínio como prefixo do nome de usuário no formato <domain\username>.
    • 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 de status mostrará o status como Mapeado.

    Screenshot for server IP and credentials.

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

  4. Após a conclusão bem-sucedida da descoberta de aplicativos, você pode selecionar a lista de aplicativos a serem conteinerizados.

    Screenshot for discovered ASP.NET application.

  5. Use a caixa de seleção para marcar os aplicativos que serão conteinerizados.

  6. Especificar nome do contêiner: especifique um nome para o contêiner de destino de cada aplicativo selecionado. O nome do contêiner deve ser especificado como <name:tag> em que a marca é 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 torna-a disponível como um parâmetro de tempo de implantação. Isso permite que você defina essa configuração enquanto implanta o aplicativo em vez de tê-lo embutido como um valor específico em código 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. Marque a caixa de seleção para parametrizar as configurações do aplicativo detectado.

  3. Selecione Aplicar depois de escolher as configurações a serem parametrizadas.

    Screenshot for app configuration parameterization ASP.NET application.

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 serão externalizadas por meio de volumes persistentes no compartilhamento de arquivos do Azure. O uso de volumes persistentes funciona muito bem com aplicativos com estado que armazenam o estado fora do contêiner ou têm outro conteúdo estático armazenado no sistema de arquivos. Saiba mais.

  1. Selecione Editar em Pastas do Aplicativo para examinar as pastas do aplicativo detectadas. As pastas do aplicativo detectadas foram identificadas como artefatos obrigatórios exigidos pelo aplicativo e serão copiadas na imagem de contêiner.

  2. Selecione Adicionar pastas e especifique os caminhos de pasta a serem adicionados.

  3. Para adicionar várias pastas ao mesmo volume, informe valores separados por vírgulas (,).

  4. Selecione Volume Persistente como opção de armazenamento se você quiser que as pastas sejam armazenadas fora do contêiner em um Volume Persistente.

  5. Selecione Salvar depois de examinar as pastas do aplicativo. Screenshot for app volumes storage selection.

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

Criar imagem de contêiner

Importante

Se você estiver usando o AKS 1.23+, edite os scripts conforme mostrado abaixo antes de criar a imagem do Docker para garantir uma migração perfeita.

Alterar o script abaixo

# Run entrypoint script.
COPY ./Entryscript.ps1 c:/Entryscript.ps1
ENTRYPOINT powershell c:/Entryscript.ps1

para

# Run entrypoint script.
COPY ["./Entryscript.ps1", "c:/Entryscript.ps1"]
ENTRYPOINT ["powershell", "c:/Entryscript.ps1"]

Para compilar uma imagem de contêiner, siga estas etapas:

  1. Selecionar o Registro de Contêiner do Azure: use o menu suspenso para selecionar o 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 optar por criar outro usando a opção Criar registro.

    Screenshot for app ACR selection.

  2. Examinar o Dockerfile: o Dockerfile necessário para criar as imagens de contêiner para cada aplicativo selecionado é gerado no início da etapa de compilação. Selecione Examinar para examinar o Dockerfile. Você também pode adicionar todas as personalizações necessárias ao Dockerfile na etapa de revisão e salvar as alterações antes de iniciar o processo de compilação.

  3. Processo de compilação do gatilho: selecione os aplicativos para os quais as imagens serão criadas e selecione Compilar. Selecionar compilar iniciará a compilação da imagem de contêiner para cada aplicativo. A ferramenta continua monitorando o status da compilação continuamente e permite que você prossiga para a próxima etapa após a conclusão bem-sucedida da compilação.

  4. Acompanhar o status da compilação: você também pode monitorar o progresso da etapa de compilação selecionando o link Compilação em andamento na coluna de status. O link leva alguns minutos para ficar ativo depois que o processo de compilação é disparado.

  5. Depois de concluída a compilação, selecione Continuar para especificar as configurações de implantação.

    Screenshot for app container image build completion.

Implantar o aplicativo conteinerizado no AKS

Depois que a imagem de contêiner é criada, a próxima etapa é implantar o aplicativo como contêiner no AKS (Serviço de Kubernetes do Azure).

  1. Selecionar o cluster do Serviço de Kubernetes do Azure: especifique o cluster AKS no qual o aplicativo deve ser implantado.

    • O cluster AKS selecionado precisa ter um pool de nós do Windows.
    • O cluster precisa ser configurado para permitir o pull de imagens do Registro de Contêiner do Azure que foi selecionado para armazenar as imagens.
      • Execute o comando a seguir na CLI do Azure para anexar o cluster AKS ao ACR.
        az aks update -n <cluster-name> -g <cluster-resource-group> --attach-acr <acr-name>
        
    • Se você não tem um cluster AKS ou gostaria de criar outro cluster AKS para a implantação do aplicativo, pode criá-lo na ferramenta selecionando Criar cluster AKS.
      • O cluster AKS criado usando a ferramenta será criado com um pool de nós do Windows. O cluster será configurado para permitir o pull de imagens do Registro de Contêiner do Azure que foi criado anteriormente (se a opção Criar registro tiver sido escolhida).
    • Selecionar Continuar depois de escolher o cluster AKS.
  2. Especificar o repositório de segredos: se tiver optado por parametrizar as configurações do aplicativo, especifique o repositório de segredos a ser usado para o aplicativo. É possível escolher as configurações de aplicativo do Azure Key Vault ou do Serviço de Aplicativo para gerenciar os segredos do aplicativo. Saiba mais

    • Se você escolheu as configurações de aplicativo do Serviço de Aplicativo para gerenciar segredos, deve selecionar Continuar.
    • Para usar um Azure Key Vault para gerenciar os segredos do aplicativo, especifique o Azure Key Vault desejado.
      • Se você não tiver um Azure Key Vault ou deseja criar um, poderá optar por criar um com a ferramenta selecionando Criar um Azure Key Vault.
      • A ferramenta atribuirá automaticamente as permissões necessárias para o gerenciamento de segredos por meio do Key Vault.
  3. Especificar o compartilhamento de arquivo do Azure: se você adicionou mais pastas e selecionou a opção Volume Persistente, especifique o compartilhamento de arquivo que deveria ser usado pela ferramenta Migrações para Azure: Conteinerização de Aplicativo durante o processo de implantação. A ferramenta criará novos diretórios nesse compartilhamento de arquivo do Azure para copiar as pastas de aplicativo que estão configuradas para o armazenamento de Volume Persistente. Depois que a implantação do aplicativo for concluída, a ferramenta limpará o compartilhamento de arquivo do Azure com a exclusão dos diretórios que ela criou.

    • Se você não tem um compartilhamento de arquivo do Azure ou gostaria de criar outro compartilhamento de arquivo do Azure, pode escolher criá-lo na ferramenta selecionando Criar conta de armazenamento e compartilhamento de arquivo.
  4. Configuração da implantação do aplicativo: depois de concluir as etapas acima, você precisará 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 as seguintes personalizações:

    • Cadeia de caracteres de prefixo: especifique uma cadeia de caracteres de prefixo para usar no nome de todos os recursos criados para o aplicativo conteinerizado no cluster AKS.
    • Certificado SSL: se seu aplicativo requer uma associação de site HTTPS, especifique o arquivo PFX que contém o certificado a ser usado na associação. O arquivo PFX não deve ser protegido por senha e o site original não deve ter várias associações.
    • Conjunto de Réplicas: especifique o número de instâncias de aplicativo (pods) que deve ser executado dentro dos contêineres.
    • Tipo de balanceador de carga: selecione Externo se o aplicativo conteinerizado tiver que ser alcançado em redes públicas.
    • Configuração do aplicativo: em caso de configurações de aplicativo que tenham sido parametrizadas, informe os valores a serem usados na implantação atual.
    • Armazenamento: no caso de pastas do aplicativo que tenham sido configuradas para armazenamento de Volume Persistente, especifique se o volume deve ser compartilhado entre instâncias do aplicativo ou inicializados individualmente a cada instância do contêiner. Por padrão, todas as pastas de aplicativo em Volumes Persistentes são configuradas como compartilhadas.
    • Selecionar Aplicar para salvar a configuração de implantação.
    • Selecionar Continuar para implantar o aplicativo.

    Screenshot for deployment app configuration.

  5. Implantar o aplicativo: depois que a configuração de implantação do aplicativo for salva, a ferramenta gerará o YAML de implantação do Kubernetes para o aplicativo.

    • Selecionar Revisar para revisar e personalizar o YAML de implantação do Kubernetes para os aplicativos.

    • Selecione o aplicativo a ser implantado.

    • Selecionar Implantar para iniciar as implantações dos aplicativos selecionados

      Screenshot for app deployment configuration.

    • Após a implantação do aplicativo, você pode clicar na coluna Status de implantação para rastrear os recursos que foram implantados no aplicativo.

Baixar artefatos gerados

Todos os artefatos usados para criar e implantar o aplicativo no AKS, incluindo os arquivos de especificação YAML do Dockerfile e do Kubernetes, são armazenados no computador que executa a ferramenta. Os artefatos estão localizados em C:\ProgramData\Microsoft Azure Migrate App Containerization.

Uma única pasta é criada para cada servidor de aplicativos. Você poderá exibir e baixar todos os artefatos intermediários usados no processo de conteinerização ao navegar até essa pasta. A pasta, correspondente ao servidor de aplicativos, será limpa no início de cada execução da ferramenta em um servidor específico.

Solucionar problemas

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

Próximas etapas

  • Como conteinerizar aplicativos Web ASP.NET e implantá-los em contêineres do Windows no Serviço de Aplicativo. Saiba mais.
  • Como conteinerizar aplicativos Web Java no Apache Tomcat (em servidores Linux) e implantá-los em contêineres do Linux no AKS. Saiba mais.
  • Como conteinerizar aplicativos Web Java no Apache Tomcat (em servidores Linux) e implantá-los em contêineres do Linux no Serviço de Aplicativo. Saiba mais.