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

Cuidado

Este artigo faz referência ao CentOS, uma distribuição do Linux que está se aproximando do status de EOL (fim da vida útil). Considere seu uso e planejamento adequadamente. Para obter mais informações, veja a orientação CentOS End Of Life.

Neste artigo, você aprenderá a conteinerizar aplicativos Web Java (em execução no Apache Tomcat) e migrá-los para o Serviço de Aplicativo 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 maneira 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. Em seguida, o aplicativo conteinerizado pode ser implantado no Serviço de Aplicativo do Azure.

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

  • Como conteinerizar aplicativos Web em Java no Apache Tomcat (em servidores Linux) e implantá-los em contêineres do Linux no Serviço de Aplicativo.
  • Como conteinerizar aplicativos Web Java no Apache Tomcat e implantá-los em contêineres do Linux no AKS. Saiba mais.
  • Como conteinerizar aplicativos ASP.NET e implantá-los em contêineres do Windows no AKS. Saiba mais.
  • Como conteinerizar aplicativos ASP.NET e implantá-los em contêineres do Windows 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 Web Java (executado no Apache Tomcat) 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.
  • Implantar no Serviço de Aplicativo do Azure: a ferramenta gera os arquivos de implantação necessários para implantar o aplicativo conteinerizado no Serviço de Aplicativo do Azure.

Observação

A ferramenta 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: ao hospedar seus aplicativos em uma plataforma gerenciada moderna, como o AKS e Serviço de Aplicativo, você poderá 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 Web Java.
  • Compile a imagem de contêiner.
  • Implante o aplicativo conteinerizado no Serviço de Aplicativo.

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 Web Java 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.
Servidores de aplicativos Habilitar a conexão SSH (Secure Shell) na porta 22 dos servidores que executam os aplicativos Java a serem conteinerizados.
Aplicativo web Java A ferramenta atualmente dá suporte a:

– Aplicativos em execução no Tomcat 8 ou Tomcat 9.
- Servidores de aplicativos no Ubuntu Linux 16.04/18.04/20.04, Debian 7/8, CentOS 6/7, Red Hat Enterprise Linux 5/6/7.
– Aplicativos que usam Java 7 ou Java 8.
Se você tiver uma versão além dessas, localize uma imagem que dê suporte às versões necessárias e modifique o dockerfile para substituir a imagem

A ferramenta atualmente não dá suporte a:

– Servidores de aplicativos que executam várias instâncias do Tomcat

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.

    Caixa de pesquisa para pesquisar a assinatura do Azure.

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

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

  4. Em Verificar o acesso, procure a conta de usuário relevante.

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

    Pesquisar 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 em nosso exemplo). Clique em Save (Salvar).

    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é Microsoft Entra ID>Usuários>Configurações de Usuário. 9. Em Configurações de usuário, verifique se os usuários do Microsoft Entra podem registrar aplicativos (definido como Sim por padrão).

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

  1. Se as configurações de "Registros de aplicativo" estiverem definidas como "Não", solicite ao administrador global/de locatário que atribua as 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ê vir um aviso informando que sua conexão não é privada, clique em 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 credenciais, use a conta de administrador local no computador para entrar.

  4. Selecione Aplicativos Web em Java no Tomcat como o tipo de aplicativo que você deseja conteinerizar.

  5. Para especificar o serviço de destino do Azure, selecione Contêineres no Serviço de Aplicativo do Azure. Carga padrão para a ferramenta Conteinerização de Aplicativo.

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:
      • Clique em 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, clique em 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.
    • Habilitar o SSH (Secure Shell): a ferramenta perguntará se o SSH (Secure Shell) está habilitado nos servidores de aplicativo que estão executando os aplicativos Web Java que serão conteinerizados.

Entrar no Azure

Clique em Entrar para fazer logon na sua conta do Azure.

  1. Será necessário um código do dispositivo para a autenticação com o Azure. Ao clicar em Entrar, uma janela restrita é aberta com o código do dispositivo.

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

    Modal que mostra o código do dispositivo.

  3. Na nova guia, cole o código do dispositivo e conclua a entrada usando suas credenciais de conta do Azure. Feche a guia do navegador depois de concluir a entrada e volte à interface Web da ferramenta Conteinerização de Aplicativo.

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

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

Descobrir aplicativos Web Java

