Conteinerização e migração de aplicativos Web Java para o Serviço de Aplicativo do Azure

Atenção

Este artigo faz referência ao CentOS, uma distribuição Linux que está se aproximando do status de Fim da Vida Útil (EOL). Por favor, considere o seu uso e planejamento de acordo. Para obter mais informações, consulte as diretrizes de Fim da Vida Útil do CentOS.

Neste artigo, você aprenderá como colocar em contêineres aplicativos Web Java (em execução no Apache Tomcat) e migrá-los para o Serviço de Aplicativo do Azure 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 de Aplicativo do Azure.

Atualmente, a ferramenta Azure Migrate: App Containerization suporta:

  • Containerização de Java Web Apps no Apache Tomcat (em servidores Linux) e sua implementação em contêineres Linux no Serviço de Aplicativo.
  • Containerização de Java Web Apps no Apache Tomcat (em servidores Linux) e sua implementação em contêineres Linux no AKS. Mais informações.
  • Contentorizar aplicações ASP.NET e implementá-las em contentores do Windows no AKS. Mais informações.
  • Contentorizar aplicações ASP.NET e implementá-las em contentores do Windows no Serviço de Aplicações. 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 Web Java (em execução no Apache Tomcat) 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 de Aplicativo do Azure: a ferramenta gera os arquivos de implantação necessários para implantar o aplicativo em contêiner no Serviço de Aplicativo do Azure.

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 a sua aplicação Web Java.
  • Crie a imagem do contêiner.
  • Implante o aplicativo em contêiner no Serviço de Aplicativo.

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.

O computador Windows que executa a ferramenta deve ter conectividade de rede com os servidores/máquinas virtuais que estão a alojar as aplicações Web Java 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.
Servidores de aplicativos Habilite a conexão Secure Shell (SSH) na porta 22 no(s) servidor(es) que executa(m) a(s) aplicação(ões) Java(s) a ser conteinerizada(s).
Aplicação Web Java Atualmente, a ferramenta suporta:

- Aplicativos rodando no Tomcat 8 ou Tomcat 9.
- Servidores de aplicações no Ubuntu Linux 16.04/18.04/20.04, Debian 7/8, CentOS 6/7, Red Hat Enterprise Linux 5/6/7.
- Aplicações utilizando Java 7 ou Java 8.
Se você tiver uma versão fora disso, encontre uma imagem que suporte suas versões necessárias e modifique o dockerfile para substituir a imagem

A ferramenta atualmente não suporta:

- Servidores de aplicativos executando várias instâncias Tomcat

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.

    Caixa de pesquisa para procurar a subscrição do Azure.

  2. Na página Assinaturas, selecione a assinatura na qual você deseja criar um projeto do Azure Migrate.

  3. Na assinatura, selecione Controle de acesso (IAM)>Verificar acesso.

  4. Em Verificar acesso, procure a conta de utilizador relevante.

  5. Em Adicionar uma atribuição de função, clique em Adicionar.

    Procure uma conta de usuário para verificar o acesso e atribuir uma função.

  6. Em Adicionar atribuição de função, selecione a função Proprietário e selecione a conta (azmigrateuser no nosso exemplo). Clique em Guardar.

    Abre a página Adicionar atribuição de função para atribuir uma função à conta.

Sua conta do Azure também precisa de permissões para registrar aplicativos do Microsoft Entra. 8. No portal do Azure, navegue até Configurações do Usuário dos Usuários>do Microsoft Entra ID>. 9. Em Configurações do usuário, verifique se os usuários do Microsoft Entra podem registrar aplicativos (definido como Sim por padrão).

Verifique em Configurações do usuário se os usuários podem registrar aplicativos do Ative Directory.

  1. Caso a configuração 'Registros de aplicativos' esteja definida como 'Não', solicite ao locatário/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, clique em 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 de entrada, use a conta de administrador local na máquina para entrar.

  4. Selecione Aplicativos Web Java no Tomcat 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 de Aplicativo do Azure. 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. 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:
      • Clique em 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, clique em 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.
    • Ativar Secure Shell (SSH): A ferramenta irá informá-lo para garantir que o Secure Shell (SSH) esteja ativado nos servidores de aplicativos que executam os aplicativos Web Java a serem conteinerizados.

Iniciar sessão no Azure

Clique em Entrar para entrar na sua conta do Azure.

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

  2. Clique em 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.

    Modal mostrando o código do dispositivo.

  3. 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 à interface da Web da ferramenta de conteinerização de aplicativos.

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

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

Descubra aplicações Web Java

