Implante manualmente um aplicativo Java com Open Liberty/WebSphere Liberty em um cluster do Red Hat OpenShift no Azure
Este artigo fornece diretrizes manuais passo a passo para executar o Open/WebSphere Liberty em um cluster do Red Hat OpenShift no Azure. Ele orienta você pela preparação de um aplicativo do Liberty, pela criação da imagem do Docker do aplicativo e pela execução do aplicativo conteinerizado em um cluster do Red Hat OpenShift no Azure.
Especificamente, você aprende a realizar as seguintes tarefas:
- Preparar o aplicativo Liberty
- Criar a imagem do aplicativo
- Execute o aplicativo conteinerizado em um cluster do Red Hat OpenShift no Azure usando a GUI e a CLI
Para obter uma solução mais automatizada que acelere sua jornada para o cluster do Red Hat OpenShift no Azure, consulte Implantar o IBM WebSphere Liberty e o Open Liberty no Red Hat OpenShift no Azure usando a oferta do Azure Marketplace.
Para obter mais informações sobre o Open Liberty, confira a página de projeto Open Liberty. Para mais informações sobre o IBM WebSphere Liberty, consulte a página de produto WebSphere Liberty.
Este artigo tem o objetivo de ajudá-lo a iniciar rapidamente a implementação. Antes de acessar a produção, você deve explorar o Ajuste do Liberty.
Se você tiver interesse em fornecer feedback ou trabalhar em seus cenários de migração em estreita colaboração com a equipe de engenharia que desenvolve o WebSphere para as soluções do Azure, responda a essa breve pesquisa sobre migração para o WebSphere e inclua seus dados de contato. A equipe de gerentes de programas, arquitetos e engenheiros entrará em contato prontamente com você para dar início a uma estreita colaboração.
Importante
Embora o Red Hat OpenShift no Azure seja projetado e operado em conjunto pela Red Hat e pela Microsoft e tenha suporte das duas empresas para fornecer uma experiência de suporte integrada, o software executado no Red Hat OpenShift no Azure, 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 Red Hat OpenShift no Azure, consulte Ciclo de vida do suporte para o Red Hat OpenShift 4 no Azure. 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.
Observação
O Red Hat OpenShift no Azure requer um mínimo de 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, confira Cota Standard: Aumentar limites por série de VM. Observe que a assinatura de avaliação gratuita não está qualificada para um aumento de cota. Atualize para uma assinatura paga conforme o uso antes de solicitar um aumento de cota.
Pré-requisitos
Um computador local com o sistema operacional semelhante ao Unix instalado, por exemplo, Ubuntu, macOS ou Subsistema do Windows para Linux.
Uma implementação Java Standard Edition (SE), versão 17 ou posterior - por 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 Red Hat OpenShift no Azure. Para criar o cluster, siga as instruções em Criar um cluster do Red Hat OpenShift no Azure usando as seguintes instruções:
Embora a etapa "Obter um segredo de pull do Red Hat" seja rotulada como opcional, ela é necessária para este artigo. O segredo de pull permite que o cluster do Red Hat OpenShift no Azure encontre o Operador do Open Liberty.
As seguintes variáveis de ambiente definidas em Criar um cluster do Red Hat OpenShift no Azure 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 com uso intensivo de memória no cluster, especifique o tamanho adequado da máquina virtual para os nós de trabalho usando o parâmetro
--worker-vm-size
. Para obter mais informações, consulte os seguintes artigos:
Conecte-se a ele seguindo as etapas em Conectar-se a um cluster do Red Hat OpenShift 4 no Azure usando as seguintes instruções:
- Siga as etapas em "Instalar a CLI do OpenShift", pois você usa o comando
oc
mais adiante neste artigo. - Salve a URL do console do cluster. Ela deve ter aparência semelhante a
https://console-openshift-console.apps.<random>.<region>.aroapp.io/
. - Anote as credenciais
kubeadmin
. - Siga as etapas em "Conexão usando a CLI do OpenShift" com as credenciais
kubeadmin
.
- Siga as etapas em "Instalar a CLI do OpenShift", pois você usa o comando
Instalar o Operador do 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 para o Operador do Open Liberty está no GitHub.
Entre no console web do OpenShift pelo seu navegador usando as credenciais
kubeadmin
.Navegue até Operadores>OperatorHub e procure Open Liberty.
Selecione Open Liberty nos resultados da pesquisa.
Selecione Instalar.
Na página Instalar o Operator, use as seguintes etapas:
- Para Atualizar canal, selecione o canal v1.3 mais recente.
- Para o modo de Instalação, selecione Todos os namespaces no cluster (padrão).
- Para Atualizar aprovação, selecione Automático.
Selecione Instalar e aguarde um ou dois minutos até que a instalação seja concluída.
Observe que o Open Liberty Operator está instalado com êxito e pronto para uso. Se ainda não estiver pronto, diagnostique e solucione o problema antes de continuar.
Observação
Este guia instala o Open Liberty Operator para gerenciar aplicativos Liberty no cluster do Red Hat OpenShift no Azure. Se você quiser usar o WebSphere Liberty Operator, siga as etapas em Instalando o WebSphere Liberty Operator para instalar o WebSphere Liberty Operator no cluster.
Criar um namespace OpenShift para o aplicativo Java
Use as etapas a seguir para criar um namespace do OpenShift para uso com seu aplicativo:
Certifique-se de ter entrado no console Web do OpenShift pelo seu navegador usando as credenciais
kubeadmin
.Navegue até Administração>Namespaces>Criar Namespace.
Preencha
open-liberty-demo
para Nome e selecione Criar, conforme mostrado a seguir.
Criar um Servidor Flexível do Banco de Dados do Azure para MySQL
O modelo de implantação Servidor Flexível do Banco de Dados do Azure para MySQL é um modo de implantação projetado para fornecer mais controle granular e flexibilidade sobre as funções de gerenciamento de banco de dados e as 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 uma instância do Servidor Flexível do Banco de Dados do Azure para MySQL usando a CLI do Azure. Para obter mais informações, consulte 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 comando a seguir em seu terminar para criar uma instância do Servidor Flexível do Banco de Dados do Azure para MySQL. Substitua <server-admin-password>
por uma senha que atenda aos requisitos de complexidade de senha para o Servidor Flexível do Banco de Dados do Azure para 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
Observação
Se você receber uma mensagem de erro Nenhum SKU disponível neste local, será necessário especificar um local diferente usando o parâmetro --location
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>
Localize um local que tenha SKUs disponíveis e repita o az mysql flexible-server create command
anterior, mas acrescente o parâmetro --location <Location>
apropriado, 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 o aplicativo Liberty
Usamos um aplicativo Java EE 8 como nosso exemplo neste guia. O Open Liberty é um servidor totalmente compatível com o perfil completo do Java EE 8 e, portanto, ele pode executar facilmente o aplicativo. O Open Liberty também é compatível com o perfil completo do Jakarta EE 8.
Executar o aplicativo no Open Liberty
Para executar o aplicativo no Open Liberty, você precisa criar um arquivo de configuração do servidor do Open Liberty para que o plug-in Liberty Maven possa empacotar o aplicativo para implantação. O plug-in de Maven do Liberty não é necessário para implantar o aplicativo no OpenShift. No entanto, vamos usá-lo neste exemplo com o modo de desenvolvedor (dev) do Open Liberty. O modo de desenvolvedor permite executar o aplicativo localmente com facilidade. Para saber mais sobre o liberty-maven-plugin
, confira Como compilar um aplicativo Web com o Maven.
Siga as etapas nesta seção para preparar o aplicativo de exemplo para uso posterior neste artigo. Essas etapas usam o Maven e o liberty-maven-plugin
.
Fazer check-out do aplicativo
Use os comandos a seguir para clonar o código de exemplo para este 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 você vir uma mensagem sobre estar no estado "detached HEAD", essa mensagem pode ser ignorada com segurança. Isso apenas significa que você fez check-out de uma tag.
Há alguns exemplos no repositório. Usamos open-liberty-on-aro/3-integration/connect-db/mysql. Esta é 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 as credenciais de conexão do 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 Red Hat OpenShift no Azure, trabalhando com o Open Liberty e o WebSphere Liberty, respectivamente.
No diretório liberty/config, o server.xml é usado para configurar a conexão do banco de dados para o cluster do Open Liberty e do WebSphere Liberty.
Compilar o projeto
Usando as variáveis de ambiente definidas anteriormente, execute os comandos a seguir em seu terminal para criar o projeto. O arquivo POM do 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) Testar 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 seu computador local se conecte à instância do Servidor Flexível do Banco de Dados do Azure para MySQL. Use as seguintes etapas para adicionar a regra do firewall:
- 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.
- No painel à esquerda, selecione Configurações>Rede.
- Selecione Adicionar endereço IP do cliente atual.
- Selecione Salvar e aguarde até que a regra de firewall seja adicionada.
Use as etapas a seguir para executar o comando liberty:devc
para executar e testar localmente o projeto e a imagem de contêiner antes de lidar com qualquer complexidade do Azure. Para obter mais informações sobre liberty:devc
, confira a documentação do Plug-in do Liberty.
Inicie seu ambiente local do Docker, se necessário. As instruções para fazê-lo variam de acordo com o sistema operacional do host.
Use os seguintes comandos para iniciar o aplicativo no modo
liberty:devc
: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
Verifique se o aplicativo funciona conforme o esperado. Você deverá ver uma mensagem semelhante a
[INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds.
na saída do comando, se tiver êxito. Acessehttps://localhost:9443/
no navegador e verifique se o aplicativo está acessível e se todas as funções estão operantes.Para parar o modo
liberty:devc
, pressione Control+C.
Preparar a imagem do aplicativo
Para implantar e executar seu aplicativo do Liberty no cluster do Red Hat OpenShift no Azure, conteinerize seu aplicativo como uma imagem do Docker usando imagens de contêiner do Open Liberty ou imagens de contêiner do WebSphere Liberty.
Compilar o aplicativo e efetuar push para o fluxo de imagem
Como você já executou com êxito o aplicativo no contêiner do Liberty Docker usando o comando liberty:devc
, você criará a imagem remotamente no cluster usando as seguintes etapas:
Entre na CLI do OpenShift usando as credenciais
kubeadmin
.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
Use o seguinte comando para alterar o projeto para open-liberty-demo:
oc project open-liberty-demo
Use o seguinte comando para criar um fluxo de imagem:
oc create imagestream javaee-cafe-mysql
Use o seguinte comando para criar uma configuração de compilação que especifica 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
Use o seguinte comando para iniciar a compilação para carregar conteúdo local, colocar em contêiner e saída para a marca de fluxo de imagem especificada antes:
oc start-build javaee-cafe-mysql-config --from-dir . --follow
Implantar o aplicativo no cluster do Red Hat OpenShift no Azure
Agora você pode implantar o aplicativo Liberty de exemplo no cluster do Red Hat OpenShift no Azure criado anteriormente ao trabalhar com os pré-requisitos.
Implantar o aplicativo do console Web
Como usamos o Open Liberty Operator para gerenciar aplicativos Liberty, precisamos criar uma instância de sua Definição de Recurso Customizado, do tipo OpenLibertyApplication
. O Operator cuida de todos os aspectos do gerenciamento dos recursos do OpenShift necessários para a implantação. Use estas etapas para criar a instância:
Entre no console web do OpenShift pelo seu navegador usando as credenciais
kubeadmin
.Selecione o projeto visitando Página Inicial>Projetos>open-liberty-demo.
Navegue até Cargas de trabalho>Segredos.
Selecione Criar> De YAML.
Substitua o yaml gerado pelo seu, que está localizado em <path-to-repo>/3-integration/connect-db/mysql/target/db-secret.yaml.
Selecione Criar. Você retornará à página de detalhes do Segredo.
Navegue até Operadores>Operadores Instalados.
No meio da página, você verá Open Liberty.
Em APIs fornecidas, selecione OpenLibertyApplication. A navegação de itens na interface do usuário espelha a hierarquia de confinamento real de tecnologias em uso.
Selecione Criar OpenLibertyApplication.
Selecione a exibição YAML para Configurar via.
Substitua o yaml gerado pelo seu, que está localizado em <path-to-repo>/3-integration/connect-db/mysql/target/openlibertyapplication.yaml.
Selecione Criar. Você é retornado à lista de OpenLibertyApplications.
Navegue até Operadores>Operadores Instalados>Open Liberty>OpenLibertyApplication.
Selecione javaee-cafe-mysql.
No meio da página, selecione Recursos.
Na tabela, selecione o link para javaee-cafe-mysql com o Tipo Rota.
Na página que é aberta, selecione o link abaixo de Localização.
A home page do aplicativo abre no navegador padrão.
Excluir o aplicativo do console Web
Quando você terminar de usar o aplicativo, use as seguintes etapas para excluir o aplicativo do Open Shift:
- No painel de navegação à esquerda, expanda a entrada para Operadores.
- Selecione Operadores Instalados.
- Selecione Open Liberty.
- No meio da página, selecione OpenLibertyApplication.
- Para javaee-cafe-mysql, selecione as reticências verticais (três pontos verticais) e, então selecione Excluir OpenLibertyApplication.
- Selecione Excluir para excluir o aplicativo.
Use as seguintes etapas para excluir o segredo do Open Shift:
- Navegue até Cargas de trabalho>Segredos.
- Selecione db-secret-mysql.
- Selecione Ações>Excluir Segredo.
- Selecione Excluir para excluir o segredo.
Limpar os recursos
Exclua o cluster do Red Hat OpenShift no Azure seguindo as etapas em Tutorial: excluir um cluster do Red Hat OpenShift 4 no Azure. Certifique-se de que o banco de dados e todos os recursos associados também sejam excluídos.
Próximas etapas
Você pode saber mais sobre as referências usadas neste guia:
- Open Liberty
- Red Hat OpenShift no Azure
- Open Liberty Operator
- Configuração do Servidor Open Liberty
- Plug-in do Liberty Maven
- Imagens de contêiner do Open Liberty
- Imagens de contêiner do WebSphere Liberty
Para explorar as 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?