Implantar o aplicativo Java com o Open Liberty ou o WebSphere Liberty no cluster do Serviço de Kubernetes do Azure
Aplica-se a: AKS no Azure Stack HCI 22H2, AKS no Windows Server
Este artigo demonstra como:
- Executar seu aplicativo Java, Java EE, Jacarta EE ou MicroProfile no runtime do Open Liberty ou do WebSphere Liberty.
- Criar a imagem de Docker do aplicativo usando imagens de contêiner do Open Liberty.
- Implante o aplicativo em contêineres em um cluster do AKS local no AKS habilitado pelo Arc usando o Operador do Open Liberty.
O Open Liberty Operator simplifica a implantação e o gerenciamento de aplicativos executados em clusters Kubernetes. Com o Open Liberty Operator, você também pode executar operações mais avançadas, como a coleta de rastreamentos e arquivos de backup.
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 está dividido em duas partes:
A Parte 1 se concentra na implantação dos artefatos necessários no Azure. Essa implantação inclui um grupo de recursos e o Registro de Contêiner do Azure. Para executar essas tarefas, você pode usar o Azure Cloud Shell (mais fácil), que inclui a versão mais recente da CLI do Azure, ou um sistema local com as seguintes ferramentas instaladas:
- Um sistema operacional semelhante ao Unix instalado (por exemplo, Ubuntu, macOS, Windows Subsystem for Linux).
- Instale a CLI do Azure seguindo as diretrizes anteriores.
- Instale uma implementação do Java SE (por exemplo, AdoptOpenJDK OpenJDK 8 LTS/OpenJ9).
- Instale o Maven 3.5.0 ou posterior.
- Instale o Docker para seu sistema operacional.
A Parte 2 se concentra na implantação do aplicativo do Registro de Contêiner do Azure no ambiente do AKS Arc. Para esta seção, você não pode usar o Azure Cloud Shell. Para o ambiente do AKS Arc, os seguintes itens são necessários:
- Um cluster do AKS com pelo menos um nó de trabalho do Linux em execução.
- Um ambiente local
kubectl
configurado que aponta para o cluster do AKS. Você pode usar o comando Get-AksHciCredential do PowerShell para acessar o cluster usandokubectl
o . - Ferramentas de linha de comando do Git instaladas no sistema. Em um sistema Windows, você pode usar o Git Bash como o console principal e, no console do Git Bash, chamar o PowerShell e o Azure quando necessário.
Criar um grupo de recursos no Azure
Um grupo de recursos do Azure é um grupo lógico no qual os recursos do Azure são implantados e gerenciados.
Você pode criar um grupo de recursos chamado java-liberty-project ao usar o comando az group create no local eastus. Esse grupo de recursos é usado posteriormente para criar a instância do Registro de Contêiner do Azure:
RESOURCE_GROUP_NAME=java-liberty-project
az group create --name $RESOURCE_GROUP_NAME --location eastus
Criar uma instância do Registro de Contêiner no Azure
Use o comando az acr create para criar a instância do Registro de Contêiner do Azure. O exemplo a seguir cria uma instância do Registro de Contêiner chamada youruniquecontainerregistryname. Verifique se youruniquecontainerregistryname é exclusivo no Azure:
REGISTRY_NAME=youruniquecontainerregistryname
az acr create --resource-group $RESOURCE_GROUP_NAME --name $REGISTRY_NAME --sku Basic --admin-enabled
Após um curto período de tempo, você deverá ver uma saída JSON semelhante ao exemplo a seguir:
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"resourceGroup": "java-liberty-project",
Conectar-se à instância do Registro de Contêiner no Azure
Você deve entrar na instância do Registro de Contêiner antes de enviar uma imagem para ela. Execute os comandos a seguir para verificar a conexão. Anote seus detalhes de login. Você os usará mais tarde ao se conectar ao AKS:
LOGIN_SERVER=$(az acr show -n $REGISTRY_NAME --query 'loginServer' -o tsv)
USER_NAME=$(az acr credential show -n $REGISTRY_NAME --query 'username' -o tsv)
PASSWORD=$(az acr credential show -n $REGISTRY_NAME --query 'passwords[0].value' -o tsv)
echo $LOGIN_SERVER
echo $USER_NAME
echo $PASSWORD
docker login $LOGIN_SERVER -u $USER_NAME -p $PASSWORD
Você deverá ver Logon bem-sucedido no final da saída do comando se tiver feito logon na instância do Registro de Contêiner com êxito.
Criar imagem de aplicativo no Azure
Para implementar e executar seu aplicativo Liberty no cluster do AKS, você deve primeiro conteinerizar seu aplicativo como uma imagem do Docker usando imagens de contêiner do Open Liberty ou imagens de contêiner do WebSphere Liberty:
- Clone o código de exemplo para este guia. O exemplo está no GitHub.
- Altere o diretório para
javaee-app-simple-cluster
de seu clone local. - Execute
mvn clean package
para empacotar o aplicativo. - Execute
mvn liberty:dev
para testar o aplicativo. Você deve ver O servidor defaultServer está pronto para executar um planeta mais inteligente na saída do comando se o comando foi bem-sucedido. Use CTRL-C para interromper o aplicativo. - Execute um dos seguintes comandos para criar a imagem do aplicativo e enviá-la por push para a instância do Registro de Contêiner:
Construa com a imagem base do Open Liberty se preferir usar o Open Liberty como um tempo de execução Java de software livre leve:
# Build and tag application image. This causes the Container Registry instance to pull the necessary Open Liberty base images. az acr build -t javaee-cafe-simple:1.0.0 -r $REGISTRY_NAME .
Construa com a imagem base do WebSphere Liberty se preferir usar uma versão comercial do Open Liberty:
# Build and tag application image. This causes the Container Registry instance to pull the necessary WebSphere Liberty base images. az acr build -t javaee-cafe-simple:1.0.0 -r $REGISTRY_NAME --file=Dockerfile-wlp .
Conectar-se ao cluster do AKS
Para gerenciar um cluster do Kubernetes, use kubectl, o cliente de linha de comando do Kubernetes. Depois de instalado no Windows, você pode executar kubectl
no prompt de comando, no console do PowerShell e no Git Bash.
Como pré-requisito, você deve configurar seu ambiente local kubectl
para apontar para o cluster do AKS. Você pode usar o comando Get-AksHciCredential do PowerShell para acessar o cluster usando kubectl
:
Get-AksHciCredential -name AksHciClusterName
Observação
O comando anterior usa o local padrão para o arquivo de configuração do Kubernetes, que é %USERPROFILE%.kube. Você pode especificar um local diferente para o arquivo de configuração do Kubernetes usando o -outputLocation
parâmetro.
De volta ao console, para verificar a conexão com o cluster, use o comando kubectl get para retornar uma lista dos nós do cluster:
kubectl get nodes
A saída de exemplo a seguir mostra o único nó criado nas etapas anteriores. Verifique se o status do nó é Pronto:
NAME STATUS ROLES AGE VERSION
aks-nodepool1-xxxxxxxx-yyyyyyyyyy Ready agent 76s v1.18.10
Instalar o Open Liberty Operator
Depois de criar o cluster e conectar-se a ele, instale o Open Liberty Operator executando os seguintes comandos:
OPERATOR_NAMESPACE=default
WATCH_NAMESPACE='""'
# Install Custom Resource Definitions (CRDs) for OpenLibertyApplication
kubectl apply -f https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/master/deploy/releases/0.7.1/openliberty-app-crd.yaml
# Install cluster-level role-based access
curl -L https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/master/deploy/releases/0.7.1/openliberty-app-cluster-rbac.yaml \
| sed -e "s/OPEN_LIBERTY_OPERATOR_NAMESPACE/${OPERATOR_NAMESPACE}/" \
| kubectl apply -f -
# Install the operator
curl -L https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/master/deploy/releases/0.7.1/openliberty-app-operator.yaml \
| sed -e "s/OPEN_LIBERTY_WATCH_NAMESPACE/${WATCH_NAMESPACE}/" \
| kubectl apply -n ${OPERATOR_NAMESPACE} -f -
Implantar um aplicativo no seu cluster do AKS
Siga estas etapas para implantar o aplicativo Liberty no cluster do AKS. Você deve recuperar seus detalhes de login da sessão anterior:
Se você usou o Azure Cloud Shell anteriormente e agora está usando um console separado para se conectar ao AKS, deverá especificar suas credenciais novamente:
LOGIN_SERVER=YourLoginServerFromEarlier USER_NAME=YourUsernameFromEarlier PASSWORD=YourPwdFromEarlier
Crie um segredo de pull para que o cluster do AKS seja autenticado para efetuar pull da imagem da instância do Registro de Contêiner:
kubectl create secret docker-registry acr-secret \ --docker-server=${LOGIN_SERVER} \ --docker-username=${USER_NAME} \ --docker-password=${PASSWORD}
Novamente, se você usou o Azure Cloud Shell anteriormente e agora está usando uma ferramenta ou sessão separada para se conectar ao AKS, deverá clonar o código de exemplo para este guia. O exemplo está no GitHub.
Verifique se o diretório de trabalho atual é javaee-app-simple-cluster em seu clone local.
Execute os comandos a seguir para implantar seu aplicativo Liberty com três réplicas no cluster do AKS. A saída do comando também é mostrada embutida:
# Create OpenLibertyApplication "javaee-app-simple-cluster" cat openlibertyapplication.yaml | sed -e "s/\${Container_Registry_URL}/${LOGIN_SERVER}/g" | sed -e "s/\${REPLICAS}/3/g" | kubectl apply -f - openlibertyapplication.openliberty.io/javaee-app-simple-cluster created # Check if OpenLibertyApplication instance is created kubectl get openlibertyapplication javaee-app-simple-cluster NAME IMAGE EXPOSED RECONCILED AGE javaee-app-simple-cluster youruniquecontainerregistryname.azurecr.io/javaee-cafe-simple:1.0.0 True 59s # Check if deployment created by Operator is ready kubectl get deployment javaee-app-simple-cluster --watch NAME READY UP-TO-DATE AVAILABLE AGE javaee-app-simple-cluster 0/3 3 0 20s
Aguarde até ver 3/3 na coluna READY e 3 na coluna AVAILABLE . Em seguida, você pode usar CTRL-C para interromper o processo de
kubectl
inspeção.
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.
Para monitorar o andamento, use o comando kubectl get service com o argumento --watch
.
kubectl get service javaee-app-simple-cluster --watch
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
javaee-app-simple-cluster LoadBalancer 10.109.118.3 192.168.0.152 80:30580/TCP 68s
Depois que o endereço IP EXTERNAL-IP mudar de endereço IP público pendente para um endereço IP público real, use CTRL-C para interromper o kubectl
processo de observação.
Abra um navegador da Web para o endereço IP externo do seu serviço (192.168.0.152 neste exemplo) para ver a home page do aplicativo. Você deve ver o nome do pod das réplicas do 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 como resultado do balanceamento de carga fornecido pelo cluster do AKS.
Observação
Atualmente, o aplicativo não usa HTTPS. Você deve habilitar o TLS com seus próprios certificados.
Limpar os recursos
Para evitar cobranças do Azure, limpe recursos desnecessários. Quando você não precisar mais do cluster, use o comando az group delete para remover o grupo de recursos, o registro de contêiner e os recursos relacionados do Azure:
RESOURCE_GROUP_NAME=java-liberty-project
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
Para limpar os recursos implantados no AKS, execute os seguintes comandos no console local:
kubectl delete -f https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/master/deploy/releases/0.7.1/openliberty-app-crd.yaml
kubectl delete -f https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/master/deploy/releases/0.7.1/openliberty-app-operator.yaml
kubectl delete -f openlibertyapplication.yaml
Próximas etapas
Para obter mais informações, consulte as referências usadas neste guia: