ASP.NET conteinerização e migração de aplicativos para o Serviço Kubernetes do Azure

Neste artigo, você aprenderá como fazer contêineres ASP.NET aplicativos e migrá-los para o Serviço Kubernetes do Azure (AKS) usando a ferramenta Azure Migrate: App Containerization. O processo de conteinerização não requer acesso à sua base de código e fornece uma maneira fácil de conteinerizar aplicativos existentes. A ferramenta funciona usando o estado de execução dos aplicativos em um servidor para determinar os componentes do aplicativo e ajuda a empacotá-los em uma imagem de contêiner. O aplicativo em contêiner pode ser implantado no Serviço Kubernetes do Azure (AKS).

Atualmente, a ferramenta Azure Migrate: App Containerization suporta:

  • Contentorizar ASP.NET aplicações e implementá-las em contentores do Windows no Serviço Kubernetes do Azure.
  • Contentorizar aplicações ASP.NET e implementá-las em contentores do Windows no Serviço de Aplicações do Azure. Mais informações.
  • Containerização de aplicativos Web Java no Apache Tomcat (em servidores Linux) e sua implementação em contêineres Linux no AKS. Mais informações.
  • Containerização de aplicativos Web Java no Apache Tomcat (em servidores Linux) e sua implementação em contêineres Linux no Serviço de Aplicativo. Mais informações.

A ferramenta Azure Migrate: App Containerization ajuda você a:

  • Descubra seu aplicativo: a ferramenta se conecta remotamente aos servidores de aplicativos que executam seu aplicativo ASP.NET e descobre os componentes do aplicativo. A ferramenta cria um Dockerfile que pode ser usado para criar uma imagem de contêiner para o aplicativo.
  • Criar a imagem do contêiner: você pode inspecionar e personalizar ainda mais o Dockerfile de acordo com os requisitos do aplicativo e usá-lo para criar a imagem do contêiner do aplicativo. A imagem do contêiner do aplicativo é enviada por push para um Registro de Contêiner do Azure que você especificar.
  • Implantar no Serviço Kubernetes do Azure: a ferramenta gera os arquivos YAML de definição de recursos do Kubernetes necessários para implantar o aplicativo em contêiner no cluster do Serviço Kubernetes do Azure. Você pode personalizar os arquivos YAML e usá-los para implantar o aplicativo no AKS.

Nota

