Partilhar via


Implementar manualmente um aplicativo Java com o Open Liberty/WebSphere Liberty em um cluster do Azure Red Hat OpenShift

Este artigo fornece orientação manual passo a passo para executar o Open/WebSphere Liberty em um cluster do Azure Red Hat OpenShift. Ele orienta você na preparação de um aplicativo Liberty, na criação da imagem do Docker do aplicativo e na execução do aplicativo em contêiner em um cluster do Azure Red Hat OpenShift.

Especificamente, você aprenderá a realizar as seguintes tarefas:

  • Preparar a aplicação Liberty
  • Criar a imagem do aplicativo
  • Execute o aplicativo em contêiner em um cluster do Azure Red Hat OpenShift usando a GUI e a CLI

Para obter uma solução mais automatizada que acelera sua jornada para o cluster do Azure Red Hat OpenShift, consulte Implementar o IBM WebSphere Liberty e o Open Liberty no Azure Red Hat OpenShift usando a oferta do Azure Marketplace.

Para obter mais informações sobre o Open Liberty, consulte a página do projeto Open Liberty. Para obter mais informações sobre o WebSphere Liberty, consulte a página do produto WebSphere Liberty.

Este artigo destina-se a ajudá-lo a chegar rapidamente à implantação. Antes de ir para a produção, você deve explorar Tuning Liberty.

Se você estiver interessado em fornecer comentários ou trabalhar em estreita colaboração em seus cenários de migração com a equipe de engenharia que desenvolve soluções WebSphere on Azure, preencha esta breve pesquisa sobre migração do WebSphere e inclua suas informações de contato. A equipe de gerentes de programa, arquitetos e engenheiros entrará prontamente em contato com você para iniciar uma estreita colaboração.

Importante

Embora o Azure Red Hat OpenShift seja projetado, operado e suportado conjuntamente pela Red Hat e pela Microsoft para fornecer uma experiência de suporte integrada, o software executado sobre o Azure Red Hat OpenShift, incluindo o descrito neste artigo, está sujeito aos seus próprios termos de suporte e licença. Para obter mais informações sobre o suporte para o Azure Red Hat OpenShift, consulte Ciclo de vida do suporte para o Azure Red Hat OpenShift 4. Para obter mais informações sobre o suporte para o software descrito neste artigo, consulte as páginas principais desse software, conforme listado no artigo.

Nota

O Azure Red Hat OpenShift requer, pelo menos, 40 núcleos para criar e executar um cluster do OpenShift. A cota de recursos padrão do Azure para uma nova assinatura do Azure não atende a esse requisito. Para solicitar um aumento no limite de recursos, consulte Cota padrão: aumentar limites por série de VMs. Observe que a assinatura de avaliação gratuita não é qualificada para um aumento de cota, atualize para uma assinatura pré-paga antes de solicitar um aumento de cota.

Pré-requisitos

  • Uma máquina local com sistema operacional Unix-like instalado - por exemplo, Ubuntu, macOS ou Windows Subsystem para Linux.

  • Uma implementação Java Standard Edition (SE), versão 17 ou posterior - ou exemplo, Eclipse Open J9.

  • Maven, versão 3.9.8 ou superior.

  • Docker para seu sistema operacional.

  • CLI do Azure, versão 2.61.0 ou posterior.

  • Um cluster do Azure Red Hat OpenShift 4. Para criar o cluster, siga as instruções em Criar um cluster do Azure Red Hat OpenShift 4 usando as seguintes instruções:

    • Embora a etapa "Obter um segredo de pull da Red Hat" esteja rotulada como opcional, ela é necessária para este artigo. O segredo de pull permite que seu cluster do Azure Red Hat OpenShift encontre o Open Liberty Operator.

    • As seguintes variáveis de ambiente definidas em Criar um cluster do Azure Red Hat OpenShift 4 são usadas posteriormente neste artigo:

      • RESOURCEGROUP - O nome do grupo de recursos no qual o cluster está implantado.
      • CLUSTER- o nome do cluster.
    • Se você planeja executar aplicativos que consomem muita memória no cluster, especifique o tamanho adequado da máquina virtual para os nós de trabalho usando o --worker-vm-size parâmetro. Para obter mais informações, consulte os seguintes artigos:

  • Conecte-se ao cluster seguindo as etapas em Conectar-se a um cluster do Azure Red Hat OpenShift 4 usando as seguintes instruções:

    • Certifique-se de seguir as etapas em "Instalar a CLI do OpenShift" porque você usa o comando mais adiante oc neste artigo.
    • Salve de lado a URL do console do cluster. Deve parecer com https://console-openshift-console.apps.<random>.<region>.aroapp.io/.
    • Tome nota das kubeadmin credenciais.
    • Certifique-se de seguir as etapas em "Conectar usando a CLI OpenShift" com as kubeadmin credenciais.