A ferramenta auxiliar de conteinerização de aplicativos se conecta remotamente aos servidores de aplicativos usando as credenciais fornecidas e tenta descobrir aplicativos Web Java (em execução no Apache Tomcat) hospedados nos servidores de aplicativos.

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

    • As credenciais fornecidas devem ser para uma conta raiz (Linux) no servidor de aplicativos.
    • 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 de cada vez.
  2. Clique em 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. Clique em 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 a aplicação Web Java descoberta.

  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. Clique em 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. Clique em Aplicar depois de selecionar as configurações a serem parametrizadas.

    Captura de tela para parametrização da configuração do aplicativo Java.

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 se devem ser externalizados para o armazenamento persistente por meio do compartilhamento de arquivos do Azure. O uso de armazenamento persistente externo 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.

  1. Clique em 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. Clique em 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 Compartilhamento de arquivos do Azure como a opção de armazenamento se desejar que as pastas sejam armazenadas fora do contêiner no armazenamento persistente.

  5. Clique em Salvar depois de revisar as pastas do aplicativo. Captura de tela para seleção de armazenamento de volumes de aplicativos.

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

Criar imagem de contentor

  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.

Nota

Somente registros de contêiner do Azure com usuário administrador habilitado são exibidos. A conta de administrador é atualmente necessária para implantar uma imagem de um registro de contêiner do Azure no Serviço de Aplicativo do Azure. Mais informações.

  1. 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. Clique em Rever para rever 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.

  2. Configurar o Application Insights: você pode habilitar o monitoramento para seus aplicativos Java em execução no Serviço de Aplicativo sem instrumentar seu código. A ferramenta instalará o agente autônomo Java como parte da imagem do contêiner. Uma vez configurado durante a implementação, o agente Java coletará automaticamente uma infinidade de solicitações, dependências, logs e métricas para seu aplicativo que podem ser usados para monitoramento com o Application Insights. Esta opção é ativada por padrão para todos os aplicativos Java.

  3. Processo de compilação de gatilho: selecione os aplicativos para os quais criar imagens e clique em Compilar. Clicar em Build iniciará a compilação da imagem do 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 clicando no link Compilar em andamento na coluna Status da compilação . 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, clique em 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êiner no Serviço de Aplicativo do Azure

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

  1. Selecione o plano do Serviço de Aplicativo do Azure: especifique o plano do Serviço de Aplicativo do Azure que o aplicativo deve usar.

    • Se você não tiver um plano do Serviço de Aplicativo ou quiser criar um novo plano do Serviço de Aplicativo para usar, poderá optar por criar um a partir da ferramenta clicando em Criar novo plano do Serviço de Aplicativo.
    • Clique em Continuar depois de selecionar o plano do Serviço de Aplicativo.
  2. Especificar armazenamento secreto e espaço de trabalho de monitoramento: 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, clique em 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 um a partir da ferramenta clicando em Criar novo.
      • A ferramenta atribuirá automaticamente as permissões necessárias para gerenciar segredos através do Cofre de Chaves.
    • Espaço de trabalho de monitoramento: se você selecionou habilitar o monitoramento com o Application Insights, especifique o recurso do Application Insights que deseja usar. Essa opção não ficará visível se você tiver desabilitado a integração de monitoramento.
      • Se você não tiver um recurso do Application Insights ou quiser criar um novo recurso, poderá optar por criar a partir da ferramenta clicando em Criar novo.
  3. Especificar compartilhamento de arquivos do Azure: se você adicionou mais diretórios/pastas e selecionou a opção de compartilhamento de arquivos do Azure para armazenamento persistente, especifique o compartilhamento de arquivos do Azure a ser usado pela ferramenta Azure Migrate: App Containerization durante o processo de implantação. A ferramenta copiará os diretórios/pastas de aplicativos configurados para Arquivos do Azure e os montará no contêiner do aplicativo durante a implantação. 

    • Se não tiver uma partilha de ficheiros do Azure ou pretender criar uma nova partilha de ficheiros do Azure, pode optar por criar a partir da ferramenta clicando em Criar nova Conta de Armazenamento e partilha de ficheiros.
  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. Clique em Configurar para personalizar a implantação do aplicativo. Na etapa de configuração, você pode fornecer as seguintes personalizações:

    • Nome: especifique um nome de aplicativo exclusivo para o aplicativo. Esse nome será usado para gerar a URL do aplicativo e usado como um prefixo para outros recursos que estão sendo criados como parte dessa implantação.
    • 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.
    • Configuração de armazenamento: revise as informações de todos os diretórios/pastas de aplicativos que foram configurados para armazenamento persistente.

    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.

    • Clique em Rever para rever a configuração de implementação das aplicações.

    • Selecione o aplicativo a ser implantado.

    • Clique em 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á clicar na coluna Status da implantação para controlar os recursos que foram implantados para o aplicativo.

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 disponíveis na pasta C:\ProgramData\Microsoft Azure Migrate App Containerization\Logs .

Próximos passos

  • 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
  • Contentores ASP.NET aplicações Web e implementação em contentores do Windows no AKS. Mais informações
  • Contentorizar ASP.NET aplicações Web e implementá-las em contentores do Windows no Serviço de Aplicações do Azure. Mais informações