Partilhar via


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. Saiba mais.
  • Containerização de aplicativos Web Java no Apache Tomcat (em servidores Linux) e sua implementação em contêineres Linux no AKS. Saiba mais.
  • 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. Saiba mais.

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 da aplicação é transferida para um Registro de Contêiner do Azure que especifica.
  • 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.

Observação

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. Saiba mais

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, você 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.

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 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:

Exigência Detalhes
Identificar uma máquina para instalar a ferramenta Uma máquina Windows para instalar e executar a ferramenta Azure Migrate: App Containerization. A máquina Windows pode ser um servidor (Windows Server 2016 ou posterior) ou um sistema operacional cliente (Windows 10), o que significa que a ferramenta também pode ser executada na área de trabalho.

A máquina Windows que executa a ferramenta deve ter conectividade de rede com os servidores/máquinas virtuais que hospedam os ASP.NET aplicativos a serem conteinerizados.

Verifique se o espaço de 6 GB está disponível na máquina Windows que executa a ferramenta Azure Migrate: App Containerization para armazenar artefatos de aplicativos.

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

Instale a ferramenta Microsoft Web Deploy na máquina que executa a ferramenta auxiliar de Conteinerização de Aplicativos e o servidor de aplicativos, 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 na máquina que executa a ferramenta auxiliar de Conteinerização de Aplicativos e o servidor de aplicativos, 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:
- Aplicativos que exigem autenticação do Windows (A ferramenta de conteinerização de aplicativos atualmente não suporta 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.

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 registrar aplicativos 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.

    Captura de ecrã da caixa de pesquisa para procurar a subscrição do Azure.

  2. Na página Subscrições, selecione a subscrição na qual pretende criar um projeto Azure Migrate.

  3. Selecione Controle de acesso (IAM).

  4. Selecione Adicionar>atribuição de função para ir à página Adicionar atribuição de funções .

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

    Cenário Valor
    Funções Proprietário
    Atribuir acesso a Utilizador
    Membros azmigrateuser (neste exemplo)

    Captura de ecrã da página de adicionar atribuição de funções no portal do Azure.

  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>Utilizadores>Definições do Utilizador.

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

    Captura de ecrã da verificação nas Definições do Utilizador se os utilizadores puderem registar aplicações do Ative Directory.

    Importante

    A Microsoft recomenda que utilize funções com o menor número de permissões. Isso ajuda a melhorar a segurança da sua organização. Administrador Global é uma função altamente privilegiada que deve ser limitada a cenários de emergência quando você não pode usar uma função existente.

  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. Saiba mais.

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

  1. Baixe o instalador do Azure Migrate: App Containerization em uma máquina 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 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.

    Captura de tela do carregamento padrão para a ferramenta de conteinerização de aplicativos.

Pré-requisitos completos da ferramenta

  1. Aceite os termos da licença e leia as informações de terceiros.
  2. Na aplicação web da ferramenta >Configurar pré-requisitos, siga 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 e iniciar sessão para copiar o código do dispositivo e abrir um prompt de início de sessão do Azure num novo separador do browser. Se não aparecer, verifique se desativou o bloqueador de pop-ups no browser.

    Captura de tela do modal mostrando o código do dispositivo.

  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.

    Captura de tela para IP e credenciais do servidor.

  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.

    Captura de tela para o aplicativo ASP.NET descoberto.

  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.

    Captura de ecrã para parametrização da configuração do aplicativo ASP.NET.

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. Saiba mais.

  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. Captura de tela para seleção de armazenamento de volumes de aplicativos.

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

Criar imagem de contêiner

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.

    Captura de tela para a seleção ACR do aplicativo.

  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. Iniciar processo de construção: Selecione os aplicativos para os quais criar imagens e selecione Construir. 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.

    Captura de tela para a conclusão da compilação da imagem do contêiner do aplicativo.

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. Saiba mais

    • 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:

    • Prefixo: especifique um prefixo a ser utilizado no nome para todos os recursos criados para a aplicação em contentor 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.

    Captura de tela para a configuração do aplicativo de implantação.

  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

      Captura de tela para a configuração de implantação do aplicativo.

    • 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.

Solucionar 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. Saiba mais.
  • Containerização de aplicativos web Java no Apache Tomcat (em servidores Linux) e sua implementação em contêineres Linux no AKS. Saiba mais.
  • 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. Saiba mais.