Instale o operador Open Liberty OpenShift

Depois de criar e conectar-se ao cluster, use as etapas a seguir para instalar o Open Liberty Operator. A página inicial principal do Open Liberty Operator está no GitHub.

  1. Inicie sessão na consola Web OpenShift a partir do seu browser utilizando as kubeadmin credenciais.

  2. Navegue até Operators>OperatorHub e procure por Open Liberty.

  3. Selecione Abrir Liberty nos resultados da pesquisa.

  4. Selecione Instalar.

  5. Na página Operador de Instalação , use as seguintes etapas:

    1. Para Canal de atualização, selecione o canal mais recente v1.3.
    2. Para o modo de instalação, seelct Todos os namespaces no cluster (padrão).
    3. Para Aprovação de atualização, selecione Automático.

    Captura de tela do console da Web OpenShift que mostra a página Instalar Operador.

  6. Selecione Instalar e aguarde um ou dois minutos até que a instalação seja concluída.

  7. Observe que o Open Liberty Operator está instalado com sucesso e pronto para uso. Se não estiver pronto, diagnostique e resolva o problema antes de continuar.

    Captura de tela do console da Web OpenShift que mostra a caixa de diálogo Operador instalado.

Nota

Este guia instala o Open Liberty Operator para gerenciar aplicativos Liberty no cluster do Azure Red Hat OpenShift. Se desejar usar o WebSphere Liberty Operator, siga as etapas em Instalando o operador WebSphere Liberty para instalar o WebSphere Liberty Operator no cluster.

Criar um namespace OpenShift para o aplicativo Java

Use as seguintes etapas para criar um namespace OpenShift para uso com seu aplicativo:

  1. Certifique-se de que iniciou sessão na consola Web OpenShift a partir do seu browser utilizando as kubeadmin credenciais.

  2. Navegue até Administration>Namespaces>Create Namespace.

  3. Preencha open-liberty-demo para Nome e selecione Criar, conforme mostrado a seguir.

    Captura de tela do console da Web OpenShift que mostra a caixa de diálogo Criar namespace.

Criar um Banco de Dados do Azure para o Servidor Flexível MySQL

O modelo de implantação do Banco de Dados do Azure para Servidor Flexível MySQL é um modo de implantação projetado para fornecer controle e flexibilidade mais granulares sobre funções de gerenciamento de banco de dados e definições de configuração do que o modo de implantação de servidor único do Banco de Dados do Azure para MySQL. Esta seção mostra como criar um Banco de Dados do Azure para a instância do Servidor Flexível MySQL usando a CLI do Azure. Para obter mais informações, consulte Guia de início rápido: criar uma instância do Banco de Dados do Azure para MySQL - Servidor flexível usando a CLI do Azure.

Execute o seguinte comando em seu terminal para criar um Banco de Dados do Azure para a instância do Servidor Flexível MySQL. Substitua <server-admin-password> por uma senha que atenda aos requisitos de complexidade de senha do Banco de Dados do Azure para Servidor Flexível MySQL.

az mysql flexible-server create \
    --name ${CLUSTER} \
    --resource-group ${RESOURCEGROUP} \
    --admin-user admin${RESOURCEGROUP} \
    --admin-password '<server-admin-password>' \
    --database-name ${RESOURCEGROUP}db \
    --public-access 0.0.0.0 \
    --yes

Nota

Se você receber uma mensagem de erro Sem SKUs disponíveis neste local, precisará especificar um local diferente usando o --location parâmetro e tentar novamente. Use o seguinte comando para listar SKUs disponíveis em um local específico:

az mysql flexible-server list-skus --location <Location>

