Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo fornece orientação passo a passo para implementar manualmente o Open/WebSphere Liberty no Azure.
Especificamente, este artigo explica como realizar as seguintes tarefas:
- Execute seu aplicativo Java, Java Enterprise Edition (EE), Jakarta EE ou MicroProfile no tempo de execução do Open Liberty ou WebSphere Liberty.
- Crie a imagem Docker do aplicativo com imagens de contêiner do Liberty usando
az acr build. - Implante o aplicativo em contêiner em um cluster do Serviço Kubernetes do Azure (AKS) usando um Operador Liberty.
Um Liberty Operator simplifica a implantação e o gerenciamento de aplicativos executados em clusters Kubernetes. Com o Open Liberty Operator ou WebSphere Liberty Operator, você também pode executar operações mais avançadas, como a coleta de rastreamentos e dumps.
Para obter uma solução mais automatizada que acelera sua jornada para o AKS usando uma solução do Marketplace disponível no portal do Azure, consulte Implantar um aplicativo Java com Open Liberty/WebSphere Liberty em um cluster do Serviço Kubernetes do Azure (AKS).
Para obter mais informações sobre o Open Liberty, consulte a página do projeto Open Liberty. Para obter mais informações sobre o IBM WebSphere Liberty, consulte a página do produto WebSphere Liberty.
Este artigo destina-se a ajudá-lo a chegar rapidamente à implementaçã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.
Pré-requisitos
- Uma subscrição do Azure. Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
- Azure CLI versão 2.71.0+
- Java Standard Edition (SE), versão 17 - por exemplo, Eclipse Open J9.
- Maven versão 3.5.0+
- Git
- O papel
Ownerou os papéisContributoreUser Access Administratorna subscrição do Azure. Você pode verificar a atribuição seguindo as etapas em Listar atribuições de função do Azure usando o portal do Azure.
Iniciar sessão no Azure
Se ainda não o fez, utilize os seguintes passos para iniciar sessão na sua subscrição do Azure:
Abra o CLI do Azure ou o PowerShell e, em seguida, inicie sessão usando
az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de início de sessão, consulte a página Entrar no Azure com a CLI do Azure.Nota
Se você tiver vários locatários do Azure associados às suas credenciais do Azure, deverá especificar em qual locatário deseja entrar. Você pode especificar um locatário com a
--tenantopção - por exemplo,az login --tenant contoso.onmicrosoft.com.Encontre a versão e as bibliotecas dependentes instaladas usando
az version.Atualize para a versão mais recente usando
az upgrade.
Nota
Ao usar a CLI do Azure, se você for solicitado a instalar uma extensão da CLI do Azure, faça isso. Para obter mais informações sobre extensões, consulte 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 utilizam variáveis. Nas secções seguintes, a diferença é tratada em abas diferentes 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 implementados e geridos.
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 AKS.
export RESOURCE_GROUP_NAME=java-liberty-project
az group create --name $RESOURCE_GROUP_NAME --location eastus2
Criar uma instância de 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.
Nota
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 senha. No entanto, usar 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ê verá a saída JSON que contém as seguintes linhas:
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"resourceGroup": "java-liberty-project",
Recupere o nome do servidor de entrada para a instância do registro do contêiner. Você precisa desse valor quando implanta a imagem do aplicativo no cluster AKS mais tarde.
export LOGIN_SERVER=$(az acr show \
--name $REGISTRY_NAME \
--query 'loginServer' \
--output tsv)
Criar um cluster do AKS
Use az aks create para criar um cluster AKS, conforme mostrado no exemplo a seguir. Este exemplo cria um cluster AKS chamado myAKSCluster com um nó e anexa a instância do registo de contentores 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",
Conectar-se ao cluster AKS
Use as seguintes etapas para gerenciar seu cluster Kubernetes:
Instale
kubectlo cliente de linha de comando do Kubernetes, usandoaz aks install-cli, como mostrado no exemplo a seguir.az aks install-cliUse
az aks get-credentialspara configurarkubectlpara se conectar ao cluster do Kubernetes. Este comando baixa credenciais e configura a CLI do Kubernetes para usá-las, conforme mostrado no exemplo a seguir:Nota
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 do cluster, conforme mostrado no exemplo a seguir:kubectl get nodesA saída de exemplo seguinte mostra o nó único criado nos passos anteriores. Certifique-se de que o status do nó é
Ready:NAME STATUS ROLES AGE VERSION aks-nodepool1-xxxxxxxx-yyyyyyyyyy Ready <none> 76s v1.29.9
Criar uma Base 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 seu 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 único banco de dados e definir o usuário conectado atual como um administrador do Microsoft Entra. Para obter mais informações, consulte Guia de início rápido: criar um único banco de dados - 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
Nota
Você cria um servidor SQL do Azure com a autenticação SQL desabilitada por considerações de segurança. Somente o Microsoft Entra ID é usado para autenticar no servidor. Para obter mais informações sobre como habilitar a autenticação SQL, consulte az sql server create.
Criar uma conexão de serviço no AKS com o Service Connector
Use os comandos a seguir para criar uma conexão entre o cluster AKS e o banco de dados SQL usando o ID de carga de trabalho do Microsoft Entra com o Service Connector. 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
Resolver 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:Encontre 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 do
Python location.Use o seguinte comando para instalar o
pyodbcpacote nosudomodo. Substitua<python-location>pelo local Python copiado na etapa anterior.sudo <python-location> -m pip install pyodbc
libodbc.so: não é possível abrir o arquivo de objeto compartilhado: Não há tal arquivo ou diretório
Instale manualmente o odbc 17/18 para SQL server
Esses erros indicam que o
odbcdriver não está instalado. Corrija o problema usando as seguintes etapas:Nota
Você deve usar a ID de Carga de Trabalho do Microsoft Entra para acesso seguro ao seu 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 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 driver ODBC da Microsoft (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 trecho de código de exemplo YAML fornecido.
Nota
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 mais informações, consulte o valor de exemplo da seção sobre a identidade gerenciada atribuída pelo usuário de Integrar o Banco de Dados SQL do Azure com o Service Connector.Nas seções destacadas no exemplo de implantação do YAML do Kubernetes, copie os valores
serviceAccountNamee os valoressecretRef.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 seguintes comandos. Certifique-se de substituir
<service-account-name>e<secret-name>com os 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 AKS.
Instale o operador Open Liberty
Nesta seção, você instala o Open Liberty Operator no cluster AKS para hospedar o aplicativo Liberty.
Instale o Open Liberty Operator usando os seguintes comandos:
Nota
Este guia orienta você a instalar o Open Liberty Operator. Para usar o WebSphere Liberty Operator, 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 implementar e executar seu aplicativo Liberty no cluster AKS, conteinerize seu aplicativo como uma imagem do Docker usando imagens de contêiner do Open Liberty Images ou do WebSphere Liberty.
Siga as etapas nesta seção para implantar o aplicativo de exemplo no tempo de execução do Liberty. Estes passos usam o Maven.
Confira o aplicativo
Clone o código de exemplo para este guia usando os comandos a seguir. O exemplo está no repositório GitHub Open Liberty/WebSphere Liberty on Azure Kubernetes Service Samples , 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 vir uma mensagem sobre estar no estado detached HEAD, é seguro ignorá-la. Isso significa apenas que verificaste uma etiqueta. 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 do banco de dados para o cluster Open Liberty e WebSphere Liberty. Ele define uma azure.sql.connectionstring variável que é usada para se conectar ao Banco de Dados SQL do Azure.
O arquivo pom.xml é o arquivo de modelo de objeto de projeto (POM) Maven que contém as informações de configuração para o 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.
Nota
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 relacional com JDBC (Java Database Connectivity).
Compilar o projeto
Agora que você reuniu as propriedades necessárias, crie o aplicativo usando os seguintes comandos. O arquivo POM para o projeto lê muitas variáveis do ambiente. Como parte da compilação do Maven, essas variáveis são usadas para preencher valores nos arquivos YAML localizados em src/main/aks. Você pode fazer algo semelhante para sua aplicação 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
Crie a imagem para a 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 do contêiner, cria a imagem e a armazena na instância do registro do contêiner.
Implantar o aplicativo no cluster AKS
Use as seguintes etapas para implantar o aplicativo Liberty no cluster 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 resultado a seguir é típico. 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 seguinte saída é típica:
NAME READY UP-TO-DATE AVAILABLE AGE javaee-cafe-cluster 0/3 3 0 20sAguarde até ver
3/3na colunaREADYe3na colunaAVAILABLE, depois use Ctrl+C para parar o processo dekubectlobservação.
Testar a aplicação
Quando o aplicativo é executado, um serviço de balanceador de carga do Kubernetes expõe o front-end do aplicativo à Internet. Este 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
Nota
Se você não vir um URL válido da saída, aguarde um pouco e execute o comando novamente.
Abra o URL em um navegador da Web e verifique a página inicial do aplicativo. Se a página não carregar corretamente, atualize-a mais tarde, depois que o aplicativo for iniciado. Deverá ver o nome do pod das réplicas do seu aplicativo exibido no canto superior esquerdo da página. Aguarde alguns minutos e atualize a página para ver um nome de pod diferente exibido devido ao balanceamento de carga fornecido pelo cluster AKS.
Nota
Atualmente, o aplicativo não usa HTTPS. Recomendamos que você habilite o Transport Layer Security (TLS) com seus próprios certificados. Para obter mais informações, consulte Usar TLS com um controlador de entrada no Serviço Kubernetes do Azure (AKS).
Limpar recursos
Para evitar cobranças do Azure, você deve limpar 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óximos passos
Você pode aprender mais com as seguintes referências usadas neste guia:
- O que é o Serviço Kubernetes do Azure (AKS)?
- Tutorial: Conectar um aplicativo AKS ao Banco de Dados SQL do Azure
- Integrar o Banco de Dados SQL do Azure com o Service Connector
- Conectar-se usando a autenticação do Microsoft Entra
- Liberdade Aberta
- Operador Open Liberty
- Visão geral da configuração do Open Liberty Server
- Liberty Maven Plugin
- Open Liberty Imagens
- Imagens de contêiner do WebSphere Liberty
Para incorporar o Cache Redis do Azure em um aplicativo Java, consulte Guia de início rápido: usar o Cache Redis do Azure em Java com o cliente Redisson Redis.
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?