A ferramenta auxiliar Conteinerização de Aplicativo conecta-se 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 a serem usadas na conexão remota do servidor para fins de descoberta de aplicativo.

    • As credenciais fornecidas precisam ser para uma conta raiz (Linux) 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. Clique em Validar para verificar se o servidor de aplicativo 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.

    Captura de tela do IP e das credenciais do servidor.

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

    Captura de tela do aplicativo Web Java descoberto.

  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. Clique em Configuração de aplicativo para examinar as configurações detectadas.

  2. Marque a caixa de seleção para parametrizar as configurações do aplicativo detectado.

  3. Clique em Aplicar depois de selecionar as configurações a serem parametrizadas.

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

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 para armazenamento persistente por meio do compartilhamento de arquivos do Azure. O uso de armazenamento persistente externo funciona de forma ideal para aplicativos com estado que armazenam o estado fora do contêiner ou têm outros conteúdos estáticos armazenados no sistema de arquivos.

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

  5. Clique em Salvar depois de examinar as pastas do aplicativo. Captura de tela da escolha do armazenamento de volumes do aplicativo.

  6. Clique em Continuar para prosseguir até a fase de criação da imagem de contêiner.

Criar imagem de contêiner

  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.

    Captura de tela da escolha do ACR para o aplicativo.

Observação

São exibidos somente os registros de contêiner do Azure com o usuário administrador habilitado. No momento, a conta de administrador é necessária para implantar uma imagem de um registro de contêiner do Azure no Serviço de Aplicativo do Azure. Saiba mais.

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

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

  3. Processo de compilação do gatilho: selecione os aplicativos para os quais as imagens serão criadas e clique em Compilar. Clicar em 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 clicando no link Compilação em andamento na coluna de Status da compilação. O link leva alguns minutos para ficar ativo depois que o processo de compilação é disparado.

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

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

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

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

  1. Selecionar 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 plano para uso, crie-o com a ferramenta clicando em Criar plano do Serviço de Aplicativo.
    • Clique em Continuar depois de escolher o plano do Serviço de Aplicativo.
  2. Especifique o repositório secreto e o workspace de monitoramento: se você optou por parametrizar as configurações do aplicativo, especifique o repositório secreto a ser usado para o aplicativo. Você pode escolher as configurações de aplicativo do Azure Key Vault ou do Serviço de Aplicativo para gerenciar os segredos do aplicativo. Saiba mais.

    • Se você escolheu as configurações de aplicativo do Serviço de Aplicativo para gerenciar segredos, deve clicar em 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 desejar criar um, poderá optar por criá-lo por meio da ferramenta clicando em Criar.
      • A ferramenta atribuirá automaticamente as permissões necessárias para o gerenciamento de segredos por meio do Key Vault.
    • Workspace de monitoramento: se você optou por habilitar o monitoramento com o Application Insights, especifique o recurso do Application Insights que você deseja usar. Essa opção não estará 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 o compartilhamento de arquivo do Azure: se você adicionou mais diretórios/pastas e selecionou a opção de compartilhamento de arquivo do Azure para armazenamento persistente, especifique o compartilhamento de arquivo do Azure a ser usado pela ferramenta Migrações para Azure: Conteinerização de Aplicativo durante o processo de implantação. A ferramenta copiará os diretórios/pastas do aplicativo que estão configurados para os Arquivos do Azure e os montará no contêiner do aplicativo durante a implantação. 

    • 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 clicando em 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. Clique em Configurar para personalizar a implantação do aplicativo. Na etapa de configuração, você pode oferecer as seguintes personalizações:

    • Nome: especifique um nome exclusivo para o aplicativo. Esse nome será usado para gerar a URL do aplicativo e como um prefixo para outros recursos que estão sendo criados como parte dessa implantação.
    • Configuração do aplicativo: para configurações de aplicativo parametrizadas, informe os valores a serem usados na implantação atual.
    • Configuração de armazenamento: revise as informações de quaisquer diretórios/pastas do aplicativo que foram configurados para armazenamento persistente.

    Captura de tela da 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 Revisar para analisar a configuração de implantação dos aplicativos.

    • Selecione o aplicativo a ser implantado.

    • Clique em Implantar para iniciar as implantações dos aplicativos selecionados.

      Captura de tela da configuração de implantação do aplicativo.

    • Quando o aplicativo é implantado, você pode clicar na coluna Status de implantação para rastrear os recursos que foram implantados para o aplicativo.

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

Próximas etapas

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