Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo fornece diretrizes passo a passo para implantar manualmente o Open/WebSphere Liberty no Azure.
Mais especificamente, este artigo explica como realizar as seguintes tarefas:
- Execute seu aplicativo Java, Java Enterprise Edition (EE), Jakarta EE ou MicroProfile no runtime do Open Liberty ou WebSphere Liberty.
- Criar a imagem de Docker do aplicativo com
az acr buildusando imagens de contêiner do Liberty. - Implante o aplicativo em contêineres em um cluster do AKS (Serviço de Kubernetes do Azure) usando um Operador Liberty.
Um Operador Liberty simplifica a implantação e o gerenciamento de aplicativos em execução em clusters do Kubernetes. Com o Operador Open Liberty Operator ou WebSphere Liberty, você também pode executar operações mais avançadas, como coleta de rastreamentos e despejos.
Para obter uma solução mais automatizada que acelere sua jornada para o AKS usando uma solução do Marketplace disponível no portal do Azure, consulte Implantar um aplicativo Java com o Open Liberty/WebSphere Liberty em um cluster do AKS (Serviço de Kubernetes do Azure).
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, confira 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.
Pré-requisitos
- Uma assinatura do Azure. Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
- CLI do Azure versão 2.71.0+
- Java Standard Edition (SE), versão 17 – por exemplo, Eclipse Open J9.
- Maven versão 3.5.0+
- Git
- A função
Ownerou as funçõesContributoreUser Access Administratorna assinatura do Azure. Você pode verificar a atribuição pelas etapas em Listar atribuições de função do Azure usando o portal do Azure.
Entrar no Azure
Se você ainda não fez isso, use as seguintes etapas para entrar em sua assinatura do Azure:
Abra a CLI do Azure ou o PowerShell e entre usando
az login. Para concluir o processo de autenticação, siga as etapas exibidas no terminal. Para obter outras opções de login, confira Entrar no Azure com a CLI do Azure.Observação
Se houver vários locatários do Azure associados às suas credenciais do Azure, você deverá especificar em qual locatário deseja entrar. Você pode especificar um locatário com a opção
--tenant– por exemplo,az login --tenant contoso.onmicrosoft.com.Localize a versão e as bibliotecas dependentes instaladas usando
az version.Atualize para a versão mais recente usando
az upgrade.
Observação
Ao usar a CLI do Azure, se for solicitado que você instale uma extensão da CLI do Azure, faça isso. Para obter mais informações sobre extensões, confira Usar e gerenciar extensões com a CLI do Azure.
Você pode executar a maioria dos comandos da CLI do Azure no PowerShell da mesma forma que no Bash. A diferença existe apenas quando se usam variáveis. Nas seções a seguir, a diferença é abordada em abas distintas, quando necessário.
Criar um grupo de recursos
Um grupo de recursos do Azure é um grupo lógico no qual os recursos do Azure são implantados e gerenciados.
Crie um grupo de recursos chamado java-liberty-project usando az group create no eastus2 local. Esse grupo de recursos é usado posteriormente para criar a instância do Registro de Contêiner do Azure e o cluster do AKS.
export RESOURCE_GROUP_NAME=java-liberty-project
az group create --name $RESOURCE_GROUP_NAME --location eastus2
Criar uma instância do Registro de Contêiner
Use az acr create para criar a instância do registro de contêiner. O exemplo a seguir cria uma instância de registro de contêiner chamada <your-unique-ACR-name>. Substitua esse espaço reservado por um valor exclusivo no Azure.
Observação
Este artigo usa o mecanismo de autenticação sem senha recomendado para o Registro de Contêiner do Azure. Ainda é possível usar um nome de usuário e senha com docker login depois de usar az acr credential show para obter o nome de usuário e a senha. No entanto, o uso de um nome de usuário e senha é menos seguro do que a autenticação sem senha.
export REGISTRY_NAME=<your-unique-ACR-name>
az acr create \
--resource-group $RESOURCE_GROUP_NAME \
--name $REGISTRY_NAME \
--sku Basic
Após um curto período de tempo, você deverá ver a saída JSON que contém as linhas a seguir:
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"resourceGroup": "java-liberty-project",
Recupere o nome do servidor de autenticação para a instância do registro de contêineres. Você precisa desse valor ao implantar a imagem do aplicativo no cluster do AKS posteriormente.
export LOGIN_SERVER=$(az acr show \
--name $REGISTRY_NAME \
--query 'loginServer' \
--output tsv)
Criar um cluster AKS
Use az aks create para criar um cluster do AKS, conforme mostrado no exemplo a seguir. Este exemplo cria um cluster do AKS chamado myAKSCluster com um nó e anexa a instância do registro de contêiner a ele. O comando leva vários minutos para ser concluído.
export CLUSTER_NAME=myAKSCluster
az aks create \
--resource-group $RESOURCE_GROUP_NAME \
--name $CLUSTER_NAME \
--node-count 1 \
--node-vm-size Standard_DS2_V2 \
--generate-ssh-keys \
--enable-managed-identity \
--attach-acr $REGISTRY_NAME
Após a conclusão do comando, ele retorna informações formatadas em JSON sobre o cluster, incluindo a seguinte saída:
"nodeResourceGroup": "MC_java-liberty-project_myAKSCluster_eastus2",
"privateFqdn": null,
"provisioningState": "Succeeded",
"resourceGroup": "java-liberty-project",
Conecte-se ao cluster do AKS
Use as seguintes etapas para gerenciar seu cluster do Kubernetes:
Instale
kubectl, o cliente de linha de comando do Kubernetes, usandoaz aks install-cli, conforme mostrado no exemplo a seguir:az aks install-cliUse
az aks get-credentialspara configurarkubectl, a fim de conectar o cluster do Kubernetes. Esse comando baixa credenciais e configura a CLI do Kubernetes para usá-las, conforme mostrado no exemplo a seguir:Observação
O comando usa o local padrão para o arquivo de configuração do Kubernetes, que é ~/.kube/config. Você pode especificar um local diferente para o arquivo de configuração do Kubernetes usando
--file.az aks get-credentials \ --resource-group $RESOURCE_GROUP_NAME \ --name $CLUSTER_NAME \ --overwrite-existing \ --adminVerifique a conexão com o cluster usando
kubectl getpara retornar uma lista dos nós de cluster, conforme mostrado no exemplo a seguir:kubectl get nodesA saída de exemplo a seguir mostra o único nó criado nas etapas anteriores. Garanta que o status do nó seja
Ready:NAME STATUS ROLES AGE VERSION aks-nodepool1-xxxxxxxx-yyyyyyyyyy Ready <none> 76s v1.29.9
Criar um Banco de Dados SQL do Azure
Crie um banco de dados único do Banco de Dados SQL do Azure para seu aplicativo usando as seguintes etapas:
Use os comandos a seguir para definir variáveis de ambiente relacionadas ao banco de dados. Substitua
<your-unique-sql-server-name>por um nome exclusivo para o servidor do Banco de Dados SQL do Azure.export SQL_SERVER_NAME=<your-unique-sql-server-name> export DB_NAME=demodbUse os comandos a seguir para criar um banco de dados individual e definir o usuário conectado atual como um administrador do Microsoft Entra. Para obter mais informações, consulte Início Rápido: Criar um banco de dados individual – Banco de Dados SQL do Azure.
export ENTRA_ADMIN_NAME=$(az account show \ --query user.name \ --output tsv) az sql server create \ --resource-group $RESOURCE_GROUP_NAME \ --name $SQL_SERVER_NAME \ --enable-ad-only-auth \ --external-admin-principal-type User \ --external-admin-name $ENTRA_ADMIN_NAME \ --external-admin-sid $(az ad signed-in-user show --query id --output tsv) az sql db create \ --resource-group $RESOURCE_GROUP_NAME \ --name $DB_NAME \ --server $SQL_SERVER_NAME \ --edition GeneralPurpose \ --compute-model Serverless \ --family Gen5 \ --capacity 2
Observação
Você cria um servidor SQL do Azure com a autenticação SQL desabilitada por considerações de segurança. Somente a ID do Microsoft Entra é usada para autenticar no servidor. Para obter mais informações sobre como habilitar a autenticação do SQL, consulte az sql server create.
Criar uma conexão de serviço no AKS com o Conector de Serviço
Use os comandos a seguir para criar uma conexão entre o cluster do AKS e o banco de dados SQL usando a ID de carga de trabalho do Microsoft Entra com o conector de serviço. Para obter mais informações, consulte Criar uma conexão de serviço no AKS com o Service Connector.
# Register the Service Connector and Kubernetes Configuration resource providers
az provider register --namespace Microsoft.ServiceLinker --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
# Install the Service Connector passwordless extension
az extension add \
--name serviceconnector-passwordless \
--upgrade \
--allow-preview true
# Retrieve the AKS cluster and Azure SQL Server resource IDs
export AKS_CLUSTER_RESOURCE_ID=$(az aks show \
--resource-group $RESOURCE_GROUP_NAME \
--name $CLUSTER_NAME \
--query id \
--output tsv)
export AZURE_SQL_SERVER_RESOURCE_ID=$(az sql server show \
--resource-group $RESOURCE_GROUP_NAME \
--name $SQL_SERVER_NAME \
--query id \
--output tsv)
# Create a user-assigned managed identity used for workload identity
export USER_ASSIGNED_IDENTITY_NAME=workload-identity-uami
az identity create \
--resource-group ${RESOURCE_GROUP_NAME} \
--name ${USER_ASSIGNED_IDENTITY_NAME}
# Retrieve the user-assigned managed identity resource ID
export UAMI_RESOURCE_ID=$(az identity show \
--resource-group ${RESOURCE_GROUP_NAME} \
--name ${USER_ASSIGNED_IDENTITY_NAME} \
--query id \
--output tsv)
# Create a service connection between your AKS cluster and your SQL database using Microsoft Entra Workload ID
az aks connection create sql \
--connection akssqlconn \
--client-type java \
--source-id $AKS_CLUSTER_RESOURCE_ID \
--target-id $AZURE_SQL_SERVER_RESOURCE_ID/databases/$DB_NAME \
--workload-identity $UAMI_RESOURCE_ID
Solucionar problemas de mensagens de erro
Se o az aks connection create sql comando produzir uma mensagem de erro, localize a mensagem de erro na lista a seguir e use as instruções para solucionar o problema:
Dependency pyodbc can't be installed, please install it manuallyEssa mensagem de erro indica que o
pyodbcpacote não pode ser instalado, provavelmente devido a problemas de permissões. Corrija o problema usando as seguintes etapas:Localize o local do Python que funciona com a CLI do Azure executando o seguinte comando:
az --versionA saída deve conter
Python location- por exemplo,Python location '/opt/az/bin/python3'.Copie o valor
Python location.Use o comando a seguir para instalar o
pyodbcpacote nosudomodo. Substitua<python-location>pelo local do Python copiado na etapa anterior.sudo <python-location> -m pip install pyodbc
libodbc.so: não é possível abrir o arquivo de objeto compartilhado: nenhum arquivo ou diretório desse tipo
Instale manualmente odbc 17/18 para SQL Server
Esses erros indicam que o
odbcdriver não está instalado. Corrija o problema usando as seguintes etapas:Observação
Você deve usar a ID de Carga de Trabalho do Microsoft Entra para acesso seguro ao Banco de Dados SQL do Azure sem usar a autenticação SQL. Se você precisar usar a autenticação SQL, ignore as etapas nesta seção e use o nome de usuário e a senha para se conectar ao Banco de Dados SQL do Azure.
Se você estiver usando o Linux, abra Instalar o driver ODBC da Microsoft para SQL Server (Linux). Se você estiver usando o MacOS, abra Instalar o driver ODBC da Microsoft para SQL Server (macOS).
Siga as instruções para instalar o Microsoft ODBC Driver (18 ou 17) para SQL Server.
Use
az aks connection create sqlnovamente para criar a conexão de serviço, conforme mostrado no exemplo a seguir:az aks connection create sql \ --connection akssqlconn \ --client-type java \ --source-id $AKS_CLUSTER_RESOURCE_ID \ --target-id $AZURE_SQL_SERVER_RESOURCE_ID/databases/$DB_NAME \ --workload-identity $UAMI_RESOURCE_ID
Obter a conta de serviço e o segredo criados pelo Service Connector
Para autenticar com o Banco de Dados SQL do Azure, use as seguintes etapas:
Obtenha a conta de serviço e o segredo criados pelo Service Connector seguindo as instruções na seção Atualizar seu contêiner do Tutorial: Conectar um aplicativo AKS ao Banco de Dados SQL do Azure. Use a opção para criar diretamente uma implantação usando o snippet de código de exemplo YAML fornecido.
Observação
O segredo criado pelo Service Connector contém um
AZURE_SQL_CONNECTIONSTRINGvalor, que é uma cadeia de conexão sem senha para o Banco de Dados SQL do Azure. Para obter mais informações, consulte o valor de exemplo da seção Identidade Gerenciada Atribuída pelo Usuário da Integração do Banco de Dados SQL do Azure com o Conector do Serviço.Nas seções realçadas no YAML de implantação do Kubernetes de exemplo, copie os valores
serviceAccountNameesecretRef.name, conforme mostrado no exemplo a seguir.serviceAccountName: <service-account-name> containers: - name: raw-linux envFrom: - secretRef: name: <secret-name>Defina variáveis de ambiente usando os comandos a seguir. Certifique-se de substituir
<service-account-name>e<secret-name>pelos valores copiados na etapa anterior:export SERVICE_ACCOUNT_NAME=<service-account-name> export SECRET_NAME=<secret-name>Esses valores são usados na próxima seção para implantar o aplicativo Liberty no cluster do AKS.
Instalar o operador Open Liberty
Nesta seção, você instala o Operador do Open Liberty no cluster do AKS para hospedar o aplicativo Liberty.
Instale o Operador Open Liberty usando os seguintes comandos:
Observação
Este guia orienta você a instalar o Operador Open Liberty. Para usar o operador do WebSphere Liberty, consulte Instalando o operador WebSphere Liberty com a CLI do Kubernetes.
# Install cert-manager Operator
export CERT_MANAGER_VERSION=v1.11.2
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/${CERT_MANAGER_VERSION}/cert-manager.yaml
# Install the Open Liberty Operator
export OPERATOR_VERSION=1.4.2
mkdir -p overlays/watch-all-namespaces
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/overlays/watch-all-namespaces/olo-all-namespaces.yaml -q -P ./overlays/watch-all-namespaces
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/overlays/watch-all-namespaces/cluster-roles.yaml -q -P ./overlays/watch-all-namespaces
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/overlays/watch-all-namespaces/kustomization.yaml -q -P ./overlays/watch-all-namespaces
mkdir base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/kustomization.yaml -q -P ./base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/open-liberty-crd.yaml -q -P ./base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/open-liberty-operator.yaml -q -P ./base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/open-liberty-roles.yaml -q -P ./base
kubectl create namespace open-liberty
kubectl apply --server-side -k overlays/watch-all-namespaces
# Remove the downloaded files
rm -rf overlays base
Configurar e compilar a imagem do aplicativo
Para implantar e executar seu aplicativo Liberty no cluster do AKS, conteinerize seu aplicativo como uma imagem do Docker usando imagens de contêiner do Open Liberty Ou WebSphere Liberty.
Siga as etapas nesta seção para implantar o aplicativo de exemplo no runtime do Liberty. Essas etapas usam o Maven.
Confira o aplicativo
Clone o código de exemplo deste guia usando os comandos a seguir. O exemplo está no repositório GitHub do Open Liberty/WebSphere Liberty no Serviço de Kubernetes do Azure , que contém alguns exemplos. Este artigo usa o java-app exemplo.
git clone https://github.com/Azure-Samples/open-liberty-on-aks.git
cd open-liberty-on-aks
export BASE_DIR=$PWD
git checkout 20250424
Se você vir uma mensagem sobre estar no estado detached HEAD, essa mensagem pode ser ignorada. Isso apenas significa que você fez check-out de uma tag. A clonagem do repositório cria a seguinte estrutura de arquivos:
java-app
├─ src/main/
│ ├─ aks/
│ │ ├─ openlibertyapplication-passwordless-db.yaml
│ ├─ docker/
│ │ ├─ Dockerfile
│ │ ├─ Dockerfile-wlp
│ ├─ liberty/config/
│ │ ├─ server.xml
│ ├─ java/
│ ├─ resources/
│ ├─ webapp/
├─ pom.xml
├─ pom-azure-identity.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 aks, o arquivo openlibertyapplication-passwordless-db.yaml é usado para implantar a imagem do aplicativo. No diretório docker, há dois arquivos para criar a imagem do aplicativo com o Open Liberty ou o WebSphere Liberty.
No diretório liberty/config, o arquivo server.xml é usado para configurar a conexão de banco de dados para o cluster Open Liberty e WebSphere Liberty. Ele define uma azure.sql.connectionstring variável usada para se conectar ao Banco de Dados SQL do Azure.
O arquivo pom.xml é o arquivo POM (modelo de objeto) de projeto Maven que contém as informações de configuração do projeto. O arquivo pom-azure-identity.xml declara a dependência azure-identity, que é usada para autenticar nos serviços do Azure usando a ID do Microsoft Entra.
Observação
Este exemplo usa a biblioteca azure-identity para autenticar no Banco de Dados SQL do Azure usando a autenticação do Microsoft Entra, que é recomendada para considerações de segurança. Para obter mais informações sobre como usar a autenticação SQL em seu aplicativo Liberty, consulte conexões de banco de dados relacionais com a Conectividade de Banco de Dados Java (JDBC).
Compilar o projeto
Agora que você reuniu as propriedades necessárias, crie o aplicativo usando os comandos a seguir. O arquivo POM do projeto lê muitas variáveis do ambiente. Como parte do build do Maven, essas variáveis são usadas para preencher valores nos arquivos YAML localizados em src/main/aks. Você poderá fazer algo semelhante para seu aplicativo fora do Maven se preferir.
cd $BASE_DIR/java-app
# The following variables are used for deployment file generation into target/
export LOGIN_SERVER=${LOGIN_SERVER}
export SC_SERVICE_ACCOUNT_NAME=${SERVICE_ACCOUNT_NAME}
export SC_SECRET_NAME=${SECRET_NAME}
mvn clean install
mvn dependency:copy-dependencies -f pom-azure-identity.xml -DoutputDirectory=target/liberty/wlp/usr/shared/resources
Compilar imagem para implantação do AKS
Use az acr build para criar a imagem, conforme mostrado no exemplo a seguir:
cd $BASE_DIR/java-app/target
az acr build \
--registry ${REGISTRY_NAME} \
--image javaee-cafe:v1 \
.
O az acr build comando carrega os artefatos especificados no Dockerfile para a instância do registro de contêiner, cria a imagem e a armazena na instância do registro de contêiner.
Implantar o aplicativo no cluster AKS
Siga as etapas abaixo para implantar o aplicativo Liberty no cluster do AKS:
Aplique o arquivo de implantação usando os seguintes comandos:
cd $BASE_DIR/java-app/target # Apply deployment file kubectl apply -f openlibertyapplication-passwordless-db.yamlDetermine se a
OpenLibertyApplicationinstância é criada usando o seguinte comando:kubectl get openlibertyapplication javaee-cafe-cluster --watchO seguinte resultado é comum. Use Ctrl+C para sair.
NAME IMAGE EXPOSED RECONCILED RESOURCESREADY READY WARNING AGE javaee-cafe-cluster <registry-name>.azurecr.io/javaee-cafe:v1 True True True 57sDetermine se a implantação criada pelo operador está pronta usando o seguinte comando:
kubectl get deployment javaee-cafe-cluster --watchA saída a seguir é típica:
NAME READY UP-TO-DATE AVAILABLE AGE javaee-cafe-cluster 0/3 3 0 20sAguarde até que você veja
3/3na colunaREADYe3na colunaAVAILABLEe, em seguida, use Ctrl+C para interromper o processo de inspeçãokubectl.
Testar o aplicativo
Quando o aplicativo for executado, o serviço de balanceamento de carga do Kubernetes expõe o aplicativo front-end à internet. Esse processo pode levar algum tempo para ser concluído.
Use kubectl get service para obter o endereço IP externo do serviço quando ele estiver disponível, conforme mostrado no exemplo a seguir:
export APP_URL=http://$(kubectl get service javaee-cafe-cluster -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo $APP_URL
Observação
Se você não vir uma URL válida da saída, aguarde um pouco e execute o comando novamente.
Abra a URL em um navegador da Web e verifique a home page do aplicativo. Se a página não for carregada corretamente, atualize a página mais tarde, depois que o aplicativo for iniciado. Você deve ver o nome do pod de suas réplicas de aplicativo exibidas na parte superior esquerda da página. Espere alguns minutos e atualize a página para ver um nome de pod diferente exibido por conta do balanceamento de carga feito pelo cluster do AKS.
Observação
Atualmente, o aplicativo não usa HTTPS. Recomendamos que você habilite o TLS (Transport Layer Security) com seus próprios certificados. Para obter mais informações, consulte Usar o TLS com um controlador de entrada no AKS (Serviço de Kubernetes do Azure).
Limpar os recursos
Para evitar cobranças do Azure, limpe recursos desnecessários. Quando o cluster não for mais necessário, use az group delete para remover o grupo de recursos, o serviço de contêiner, o registro de contêiner, o banco de dados e todos os recursos relacionados.
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
Próximas etapas
Você pode saber mais com as seguintes referências usadas neste guia:
- O que é o Serviço de Kubernetes do Azure (AKS)?
- Tutorial: Conectar um aplicativo do AKS ao Banco de Dados SQL do Azure
- Integrar o Banco de Dados SQL do Azure ao Service Connector
- Conectar-se usando a autenticação do Microsoft Entra
- Abrir Liberdade
- Operador do Open Liberty
- Visão geral da configuração do Open Liberty Server
- Plug-in do Liberty Maven
- Imagens do Open Liberty
- Imagens de contêiner do WebSphere Liberty
Para incorporar o Cache do Azure para Redis em um aplicativo Java, consulte Início Rápido: Usar o Cache do Azure para Redis em Java com o cliente Redisson Redis.
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?