Encontre um local que tenha SKUs disponíveis e, em seguida, repita o anterior az mysql flexible-server create command, mas anexe o parâmetro apropriado --location <Location> , deixando todos os outros parâmetros inalterados.

Leva alguns minutos para criar o servidor, o banco de dados, o usuário administrador e a regra de firewall que aceita conexões de todos os recursos do Azure. Se o comando for bem-sucedido, a saída será semelhante ao exemplo a seguir:

{
  "connectionString": "mysql <database-name> --host <server-name>.mysql.database.azure.com --user <server-admin-username> --password=<server-admin-password>",
  "databaseName": "<database-name>",
  "firewallName": "AllowAllAzureServicesAndResourcesWithinAzureIps_2024-7-10_16-22-8",
  "host": "<server-name>.mysql.database.azure.com",
  "id": "/subscriptions/REDACTED/resourceGroups/<resource-group-of-the-OpenShift-cluster>/providers/Microsoft.DBforMySQL/flexibleServers/<server-name>",
  "location": "West US",
  "password": "<server-admin-password>",
  "resourceGroup": "<resource-group-of-the-OpenShift-cluster>",
  "skuname": "Standard_B1ms",
  "username": "<server-admin-username>",
  "version": "5.7"
}

Preparar a aplicação Liberty

Usamos uma aplicação Java EE 8 como nosso exemplo neste guia. Open Liberty é um servidor compatível com Java EE 8 perfil completo, por isso pode facilmente executar a aplicação. Open Liberty também é compatível com o perfil completo de Jacarta EE 8.

Execute o aplicativo no Open Liberty

Para executar o aplicativo no Open Liberty, você precisa criar um arquivo de configuração do servidor Open Liberty para que o plug-in Liberty Maven possa empacotar o aplicativo para implantação. O plug-in Liberty Maven não é necessário para implantar o aplicativo no OpenShift. No entanto, nós o usamos neste exemplo com o modo de desenvolvedor (dev) do Open Liberty. O modo de desenvolvedor permite que você execute facilmente o aplicativo localmente. Para saber mais sobre o , consulte Criando um aplicativo Web com o liberty-maven-pluginMaven.

Siga as etapas nesta seção para preparar o aplicativo de exemplo para uso posterior neste artigo. Estas etapas usam o Maven e o liberty-maven-plugin.

Confira o aplicativo

Use os comandos a seguir para clonar o código de exemplo deste guia. O exemplo está no GitHub.

git clone https://github.com/Azure-Samples/open-liberty-on-aro.git
cd open-liberty-on-aro
export BASE_DIR=$PWD
git checkout 20240920
cd ${BASE_DIR}/3-integration/connect-db/mysql

Se vir uma mensagem sobre estar no estado "HEAD desanexado", é seguro ignorá-la. Isso significa apenas que você fez check-out de uma tag.

Existem algumas amostras no repositório. Usamos open-liberty-on-aro/3-integration/connect-db/mysql. Aqui está a estrutura de arquivos do aplicativo:

open-liberty-on-aro/3-integration/connect-db/mysql
├─ src/main/
│  ├─ aro/
│  │  ├─ db-secret.yaml
│  │  ├─ openlibertyapplication.yaml
│  ├─ liberty/config/
│  │  ├─ server.xml
│  ├─ java/
│  ├─ resources/
│  ├─ webapp/
├─ Dockerfile
├─ Dockerfile-wlp
├─ pom.xml

Os diretórios java, resources e webapp contêm o código-fonte do aplicativo de exemplo. O código declara e usa uma fonte de dados chamada jdbc/JavaEECafeDB.

No diretório aro, colocamos dois arquivos de implantação. db-secret.xml é usado para criar segredos com credenciais de conexão de banco de dados. O arquivo openlibertyapplication.yaml é usado para implantar a imagem do aplicativo.

No diretório raiz, colocamos dois Dockerfiles. Dockerfile e Dockerfile-wlp são usados para depuração local e para criar a imagem para uma implantação do Azure Red Hat OpenShift, trabalhando com Open Liberty e WebSphere Liberty, respectivamente.

No diretório liberty/config, o server.xml é usado para configurar a conexão do banco de dados para o cluster Open Liberty e WebSphere Liberty.

Compilar o projeto