A ferramenta Azure Migrate: App Containerization ajuda você a descobrir tipos de aplicativos específicos (ASP.NET e aplicativos Web 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 máquinas locais, use o Azure Migrate: capacidade de descoberta e avaliação. Mais informações

Embora todos os aplicativos não 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 reescrever incluem:

  • Melhor utilização da infraestrutura - Com contêineres, vários aplicativos podem compartilhar recursos e ser hospedados na mesma infraestrutura. Isso pode ajudá-lo a consolidar a infraestrutura e melhorar a utilização.
  • Gerenciamento simplificado - Ao hospedar seus aplicativos em uma plataforma gerenciada moderna, como AKS e App Service, você pode simplificar suas práticas de gerenciamento. Você pode conseguir isso aposentando ou reduzindo os processos de manutenção e gerenciamento de infraestrutura que tradicionalmente executaria com a infraestrutura própria.
  • Portabilidade de aplicativos - Com o aumento da adoção e padronização de formatos e plataformas de especificação de contêineres, a portabilidade de aplicativos não é mais uma preocupação.
  • Adote o gerenciamento moderno com DevOps - Ajuda você a adotar e padronizar práticas modernas de gerenciamento e segurança e transição para DevOps.

Neste tutorial, irá aprender a:

  • Configure uma conta do Azure.
  • Instale a ferramenta Azure Migrate: App Containerization.
  • Descubra o seu ASP.NET aplicação.
  • Crie a imagem do contêiner.
  • Implante o aplicativo em contêiner no AKS.

Nota

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 utilizam opções predefinidas sempre que possível e não mostram todas as definições e caminhos possíveis.

Pré-requisitos

Antes de começar este tutorial, tem de:

Requisito Detalhes
Identificar uma máquina para instalar a ferramenta Um computador Windows para instalar e executar a ferramenta do Azure Migrate: Contentorização de Aplicações. O computador Windows pode ser um sistema operativo de servidor (Windows Server 2016 ou posterior) ou cliente (Windows 10), o que significa que a ferramenta também pode ser executada no seu computador.

A máquina virtual do Windows que executa a ferramenta deve ter conectividade de rede com os servidores/máquinas virtuais que estão a alojar as aplicações ASP.NET que serão contentorizadas.

Confirme que o computador Windows que executa a ferramenta do Azure Migrate: Contentorização de Aplicações, tem 6 GB de espaço disponível para armazenar artefactos de aplicações.

A máquina virtual do Windows deve ter acesso à Internet, diretamente ou através de um proxy.

Instale a ferramenta Microsoft Web Deploy no computador que está a executar a ferramenta auxiliar de contentorização de aplicações e o servidor de aplicações, se ainda não estiver instalada. Você pode baixar a ferramenta aqui.
Servidores de aplicativos Habilitar 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.

Certifique-se de que o PowerShell 5.1 está instalado no servidor de aplicações. 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 Microsoft Web Deploy no computador que está a executar a ferramenta auxiliar de contentorização de aplicações e o servidor de aplicações, se ainda não estiver instalada. Você pode baixar a ferramenta aqui.
ASP.NET aplicação Atualmente, a ferramenta suporta:
- ASP.NET aplicações utilizando 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 executados no Internet Information Services (IIS) 7.5 ou posterior.

A ferramenta atualmente não suporta:
- Aplicações que requerem autenticação do Windows (a ferramenta de contentorização de aplicações atualmente não suporta um gMSA).
- Aplicações que dependem de outros serviços Windows alojados fora do IIS.

Preparar uma conta de usuário do Azure

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

Depois que 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 registar aplicações Microsoft Entra.

Se acabou de criar uma conta gratuita do Azure, é o proprietário da sua subscrição. 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, procure "subscrições" e, em Serviços, selecione Subscrições.

    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 do Azure Migrate.

  3. Selecione Controlo de acesso (IAM) .

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

  5. Atribua a seguinte função. Para obter etapas detalhadas, consulte Atribuindo funções do Azure usando o portal do Azure.

    Definição Valor
    Função Proprietário
    Atribuir acesso a User
    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é Configurações do Usuário dos Usuários>do Microsoft Entra ID>.

  8. Em Configurações do usuário, verifique se os usuários do Microsoft Entra podem registrar aplicativos (definido 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 aplicativos' estejam definidas como 'Não', solicite ao inquilino/administrador global que atribua a permissão necessária. Como alternativa, o inquilino/administrador global pode atribuir a função de Desenvolvedor de Aplicativos a uma conta para permitir o registro do Microsoft Entra App. Mais informações.

Transferir e instalar o Azure Migrate: ferramenta de contentorização de aplicações

  1. Transfira o instalador do Azure Migrate: Contentorização de Aplicações num 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
    

Nota

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

Inicie a ferramenta de conteinerização de aplicativos

  1. Abra um navegador em qualquer máquina que possa se conectar à máquina Windows que executa a ferramenta de conteinerização de aplicativos e abra a URL da ferramenta: https:// nome da máquina ou endereço IP: 44369.

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

  2. Se vir um aviso a indicar que a sua ligação não é privada, selecione Avançadas e opte por prosseguir para o Web site. Esse aviso aparece quando a interface da Web usa um certificado TLS/SSL autoassinado.

  3. Na tela Entrar, use a conta de administrador local na máquina para entrar.

  4. Selecione ASP.NET aplicativos Web como o tipo de aplicativo que você deseja colocar em contêineres.

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

    Screenshot of default load-up for App Containerization tool.

Pré-requisitos completos da ferramenta

  1. Aceite os termos da licença e leia as informações de terceiros.
  2. No aplicativo >Web da ferramenta Configurar pré-requisitos, execute as seguintes etapas:
    • Conectividade: A ferramenta verifica se a máquina Windows tem acesso à Internet. Se a máquina usa um proxy:
      • Selecione Configurar proxy para especificar o endereço proxy (no formato endereço IP ou FQDN) e a porta de escuta.
      • Especifique as credenciais se o proxy precisar de autenticação.
      • Apenas é suportado o proxy HTTP.
      • Se você adicionou detalhes de proxy ou desabilitou o proxy e/ou autenticação, selecione Salvar para acionar a verificação de conectividade novamente.
    • Instalar atualizações: A ferramenta verificará automaticamente as atualizações mais recentes e instalá-las. Você também pode instalar manualmente a versão mais recente da ferramenta a partir daqui.
    • Instalar a ferramenta Microsoft Web Deploy: a ferramenta verificará se a ferramenta Microsoft Web Deploy está instalada na máquina Windows que executa a ferramenta Azure Migrate: App Containerization.
    • Habilitar a comunicação remota do PowerShell: a ferramenta informará você para garantir que a comunicação remota do PowerShell esteja habilitada nos servidores de aplicativos que executam os ASP.NET aplicativos a serem conteinerizados.

Iniciar sessão no Azure

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

  2. Você precisará de um código de dispositivo para autenticar com o Azure. Selecionar Entrar abrirá um modal com o código do dispositivo.

  3. Selecione Copiar código & entrar para copiar o código do dispositivo e abrir um prompt de entrada do Azure em uma nova guia do navegador. Se não aparecer, certifique-se de que desativou 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 o logon usando suas credenciais de conta do Azure. Você pode fechar a guia do navegador depois que o login for concluído e retornar à tela da ferramenta de conteinerização de aplicativos.

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

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

Descubra ASP.NET aplicações

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

  1. Especifique o endereço IP/FQDN e as credenciais do servidor que executa o aplicativo ASP.NET que deve ser usado para se conectar remotamente ao servidor para descoberta de aplicativos.

    • As credenciais introduzidas devem ser de um administrador local (Windows) no servidor de aplicações.
    • Para contas de domínio (o usuário deve ser um administrador no servidor de aplicativos), prefixe o nome de usuário com o nome de domínio no formato <domínio\nome> de usuário.
    • Você pode executar a descoberta de aplicativos para até cinco servidores ao mesmo tempo.
  2. Selecione Validar para verificar se o servidor de aplicativos está acessível a partir da máquina que executa a ferramenta e se as credenciais são válidas. Após a validação bem-sucedida, a coluna de status mostrará o status como Mapeado.

    Screenshot for server IP and credentials.

  3. Selecione Continuar para iniciar a descoberta de aplicativos nos servidores de aplicativos 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 selecionar os aplicativos a serem conteinerizados.

  6. Especificar nome do contêiner: especifique um nome para o contêiner de destino para cada aplicativo selecionado. O nome do contêiner deve ser especificado como <name:tag> , onde a tag é usada para a imagem do contêiner. Por exemplo, você pode especificar o nome do contêiner de destino como appname:v1.

Parametrizar configurações de aplicativos

Parametrizar a configuração a torna disponível como um parâmetro de tempo de implantação. Isso permite que você defina essa configuração durante a implantação do aplicativo, em vez de codificá-lo para um valor específico na imagem do contêiner. Por exemplo, essa opção é útil para parâmetros como cadeias de conexão de banco de dados.

  1. Selecione as configurações do aplicativo para revisar as configurações detetadas.

  2. Marque a caixa de seleção para parametrizar as configurações de aplicativos detetadas.

  3. Selecione Aplicar depois de selecionar 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 que seu aplicativo usa. Especifique se eles devem fazer parte da imagem do contêiner ou devem ser externalizados por meio de volumes persistentes no compartilhamento de arquivos do Azure. O uso de volumes persistentes funciona muito bem para aplicativos com monitoração de estado que armazenam o estado fora do contêiner ou têm outro conteúdo estático armazenado no sistema de arquivos. Mais informações.

  1. Selecione Editar em Pastas de aplicativos para revisar as pastas de aplicativos detetadas. As pastas de aplicativos detetadas foram identificadas como artefatos obrigatórios necessários para o aplicativo e serão copiadas para a imagem do contêiner.

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

  3. Para adicionar várias pastas ao mesmo volume, forneça valores separados por vírgula (,).

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

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

  6. Selecione Continuar para prosseguir para a fase de compilação da imagem do contêiner.

Criar imagem de contentor

Importante

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

Altere 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 criar uma imagem de contêiner, siga estas etapas:

  1. Selecione Registro de Contêiner do Azure: use a lista suspensa para selecionar um Registro de Contêiner do Azure que será usado para criar e armazenar as imagens de contêiner para os aplicativos. Você pode usar um Registro de Contêiner do Azure existente ou optar por criar um novo usando a opção Criar novo Registro.

    Screenshot for app ACR selection.

  2. Revise 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 Revisão para revisar o Dockerfile. Você também pode adicionar 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 de gatilho: selecione os aplicativos para os quais criar imagens e selecione Compilar. Selecionar build iniciará a compilação de imagem de contêiner para cada aplicativo. A ferramenta continua monitorando o status da compilação continuamente e permitirá 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 Compilar em andamento na coluna de status. O link leva alguns minutos para ficar ativo depois que você aciona o processo de compilação.

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

    Screenshot for app container image build completion.

Implantar o aplicativo em contêineres no AKS

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

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

    • O cluster AKS selecionado deve ter um pool de nós do Windows.
    • O cluster deve ser configurado para permitir a extração de imagens do Registro de Contêiner do Azure que foi selecionado para armazenar as imagens.
      • Execute o seguinte comando 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 tiver um cluster AKS ou quiser criar um novo cluster AKS para implantar o aplicativo, você pode optar por criar na ferramenta selecionando Criar novo 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 que ele extraia imagens do Registro de Contêiner do Azure que foi criado anteriormente (se a opção criar novo Registro tiver sido escolhida).
    • Selecione Continuar depois de selecionar o cluster AKS.
  2. Especificar armazenamento secreto: se você tiver optado por parametrizar as configurações do aplicativo, especifique o armazenamento secreto a ser usado para o aplicativo. Você pode escolher as configurações do Azure Key Vault ou do aplicativo do Serviço de Aplicativo para gerenciar seus segredos de aplicativo. Mais informações

    • Se você selecionou as configurações do aplicativo do Serviço de Aplicativo para gerenciar segredos, selecione Continuar.
    • Se você quiser usar um Cofre da Chave do Azure para gerenciar seus segredos de aplicativo, especifique o Cofre da Chave do Azure que deseja usar.
      • Se não tiver um Cofre da Chave do Azure ou quiser criar um novo Cofre da Chave, pode optar por criar a partir da ferramenta selecionando Criar novo Cofre da Chave do Azure.
      • A ferramenta atribuirá automaticamente as permissões necessárias para gerenciar segredos através do Cofre de Chaves.
  3. Especifique o compartilhamento de arquivos do Azure: se você adicionou mais pastas e selecionou a opção Volume Persistente, especifique o compartilhamento de arquivos do Azure que deve ser usado pela ferramenta Azure Migrate: App Containerization durante o processo de implantação. A ferramenta criará novos diretórios neste compartilhamento de arquivos do Azure para copiar as pastas de aplicativos configuradas para armazenamento de Volume Persistente. Quando a implantação do aplicativo estiver concluída, a ferramenta limpará o compartilhamento de arquivos do Azure excluindo os diretórios criados.

    • Se você não tiver um compartilhamento de arquivos do Azure ou quiser criar um novo compartilhamento de arquivos do Azure, poderá optar por criar na ferramenta selecionando Criar nova Conta de Armazenamento e compartilhamento de arquivos.
  4. Configuração de implantação de aplicativo: Depois de concluir as etapas acima, você precisará especificar a configuração de implantação para o aplicativo. Selecione Configurar para personalizar a implantação do aplicativo. Na etapa de configuração, você pode fornecer as seguintes personalizações:

    • String de prefixo: especifique uma string de prefixo a ser usada no nome para todos os recursos criados para o aplicativo em contêiner no cluster AKS.
    • Certificado SSL: Se seu aplicativo exigir uma associação de site https, especifique o arquivo PFX que contém o certificado a ser usado para a associação. O arquivo PFX não deve ser protegido por senha e o site original não deve ter várias associações.
    • Conjuntos de réplicas: especifique o número de instâncias de aplicativos (pods) que devem ser executadas dentro dos contêineres.
    • Tipo de balanceador de carga: Selecione Externo se o aplicativo conteinerizado deve ser acessível a partir de redes públicas.
    • Configuração do aplicativo: Para todas as configurações de aplicativo que foram parametrizadas, forneça os valores a serem usados para a implantação atual.
    • Armazenamento: para quaisquer pastas de aplicativos configuradas para armazenamento de Volume Persistente, especifique se o volume deve ser compartilhado entre instâncias de aplicativo ou deve ser inicializado individualmente com cada instância no contêiner. Por padrão, todas as pastas de aplicativos em Volumes Persistentes são configuradas como compartilhadas.
    • Selecione Aplicar para salvar a configuração de implantação.
    • Selecione 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.

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

    • Selecione o aplicativo a ser implantado.

    • Selecione Implantar para iniciar implantações para os aplicativos selecionados

      Screenshot for app deployment configuration.

    • Depois que o aplicativo for implantado, você poderá selecionar a coluna Status da implantação para controlar os recursos que foram implantados para o aplicativo.

Baixar artefatos gerados

Todos os artefatos usados para criar e implantar o aplicativo no AKS, incluindo os arquivos de especificação Dockerfile e Kubernetes YAML, são armazenados na máquina 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ê pode visualizar e baixar todos os artefatos intermediários usados no processo de conteinerização navegando até esta pasta. A pasta, correspondente ao servidor de aplicativos, será limpa no início de cada execução da ferramenta para um servidor específico.

Resolver problemas

Para solucionar problemas com a ferramenta, você pode examinar os arquivos de log na máquina Windows que executa a ferramenta de conteinerização de aplicativos. Os arquivos de log da ferramenta estão localizados na pasta C:\ProgramData\Microsoft Azure Migrate App Containerization\Logs .

Próximos passos

  • Contentorizar ASP.NET aplicações Web e implementá-las em contentores do Windows no Serviço de Aplicações. Mais informações.
  • Containerização de aplicativos web Java no Apache Tomcat (em servidores Linux) e sua implementação em contêineres Linux no AKS. Mais informações.
  • Containerização de aplicativos Web Java no Apache Tomcat (em servidores Linux) e sua implementação em contêineres Linux no Serviço de Aplicativo. Mais informações.