Usando as variáveis de ambiente definidas anteriormente, execute os seguintes comandos em seu terminal para construir o projeto. O arquivo POM para o projeto lê muitas propriedades do ambiente.

cd ${BASE_DIR}/3-integration/connect-db/mysql

# The following variables are used for deployment file generation
export DB_SERVER_NAME=$CLUSTER.mysql.database.azure.com
export DB_PORT_NUMBER=3306
export DB_NAME=${RESOURCEGROUP}db
export DB_USER=admin${RESOURCEGROUP}
export DB_PASSWORD='<server-admin-password>'
export NAMESPACE=open-liberty-demo

mvn clean install

(Opcional) Teste seu aplicativo localmente

Opcionalmente, você pode executar o aplicativo localmente para verificar se ele funciona conforme o esperado. Primeiro, você precisa adicionar uma regra de firewall para permitir que sua máquina local se conecte ao Banco de Dados do Azure para a instância do Servidor Flexível MySQL. Use as seguintes etapas para adicionar a regra de firewall:

  1. Entre no portal do Azure e navegue até a instância do Servidor Flexível do Banco de Dados do Azure para MySQL que você criou anteriormente.
  2. No painel esquerdo, selecione Configurações>de rede.
  3. Selecione Adicionar endereço IP do cliente atual.
  4. Selecione Salvar e aguarde até que a regra de firewall seja adicionada.

Use as etapas a seguir para executar o liberty:devc comando para executar localmente e testar o projeto e a imagem do contêiner antes de lidar com qualquer complexidade do Azure. Para obter mais informações sobre liberty:devco , consulte a documentação do plug-in do Liberty.

  1. Inicie seu ambiente Docker local, se necessário. As instruções para fazer isso variam dependendo do sistema operacional host.

  2. Use os seguintes comandos para iniciar o aplicativo no liberty:devc modo:

    cd ${BASE_DIR}/3-integration/connect-db/mysql
    
    # If you are running with Open Liberty
    mvn liberty:devc -DcontainerRunOpts="-e DB_SERVER_NAME=${DB_SERVER_NAME} -e DB_PORT_NUMBER=${DB_PORT_NUMBER} -e DB_NAME=${DB_NAME} -e DB_USER=${DB_USER} -e DB_PASSWORD=${DB_PASSWORD}" -Dcontainerfile=Dockerfile
    
    # If you are running with WebSphere Liberty
    mvn liberty:devc -DcontainerRunOpts="-e DB_SERVER_NAME=${DB_SERVER_NAME} -e DB_PORT_NUMBER=${DB_PORT_NUMBER} -e DB_NAME=${DB_NAME} -e DB_USER=${DB_USER} -e DB_PASSWORD=${DB_PASSWORD}" -Dcontainerfile=Dockerfile-wlp
    
  3. Verifique se o aplicativo funciona conforme o esperado. Você verá uma mensagem semelhante na [INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds. saída do comando, se for bem-sucedida. Vá para https://localhost:9443/ no seu navegador e verifique se o aplicativo está acessível e todas as funções estão funcionando.

  4. Para parar liberty:devc o modo, prima Control+C.

Preparar a imagem do aplicativo

Para implementar e executar seu aplicativo Liberty em um cluster do Azure Red Hat OpenShift, conteinerize seu aplicativo como uma imagem do Docker usando imagens de contêiner do Open Liberty ou imagens de contêiner do WebSphere Liberty.

Crie o aplicativo e envie por push para o fluxo de imagem

Como você já executou com êxito o aplicativo no contêiner do Liberty Docker usando o liberty:devc comando, você criará a imagem remotamente no cluster usando as seguintes etapas:

  1. Certifique-se de entrar na CLI do OpenShift usando as kubeadmin credenciais.

  2. Use os seguintes comandos para identificar o diretório de origem e o Dockerfile:

    cd ${BASE_DIR}/3-integration/connect-db/mysql
    
    # If you are building with the Open Liberty base image, the existing Dockerfile is ready for you
    
    # If you are building with the WebSphere Liberty base image, uncomment and execute the following two commands to rename Dockerfile-wlp to Dockerfile
    # mv Dockerfile Dockerfile.backup
    # mv Dockerfile-wlp Dockerfile
    
  3. Use o seguinte comando para alterar o projeto para open-liberty-demo:

    oc project open-liberty-demo
    
  4. Use o seguinte comando para criar um fluxo de imagem:

    oc create imagestream javaee-cafe-mysql
    
  5. Use o comando a seguir para criar uma configuração de compilação que especifique a marca de fluxo de imagem da saída da compilação:

    oc new-build --name javaee-cafe-mysql-config --binary --strategy docker --to javaee-cafe-mysql:v1
    
  6. Use o comando a seguir para iniciar a compilação para carregar conteúdo local, contêinerizar e saída para a tag de fluxo de imagem especificada anteriormente:

    oc start-build javaee-cafe-mysql-config --from-dir . --follow
    

Implantar aplicativo no cluster do Azure Red Hat OpenShift

Agora você pode implantar o aplicativo Liberty de exemplo no cluster do Azure Red Hat OpenShift criado anteriormente ao trabalhar com os pré-requisitos.

Implantar o aplicativo a partir do console da Web

Como usamos o Open Liberty Operator para gerenciar aplicativos Liberty, precisamos criar uma instância de sua Definição de Recursos Personalizada, do tipo OpenLibertyApplication. O Operador cuida de todos os aspetos do gerenciamento dos recursos do OpenShift necessários para a implantação. Use as seguintes etapas para criar esta instância:

  1. Inicie sessão na consola Web OpenShift a partir do seu browser utilizando as kubeadmin credenciais.

  2. Selecione o projeto visitando Home>Projects>open-liberty-demo.

  3. Navegue até Segredos de cargas de> trabalho.

  4. Selecione Criar> a partir de YAML.

  5. Substitua o yaml gerado pelo seu, que está localizado em <path-to-repo>/3-integration/connect-db/mysql/target/db-secret.yaml.

  6. Selecione Criar. Você retornará à página Detalhes secretos.

  7. Navegue até Operadores>Operadores instalados.

  8. No meio da página, você vê Open Liberty.

  9. Em APIs fornecidas, selecione OpenLibertyApplication. A navegação de itens na interface do usuário reflete a hierarquia de contenção real das tecnologias em uso.

    Diagrama do Azure Red Hat OpenShift Java Coninment.

  10. Selecione Criar OpenLibertyApplication.

  11. Selecione a visualização YAML para Configurar via.

  12. Substitua o yaml gerado pelo seu, que está localizado em <path-to-repo>/3-integration/connect-db/mysql/target/openlibertyapplication.yaml.

  13. Selecione Criar. Você retornará à lista de OpenLibertyApplications.

  14. Navegue até Operadores>Instalados Operadores>Abra o Liberty>OpenLibertyApplication.

  15. Selecione javaee-café-mysql.

  16. No meio da página, selecione Recursos.

  17. Na tabela, selecione o link para javaee-café-mysql com o Tipo de rota.

  18. Na página que se abre, selecione o link abaixo de Localização.

A página inicial do aplicativo é aberta no navegador.

Excluir o aplicativo do console da Web

Quando terminar de usar o aplicativo, use as seguintes etapas para excluir o aplicativo do Open Shift:

  1. No painel de navegação esquerdo, expanda a entrada para Operadores.
  2. Selecione Operadores instalados.
  3. Selecione Abrir Liberdade.
  4. No meio da página, selecione OpenLibertyApplication.
  5. Para javaee-café-mysql, selecione as reticências verticais (três pontos verticais) e, em seguida, selecione Delete OpenLibertyApplication.
  6. Selecione Excluir para excluir o aplicativo.

Use as seguintes etapas para excluir o segredo do Open Shift:

  1. Navegue até Segredos de cargas de> trabalho.
  2. Selecione db-secret-mysql.
  3. Selecione Ações>Excluir segredo.
  4. Selecione Excluir para excluir o segredo.

Clean up resources (Limpar recursos)

Exclua o cluster do Azure Red Hat OpenShift seguindo as etapas em Tutorial: Excluir um cluster do Azure Red Hat OpenShift 4. Certifique-se de que o banco de dados e todos os recursos associados também sejam excluídos.

Próximos passos

Você pode aprender mais com as referências usadas neste guia:

Para explorar opções para executar produtos WebSphere no Azure, consulte Quais são as soluções para executar a família de produtos WebSphere no Azure?