Implantar um aplicativo Java com o WebLogic Server em um cluster do AKS (Serviço de Kubernetes do Azure)
Este artigo demonstra como:
- Execute seu aplicativo Java no Oracle WebLogic Server (WLS).
- Configure um cluster do WebLogic Server no AKS usando uma oferta do Azure Marketplace.
- Compile uma imagem do Docker de aplicativo que inclua modelos do WebLogic Deploy Tooling (WDT).
- Implante o aplicativo conteinerizado no cluster do WebLogic Server no AKS com conexão ao SQL do Microsoft Azure.
Este artigo usa a oferta do Azure Marketplace para o WebLogic Server para acelerar a jornada no AKS. A oferta provisiona automaticamente vários recursos do Azure, incluindo os seguintes:
- Uma instância do Registro de Contêiner do Azure
- Um cluster do AKS
- Uma instância do AGIC (Controlador de Entrada do Gateway de Aplicativo do Azure)
- O Operador do Kubernetes do WebLogic
- Uma imagem de contêiner, incluindo o runtime do WebLogic
- Um cluster do WebLogic Server sem um aplicativo
Depois, o artigo mostra como compilar uma imagem para atualizar o cluster do WebLogic Server. A imagem fornece o aplicativo e os modelos WDT.
Se você prefere um método menos automatizado para implantar o WebLogic no AKS, confira o guia detalhado na documentação oficial da Oracle para Serviço de Kubernetes do Azure.
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 WebLogic do AKS, preencha esta breve pesquisa sobre migração WebLogic e inclua suas informações de contato. A equipe de gerentes de programa, arquitetos e engenheiros entrará em contato prontamente com você para iniciar uma estreita colaboração.
Pré-requisitos
- Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.
- Verifique se a identidade do Azure que você usa para entrar e concluir este artigo tem a função Proprietário na assinatura atual ou as funções Colaborador e Administrador de Acesso do Usuário na assinatura atual. Para obter uma visão geral das funções do Azure, consulte O que é o RBAC (controle de acesso baseado em função) do Azure? Para obter detalhes sobre as funções específicas exigidas pelo WLS no AKS, consulte Funções internas do Azure.
- Tenha as credenciais para uma conta de SSO (logon único) da Oracle. Para criar uma, consulte Criar conta Oracle.
- Aceitar os termos de licença do WebLogic Server.
- Acesse o Registro de Contêiner Oracle e entre.
- Se você tiver um direito de suporte, selecione Middleware e, em seguida, pesquise e selecione weblogic_cpu.
- Se você não tiver um direito de suporte da Oracle, selecione Middleware e, em seguida, pesquise e selecione weblogic.
- Aceite o contrato de licença.
Observação
Obtenha um direito de suporte da Oracle antes de ir para a produção. Não fazer isso resulta na execução de imagens inseguras que não são corrigidas por falhas críticas de segurança. Para obter mais informações sobre as atualizações críticas de patch da Oracle, consulte Atualizações críticas de patch, Boletins e Alertas de segurança da Oracle.
- Prepare um computador local com o sistema operacional semelhante ao Unix instalado, como Ubuntu, Azure Linux, macOS, Subsistema do Windows para Linux.
- CLI do Azure. Use
az --version
para testar se o az funciona. Este documento foi testado com a versão 2.55.1. - kubectl. Use
kubectl version
para testar se o kubectl funciona. Este documento foi testado com a versão v1.21.2. - Um Kit de Desenvolvimento Java (JDK). O artigo direciona você para instalar Microsoft Build do OpenJDK 11. Verifique se a variável de ambiente
JAVA_HOME
está definida corretamente nos shells em que você executa os comandos. - Maven 3.5.0 ou superior.
- Verifique se você tem o utilitário de compactação/descompactação instalado. Use
zip/unzip -v
para testar sezip/unzip
funciona.
- CLI do Azure. Use
Criar um Banco de Dados SQL do Azure
Esta seção cria um Banco de Dados SQL do Azure usando autenticação do Microsoft Entra, com conexão de identidade gerenciada habilitada.
Criar um grupo de recursos
Crie um grupo de recursos com az group create. Como os grupos de recursos devem ser exclusivos em uma assinatura, escolha um nome exclusivo. Uma maneira fácil de ter nomes exclusivos é usar uma combinação de suas iniciais, a data de hoje e algum identificador. Por exemplo, abc1228rg
. Este exemplo cria um grupo de recursos chamado abc1228rg
na localização eastus
:
export RESOURCE_GROUP_NAME="abc1228rg"
az group create \
--name ${RESOURCE_GROUP_NAME} \
--location eastus
Criar um servidor de banco de dados e um banco de dados
Crie um servidor com o comando az sql server create. Este exemplo cria um Servidor chamado myazuresql20130213
com usuário administrador azureuser
e senha de administrador. Substitua <your-password>
pela sua senha. Para obter mais informações, confira Início Rápido: Criar um banco de dados individual - Banco de Dados SQL do Azure.
Observação
Mesmo que você esteja usando um nome de usuário e senha aqui, estas credenciais não são expostas fora do banco de dados. A conexão entre a camada de aplicativo e o banco de dados é protegida com identidades gerenciadas.
export AZURESQL_SERVER_NAME="myazuresql20130213"
export AZURESQL_ADMIN_USER="azureuser"
export AZURESQL_ADMIN_PASSWORD="<your-password>"
export DATABASE_NAME="mysingledatabase20230213"
az sql server create \
--resource-group $RESOURCE_GROUP_NAME \
--name $AZURESQL_SERVER_NAME \
--location westus \
--admin-user $AZURESQL_ADMIN_USER \
--admin-password $AZURESQL_ADMIN_PASSWORD
Crie um banco de dados com o comando az sql db create na camada de computação sem servidor.
az sql db create \
--resource-group $RESOURCE_GROUP_NAME \
--server $AZURESQL_SERVER_NAME \
--name $DATABASE_NAME \
--sample-name AdventureWorksLT \
--edition GeneralPurpose \
--compute-model Serverless \
--family Gen5 \
--capacity 2
Configurar um administrador do Microsoft Entra
Para obter informações sobre como o SQL Server do Azure interage com identidades gerenciadas, consulte Conectar-se usando a autenticação do Microsoft Entra.
Use as etapas a seguir para configurar uma conta de administrador do Microsoft Entra no servidor SQL do Azure a partir do portal do Azure:
- No portal doAzure, abra a instância
myazuresql20130213
do SQL Server do Azure. - Selecione Configurações e, em seguida, selecione Microsoft Entra ID. Na página Microsoft Entra ID, selecione Definir administrador.
- Na página Adicionar administrador, pesquise um usuário, selecione o usuário ou grupo que será um administrador e, em seguida, selecione Selecionar.
- Na parte superior da página Microsoft Entra ID, selecione Salvar. Para usuários e grupos do Microsoft Entra, a ID do objeto é exibida ao lado do nome do administrador.
- O processo de alteração do administrador pode levar vários minutos. Em seguida, o novo administrador aparece na caixa Microsoft Entra ID.
Criar uma identidade gerenciada atribuída ao usuário
Depois, na CLI do Azure, crie uma identidade na sua assinatura usando o comando az identity create. Use essa identidade gerenciada para se conectar ao banco de dados.
az identity create \
--resource-group ${RESOURCE_GROUP_NAME} \
--name myManagedIdentity
Criar um usuário de banco de dados para a sua identidade gerenciada
Agora, conecte-se como usuário administrador do Microsoft Entra ao banco de dados SQL do Azure no portal do Azure e crie um usuário para sua identidade gerenciada.
Primeiro, crie uma regra de firewall para acessar o servidor SQL do Azure do portal, como mostrado nas etapas a seguir:
- No portal doAzure, abra a instância
myazuresql20130213
do SQL Server do Azure. - Selecione Segurança e, depois, Rede.
- Em Regras do firewall, selecione Adicione seu endereço IP do cliente IPV4.
- Na seção Exceções, marque Permitir que os serviços e os recursos do Azure acessem este servidor.
- Selecione Salvar.
Depois que a regra de firewall for criada, você poderá acessar o SQL Server do Azure pelo portal. Use as etapas a seguir para criar um usuário do banco de dados:
Selecione Configurações e, depois, Bancos de dados SQL. Selecione
mysingledatabase20230213
.Selecione Editor de consultas. Na página Bem-vindo ao Editor de Consultas do Banco de Dados SQL, em Autenticação do Active Directory, encontre uma mensagem como
Logged in as user@contoso.com
.Selecione Continuar como user@contoso.com, em que
user
é o nome da sua conta do administrador do AD.Depois de entrar, no editor de Consulta 1, execute os comandos a seguir para criar um usuário de banco de dados para a identidade gerenciada
myManagedIdentity
.CREATE USER "myManagedIdentity" FROM EXTERNAL PROVIDER ALTER ROLE db_datareader ADD MEMBER "myManagedIdentity"; ALTER ROLE db_datawriter ADD MEMBER "myManagedIdentity"; ALTER ROLE db_ddladmin ADD MEMBER "myManagedIdentity"; GO
No editor de Consulta 1, selecione Executar para executar os comandos do SQL.
Se os comandos forem concluídos com sucesso, você pode encontrar uma mensagem dizendo
Query succeeded: Affected rows: 0
.
Use o seguinte comando para obter a cadeia de conexão que você usará na próxima seção:
export CONNECTION_STRING="jdbc:sqlserver://${AZURESQL_SERVER_NAME}.database.windows.net:1433;database=${DATABASE_NAME};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;"
echo ${CONNECTION_STRING}
Crie um esquema para o aplicativo de exemplo
Selecione Nova Consulta e, em seguida, no editor de consultas, execute a seguinte consulta:
CREATE TABLE COFFEE (ID NUMERIC(19) NOT NULL, NAME VARCHAR(255) NULL, PRICE FLOAT(32) NULL, PRIMARY KEY (ID));
CREATE TABLE SEQUENCE (SEQ_NAME VARCHAR(50) NOT NULL, SEQ_COUNT NUMERIC(28) NULL, PRIMARY KEY (SEQ_NAME));
INSERT INTO SEQUENCE VALUES ('SEQ_GEN',0);
Após uma execução bem-sucedida, você verá a mensagem Consulta bem-sucedida: Linhas afetadas: 1. Se você não vir essa mensagem, resolva o problema antes de prosseguir.
Você pode prosseguir para implantar o WLS na oferta do AKS.
Implantar o WebLogic Server no AKS
Use as etapas a seguir para encontrar o Servidor WebLogic na oferta do AKS e preencher o painel Básico:
Na barra de pesquisa na parte superior do portal do Azure, insira weblogic. Nos resultados da pesquisa sugeridos automaticamente, na seção Marketplace, selecione WebLogic Server no AKS.
Você também pode ir diretamente para a oferta WebLogic Server no AKS.
Na página da oferta, selecione Criar.
No painel Informações básicas, verifique se o valor mostrado no campo Assinatura é o mesmo que você usou para entrar no Azure. Verifique se você tem as funções listadas na seção de pré-requisitos para a assinatura.
Você deve implantar a oferta em um grupo de recursos vazio. No campo Grupo de recursos, selecione Criar novo e preencha um valor para o grupo de recursos. Como os grupos de recursos devem ser exclusivos em uma assinatura, escolha um nome exclusivo. Uma forma fácil de ter nomes exclusivos é usar uma combinação de suas iniciais, a data de hoje e algum identificador, por exemplo,
ejb0723wls
.Em Detalhes da instância, selecione a região para a implantação. Para obter uma lista das regiões do Azure em que o AKS está disponível, consulte Disponibilidade da região do AKS.
Em Credenciais para WebLogic, deixe o valor padrão do Nome de usuário para o Administrador do WebLogic.
Preencha
wlsAksCluster2022
na Senha de Administrador do WebLogic. Use o mesmo valor para os campos de confirmação e Criptografia de senha para o modelo do WebLogic.Selecione Avançar.
Use as etapas a seguir para iniciar o processo de implantação:
Role até a seção rotulada Fornecer uma conta de SSO (logon único) da Oracle. Preencha as credenciais de SSO da Oracle de acordo com as pré-condições.
Anote as etapas da caixa de informações começando com Antes de avançar, você precisa aceitar os Termos e Restrições Padrão da Oracle.
Dependendo se a conta de SSO da Oracle tem ou não um direito de suporte da Oracle, escolha a opção apropriada em Selecionar o tipo de Imagens do WebLogic Server. Se a conta tiver um direito de suporte, selecione Imagens Corrigidas do WebLogic Server. Caso contrário, selecione Imagens Gerais do WebLogic Server.
Mantenha o valor indicado em Selecionar combinação desejada do WebLogic Server… com o valor padrão. Você tem uma ampla gama de opções para o WebLogic Server, o JDK e a versão do sistema operacional.
Na seção Aplicativo, ao lado de Implantar um aplicativo?, selecione Não.
As etapas a seguir fazem com que o console de administração do WebLogic Server e o aplicativo de amostra sejam expostos à Internet pública com um complemento de entrada do Gateway de Aplicativo interno. Para obter mais informações, confira O que é o Controlador de Entrada do Gateway de Aplicativo?
Selecione Avançar para ver o painel TLS/SSL.
Escolha Avançar para ver o painel Balanceamento de carga.
Ao lado de Opções de Balanceamento de Carga, selecione o Controlador de Entrada do Gateway de Aplicativo.
Em Controlador de Entrada do Gateway de Aplicativo, você verá todos os campos preenchidos previamente com os padrões em Rede virtual e Sub-rede. Mantenha os valores padrão.
Em Criar entrada para o Console de Administração, selecione Sim.
Selecione Avançar para ver o painel DNS.
Selecione Avançar para ver o painel Banco de Dados.
Use as etapas a seguir para configurar uma Conexão de banco de dados usando uma identidade gerenciada:
- Em Conectar a um banco de dados?, selecione Sim.
- Em Configurações de conexão, para Escolher tipo de banco de dados, abra o menu suspenso e selecione Microsoft SQL Server (com suporte para conexão sem senha).
- Para Nome JNDI, insira jdbc/WebLogicCafeDB.
- Para String de Conexão de Fonte de Dados, insira a string de conexão obtida na última seção.
- Selecione Usar conexão de fonte de dados sem senha.
- Para Identidade gerenciada atribuída pelo usuário, selecione a identidade gerenciada que você criou na etapa anterior. Neste exemplo, o nome é
myManagedIdentity
. - Selecione Adicionar.
A seção Configurações de conexão deve se parecer com a seguinte captura de tela:
Use as etapas a seguir para concluir a Implantação:
- Selecione Examinar + criar. Certifique-se de que a validação não falhe. Em caso de erro, corrija os problemas de validação e selecione Revisar + criar novamente.
- Selecione Criar.
- Acompanhe o progresso da implantação na página Implantação em andamento.
Dependendo das condições da rede e de outras atividades na região selecionada, a implantação pode levar até 50 minutos para ser concluída.
Observação
Se sua organização exigir que você implante a carga de trabalho em uma rede virtual corporativa sem IPs públicos permitidos, você pode escolher o Serviço de Balanceador de Carga Interno. Para configurar o Serviço de Balanceador de Carga interno, use as etapas a seguir na guia Balanceamento de carga:
Para Opções de Balanceamento de Carga, selecione Serviço Standard Load Balancer.
Selecione Usar Balanceador de Carga Interno.
Adicione as seguintes linhas à tabela:
Prefixo do nome de serviço Destino Porta wls-admin-internal
admin-server
7001 wls-cluster-internal
cluster-1
8001
A guia Balanceamento de carga deve se parecer com a seguinte captura de tela:
Após a Implantação, você pode encontrar as URLs de acesso do servidor de administrador e cluster na saída, rotuladas adminConsoleExternalUrl e clusterExternalUrl.
Analisar a saída da implantação
Use as etapas desta seção para verificar se a implantação foi bem-sucedida.
Se você saiu da página A implantação está em andamento, as etapas a seguir mostram como voltar para ela. Se você ainda estiver na página que mostra A implantação foi concluída, vá para a etapa 5, após a próxima captura de tela.
No canto de qualquer página do portal do Azure, selecione o menu de hambúrguer e escolha Grupos de recursos.
Na caixa com o texto Filtrar para qualquer campo, insira os primeiros caracteres do grupo de recursos criado anteriormente. Se você seguiu a convenção recomendada, insira suas iniciais e selecione o grupo de recursos apropriado.
No painel de navegação, na seção Configurações, escolha Implantações. Você verá uma lista ordenada das implantações nesse grupo de recursos, com a mais recente primeiro.
Role até a entrada mais antiga nesta lista. Essa entrada corresponde à implantação iniciada na seção anterior. Selecione a implantação mais antiga, conforme mostrado na captura de tela a seguir.
No painel de navegação, selecione Saídas. Essa lista mostra os valores de saída da implantação. Informações úteis são incluídas nas saídas.
O valor adminConsoleExternalUrl é o link totalmente qualificado e visível na Internet pública para o console de administração do WebLogic Server desse cluster do AKS. Selecione o ícone Copiar ao lado do valor do campo para copiar o link para a área de transferência. Salve esse valor para mais tarde.
O valor clusterExternalUrl é o link público e totalmente qualificado visível na Internet para o aplicativo de amostra implantado no WebLogic Server neste cluster do AKS. Selecione o ícone Copiar ao lado do valor do campo para copiar o link para a área de transferência. Salve esse valor para mais tarde.
O valor de shellCmdtoOutputWlsImageModelYaml é a cadeia de caracteres base64 do modelo do WDT que é usada para compilar a imagem de contêiner. Salve esse valor para mais tarde.
O valor de shellCmdtoOutputWlsImageProperties é a cadeia de caracteres base64 das propriedades do modelo do WDT que é usada para compilar a imagem de contêiner. Salve esse valor para mais tarde.
O valor de shellCmdtoConnectAks é o comando da CLI do Azure para se conectar a esse cluster específico do AKS.
Os outros valores nas saídas estão além do escopo deste artigo, mas são explicados com detalhes no guia do usuário do WebLogic no AKS.
Configurar e implantar um aplicativo de exemplo
A oferta provisiona o cluster do WebLogic Server via modelo na imagem. Atualmente, o cluster do WebLogic Server não tem nenhum aplicativo implantado.
Esta seção atualiza o cluster do WebLogic Server implantando um aplicativo de amostra usando a imagem auxiliar.
Fazer check-out do aplicativo
Nesta seção, você clonará o código de exemplo deste guia. A amostra está no GitHub no repositório weblogic-on-azure na pasta javaee/weblogic-cafe/. Esta é a estrutura de arquivos do aplicativo.
weblogic-cafe
├── pom.xml
└── src
└── main
├── java
│ └── cafe
│ ├── model
│ │ ├── CafeRepository.java
│ │ └── entity
│ │ └── Coffee.java
│ └── web
│ ├── rest
│ │ └── CafeResource.java
│ └── view
│ └── Cafe.java
├── resources
│ ├── META-INF
│ │ └── persistence.xml
│ └── cafe
│ └── web
│ ├── messages.properties
│ └── messages_es.properties
└── webapp
├── WEB-INF
│ ├── beans.xml
│ ├── faces-config.xml
│ └── web.xml
├── index.xhtml
└── resources
└── components
└── inputPrice.xhtml
Use os seguintes comandos para clonar o repositório:
# cd <parent-directory-to-check-out-sample-code>
export BASE_DIR=$PWD
git clone --single-branch https://github.com/microsoft/weblogic-on-azure.git --branch 20240201 $BASE_DIR/weblogic-on-azure
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.
Use o seguinte comando para compilar javaee/weblogic-cafe/:
mvn clean package --file $BASE_DIR/weblogic-on-azure/javaee/weblogic-cafe/pom.xml
O pacote será gerado com êxito e estará localizado em $BASE_DIR/weblogic-on-azure/javaee/weblogic-cafe/target/weblogic-cafe.war. Se você não vir o pacote, resolva o problema antes de continuar.
Usar Registro de Contêiner do Azure para criar uma imagem auxiliar
As etapas desta seção mostram como criar uma imagem auxiliar. Essa imagem inclui os seguintes componentes:
- Os arquivos do modelo Modelo na Imagem
- Seu aplicativo
- O arquivo de driver Java Database Connectivity (JDBC)
- A instalação do WebLogic Deploy Tooling
Uma imagem auxiliar é uma imagem de contêiner do Docker que contém o aplicativo e a configuração. O WebLogic Kubernetes Operator combina a imagem auxiliar com a domain.spec.image
no cluster do AKS que contém o WebLogic Server, o JDK e o sistema operacional. Para obter mais informações sobre imagens auxiliares, confira Imagens auxiliares na documentação do Oracle.
Esta seção exige um terminal do Linux com a CLI do Azure e o kubectl instalados.
Use as seguintes etapas para compilar a imagem:
Use os seguintes comandos para criar um diretório para preparar os modelos e o aplicativo:
mkdir -p ${BASE_DIR}/mystaging/models cd ${BASE_DIR}/mystaging/models
Copie o valor de shellCmdtoOutputWlsImageModelYaml que você salvou das saídas de implantação, cole-o na janela do Bash e execute o comando. O resultado deve ser semelhante ao seguinte exemplo:
echo -e IyBDb3B5cmlna...Cgo= | base64 -d > model.yaml
Esse comando produz um arquivo ${BASE_DIR}/mystaging/models/model.yaml com um conteúdo semelhante ao seguinte exemplo:
# Copyright (c) 2020, 2021, Oracle and/or its affiliates. # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. # Based on ./kubernetes/samples/scripts/create-weblogic-domain/model-in-image/model-images/model-in-image__WLS-v1/model.10.yaml # in https://github.com/oracle/weblogic-kubernetes-operator. domainInfo: AdminUserName: "@@SECRET:__weblogic-credentials__:username@@" AdminPassword: "@@SECRET:__weblogic-credentials__:password@@" ServerStartMode: "prod" topology: Name: "@@ENV:CUSTOM_DOMAIN_NAME@@" ProductionModeEnabled: true AdminServerName: "admin-server" Cluster: "cluster-1": DynamicServers: ServerTemplate: "cluster-1-template" ServerNamePrefix: "@@ENV:MANAGED_SERVER_PREFIX@@" DynamicClusterSize: "@@PROP:CLUSTER_SIZE@@" MaxDynamicClusterSize: "@@PROP:CLUSTER_SIZE@@" MinDynamicClusterSize: "0" CalculatedListenPorts: false Server: "admin-server": ListenPort: 7001 ServerTemplate: "cluster-1-template": Cluster: "cluster-1" ListenPort: 8001 SecurityConfiguration: NodeManagerUsername: "@@SECRET:__weblogic-credentials__:username@@" NodeManagerPasswordEncrypted: "@@SECRET:__weblogic-credentials__:password@@" resources: SelfTuning: MinThreadsConstraint: SampleMinThreads: Target: "cluster-1" Count: 1 MaxThreadsConstraint: SampleMaxThreads: Target: "cluster-1" Count: 10 WorkManager: SampleWM: Target: "cluster-1" MinThreadsConstraint: "SampleMinThreads" MaxThreadsConstraint: "SampleMaxThreads"
Da mesma forma, copie o valor de shellCmdtoOutputWlsImageProperties, cole-o na janela do Bash e execute o comando. O resultado deve ser semelhante ao seguinte exemplo:
echo -e IyBDb3B5cml...pFPTUK | base64 -d > model.properties
Esse comando produz um arquivo ${BASE_DIR}/mystaging/models/model.properties com um conteúdo semelhante ao seguinte exemplo:
# Copyright (c) 2021, Oracle Corporation and/or its affiliates. # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. # Based on ./kubernetes/samples/scripts/create-weblogic-domain/model-in-image/model-images/model-in-image__WLS-v1/model.10.properties # in https://github.com/oracle/weblogic-kubernetes-operator. CLUSTER_SIZE=5
Use as etapas a seguir para criar o arquivo de modelo de aplicativo.
Use os seguintes comandos para copiar weblogic-cafe.war e salvá-lo em wlsdeploy/applications:
mkdir -p ${BASE_DIR}/mystaging/models/wlsdeploy/applications cp $BASE_DIR/weblogic-on-azure/javaee/weblogic-cafe/target/weblogic-cafe.war ${BASE_DIR}/mystaging/models/wlsdeploy/applications/weblogic-cafe.war
Use os comandos a seguir para criar o arquivo de modelo de aplicativo com o conteúdo mostrado. Salve o arquivo de modelo em ${BASE_DIR}/mystaging/models/appmodel.yaml.
cat <<EOF >appmodel.yaml appDeployments: Application: weblogic-cafe: SourcePath: 'wlsdeploy/applications/weblogic-cafe.war' ModuleType: ear Target: 'cluster-1' EOF
Use as etapas a seguir para configurar a conexão da fonte de dados.
Use as etapas a seguir para baixar e instalar o Microsoft SQL Server JDBC driver e Extensão de Identidade do Azure que habilita conexões de banco de dados usando a Identidade Gerenciada do Azure.
Use os seguintes comandos para baixar e instalar o Microsoft SQL Server JDBC driver para
wlsdeploy/externalJDBCLibraries
:export DRIVER_VERSION="10.2.1.jre8" export MSSQL_DRIVER_URL="https://repo.maven.apache.org/maven2/com/microsoft/sqlserver/mssql-jdbc/${DRIVER_VERSION}/mssql-jdbc-${DRIVER_VERSION}.jar" mkdir ${BASE_DIR}/mystaging/models/wlsdeploy/externalJDBCLibraries curl -m 120 -fL ${MSSQL_DRIVER_URL} -o ${BASE_DIR}/mystaging/models/wlsdeploy/externalJDBCLibraries/mssql-jdbc-${DRIVER_VERSION}.jar
Use os seguintes comandos para instalar a Extensão de Identidade do Azure em
wlsdeploy/classpathLibraries
:curl -LO https://github.com/oracle/weblogic-azure/raw/refs/heads/main/weblogic-azure-aks/src/main/resources/azure-identity-extensions.xml mvn dependency:copy-dependencies -f azure-identity-extensions.xml mkdir -p ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/azureLibraries mkdir ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/jackson # fix JARs conflict issue in GA images, put jackson libraries to PRE_CLASSPATH to upgrade the existing libs. mv target/dependency/jackson-annotations-*.jar ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/jackson/ mv target/dependency/jackson-core-*.jar ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/jackson/ mv target/dependency/jackson-databind-*.jar ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/jackson/ mv target/dependency/jackson-dataformat-xml-*.jar ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/jackson/ # Thoes jars will be appended to CLASSPATH mv target/dependency/*.jar ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/azureLibraries/
Use os seguintes comandos para limpar os recursos:
rm target -f -r rm azure-identity-extensions.xml
Conecte-se ao cluster do AKS copiando o valor de shellCmdtoConnectAks que você já salvou, colando-o na janela do Bash e executando o comando. O resultado deve ser semelhante ao seguinte exemplo:
az account set --subscription <subscription>; az aks get-credentials \ --resource-group <resource-group> \ --name <name>
Você deverá ver uma saída semelhante ao exemplo a seguir. Se você não vir essa saída, resolva o problema antes de prosseguir.
Merged "<name>" as current context in /Users/<username>/.kube/config
Exportar o modelo da conexão de banco de dados e salvar em ${BASE_DIR}/mystaging/models/dbmodel.yaml. As etapas a seguir extraem o modelo de configuração do banco de dados do ConfigMap
sample-domain1-wdt-config-map
. O nome segue o formato<domain-uid>-wdt-config-map
, onde<domain-uid>
é definido durante a implantação da oferta. Se você modificou o valor padrão, substitua pelo seu próprio domínio de UID.A chave de dados é <db-secret-name>.yaml. Use o seguinte comando para recuperar o nome do segredo do banco de dados:
export WLS_DOMAIN_UID=sample-domain1 export WLS_DOMAIN_NS=${WLS_DOMAIN_UID}-ns export DB_K8S_SECRET_NAME=$(kubectl get secret -n ${WLS_DOMAIN_NS} | grep "ds-secret" | awk '{print $1}')
Em seguida, extrair o modelo de banco de dados com este comando:
kubectl get configmap sample-domain1-wdt-config-map -n ${WLS_DOMAIN_NS} -o=jsonpath="{['data']['${DB_K8S_SECRET_NAME}\.yaml']}" >${BASE_DIR}/mystaging/models/dbmodel.yaml
Finalmente, use o seguinte comando para verificar o conteúdo de dbmodel.yaml.
cat ${BASE_DIR}/mystaging/models/dbmodel.yaml
A saída deste comando deve se assemelhar à seguinte estrutura:
# Copyright (c) 2020, 2021, Oracle and/or its affiliates. # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. resources: JDBCSystemResource: jdbc/WebLogicCafeDB: Target: 'cluster-1' JdbcResource: JDBCDataSourceParams: JNDIName: [ jdbc/WebLogicCafeDB ] GlobalTransactionsProtocol: OnePhaseCommit JDBCDriverParams: DriverName: com.microsoft.sqlserver.jdbc.SQLServerDriver URL: '@@SECRET:ds-secret-sqlserver-1727147748:url@@' PasswordEncrypted: '@@SECRET:ds-secret-sqlserver-1727147748:password@@' Properties: user: Value: '@@SECRET:ds-secret-sqlserver-1727147748:user@@' JDBCConnectionPoolParams: TestTableName: SQL SELECT 1 TestConnectionsOnReserve: true
Use os seguintes comandos para criar um arquivo de arquivos e depois remover a pasta wlsdeploy, que você não precisa mais:
cd ${BASE_DIR}/mystaging/models zip -r archive.zip wlsdeploy rm -f -r wlsdeploy
Use os seguintes comandos para baixar e instalar o WDT (WebLogic Deploy Tooling) no diretório de teste e remover os arquivos weblogic-deploy/bin/*.cmd, que não são usados em ambientes UNIX:
cd ${BASE_DIR}/mystaging curl -m 120 -fL https://github.com/oracle/weblogic-deploy-tooling/releases/latest/download/weblogic-deploy.zip -o weblogic-deploy.zip unzip weblogic-deploy.zip -d . rm ./weblogic-deploy/bin/*.cmd
Use o seguinte comando para limpar o instalador do WDT:
rm weblogic-deploy.zip
Use os seguintes comandos para criar um arquivo docker:
cd ${BASE_DIR}/mystaging cat <<EOF >Dockerfile FROM busybox ARG AUXILIARY_IMAGE_PATH=/auxiliary ARG USER=oracle ARG USERID=1000 ARG GROUP=root ENV AUXILIARY_IMAGE_PATH=\${AUXILIARY_IMAGE_PATH} RUN adduser -D -u \${USERID} -G \$GROUP \$USER COPY --chown=\$USER:\$GROUP ./ \${AUXILIARY_IMAGE_PATH}/ USER \$USER EOF
Execute o comando
az acr build
usando ${BASE_DIR}/mystaging/Dockerfile, conforme mostrado no seguinte exemplo:export ACR_NAME=<value-from-clipboard> export IMAGE="wlsaks-auxiliary-image:1.0"
Use os seguintes comandos para verificar novamente os arquivos de preparo:
cd ${BASE_DIR}/mystaging find -maxdepth 2 -type f -print
Esses comandos produzem uma saída semelhante ao seguinte exemplo:
./models/model.properties ./models/model.yaml ./models/appmodel.yaml ./models/dbmodel.yaml ./models/archive.zip ./Dockerfile ./weblogic-deploy/VERSION.txt ./weblogic-deploy/LICENSE.txt
Criar a imagem com
az acr build
, como mostrado no exemplo a seguir:az acr build -t ${IMAGE} --build-arg AUXILIARY_IMAGE_PATH=/auxiliary -r ${ACR_NAME} --platform linux/amd64 .
Quando você cria a imagem com êxito, a saída é semelhante ao seguinte exemplo:
... Step 1/9 : FROM busybox latest: Pulling from library/busybox Digest: sha256:9ae97d36d26566ff84e8893c64a6dc4fe8ca6d1144bf5b87b2b85a32def253c7 Status: Image is up to date for busybox:latest ---> 65ad0d468eb1 Step 2/9 : ARG AUXILIARY_IMAGE_PATH=/auxiliary ---> Running in 1f8f4e82ccb6 Removing intermediate container 1f8f4e82ccb6 ---> 947fde618be9 Step 3/9 : ARG USER=oracle ---> Running in dda021591e41 Removing intermediate container dda021591e41 ---> f43d84be4517 Step 4/9 : ARG USERID=1000 ---> Running in cac4df6dfd13 Removing intermediate container cac4df6dfd13 ---> e5513f426c74 Step 5/9 : ARG GROUP=root ---> Running in 8fec1763270c Removing intermediate container 8fec1763270c ---> 9ef233dbe279 Step 6/9 : ENV AUXILIARY_IMAGE_PATH=${AUXILIARY_IMAGE_PATH} ---> Running in b7754f58157a Removing intermediate container b7754f58157a ---> 4a26a97eb572 Step 7/9 : RUN adduser -D -u ${USERID} -G $GROUP $USER ---> Running in b6c1f1a81af1 Removing intermediate container b6c1f1a81af1 ---> 97d3e5ad7540 Step 8/9 : COPY --chown=$USER:$GROUP ./ ${AUXILIARY_IMAGE_PATH}/ ---> 21088171876f Step 9/9 : USER $USER ---> Running in 825e0abc9f6a Removing intermediate container 825e0abc9f6a ---> b81d6430fcda Successfully built b81d6430fcda Successfully tagged wlsaksacru6jyly7kztoqu.azurecr.io/wlsaks-auxiliary-image:1.0 2024/08/28 03:06:19 Successfully executed container: build 2024/08/28 03:06:19 Executing step ID: push. Timeout(sec): 3600, Working directory: '', Network: '' 2024/08/28 03:06:19 Pushing image: wlsaksacru6jyly7kztoqu.azurecr.io/wlsaks-auxiliary-image:1.0, attempt 1 The push refers to repository [wlsaksacru6jyly7kztoqu.azurecr.io/wlsaks-auxiliary-image] ee589b3cda86: Preparing c1fd1adab3b9: Preparing d51af96cf93e: Preparing c1fd1adab3b9: Pushed d51af96cf93e: Pushed ee589b3cda86: Pushed 1.0: digest: sha256:c813eb75576eb07a179c3cb4e70106ca7dd280f933ab33a2f6858de673b12eac size: 946 2024/08/28 03:06:21 Successfully pushed image: wlsaksacru6jyly7kztoqu.azurecr.io/wlsaks-auxiliary-image:1.0 2024/08/28 03:06:21 Step ID: build marked as successful (elapsed time in seconds: 8.780235) 2024/08/28 03:06:21 Populating digests for step ID: build... 2024/08/28 03:06:22 Successfully populated digests for step ID: build 2024/08/28 03:06:22 Step ID: push marked as successful (elapsed time in seconds: 1.980158) 2024/08/28 03:06:22 The following dependencies were found: 2024/08/28 03:06:22 - image: registry: wlsaksacru6jyly7kztoqu.azurecr.io repository: wlsaks-auxiliary-image tag: "1.0" digest: sha256:c813eb75576eb07a179c3cb4e70106ca7dd280f933ab33a2f6858de673b12eac runtime-dependency: registry: registry.hub.docker.com repository: library/busybox tag: latest digest: sha256:9ae97d36d26566ff84e8893c64a6dc4fe8ca6d1144bf5b87b2b85a32def253c7 git: {} Run ID: ca1 was successful after 14s
A imagem é enviada para o ACR após uma criação com sucesso.
Execute
az acr repository show
para testar se a imagem foi enviada por push para o repositório remoto com êxito, conforme mostrado no seguinte exemplo:az acr repository show --name ${ACR_NAME} --image ${IMAGE}
Esse comando produzirá uma saída semelhante ao seguinte exemplo:
{ "changeableAttributes": { "deleteEnabled": true, "listEnabled": true, "readEnabled": true, "writeEnabled": true }, "createdTime": "2024-01-24T06:14:19.4546321Z", "digest": "sha256:a1befbefd0181a06c6fe00848e76f1743c1fecba2b42a975e9504ba2aaae51ea", "lastUpdateTime": "2024-01-24T06:14:19.4546321Z", "name": "1.0", "quarantineState": "Passed", "signed": false }
Aplicar a imagem auxiliar
Nas etapas anteriores, você criou a imagem auxiliar, incluindo os modelos e o WDT. Aplicar a imagem auxiliar ao cluster de Servidores WebLogic com as etapas a seguir.
Aplique a imagem auxiliar corrigindo a CRD (definição de recurso personalizado) do domínio usando o comando
kubectl patch
.A imagem auxiliar é definida em
spec.configuration.model.auxiliaryImages
, como mostrado no exemplo a seguir:spec: clusters: - name: sample-domain1-cluster-1 configuration: model: auxiliaryImages: - image: wlsaksacrafvzeyyswhxek.azurecr.io/wlsaks-auxiliary-image:1.0 imagePullPolicy: IfNotPresent sourceModelHome: /auxiliary/models sourceWDTInstallHome: /auxiliary/weblogic-deploy
Use os seguintes comandos para aumentar o valor de
restartVersion
e usekubectl patch
para aplicar a imagem auxiliar à CRD do domínio usando a definição mostrada:export VERSION=$(kubectl -n ${WLS_DOMAIN_NS} get domain ${WLS_DOMAIN_UID} -o=jsonpath='{.spec.restartVersion}' | tr -d "\"") export VERSION=$((VERSION+1)) export ACR_LOGIN_SERVER=$(az acr show --name ${ACR_NAME} --query "loginServer" --output tsv) cat <<EOF >patch-file.json [ { "op": "replace", "path": "/spec/restartVersion", "value": "${VERSION}" }, { "op": "add", "path": "/spec/configuration/model/auxiliaryImages", "value": [{"image": "$ACR_LOGIN_SERVER/$IMAGE", "imagePullPolicy": "IfNotPresent", "sourceModelHome": "/auxiliary/models", "sourceWDTInstallHome": "/auxiliary/weblogic-deploy"}] }, { "op": "remove", "path": "/spec/configuration/model/configMap" } ] EOF kubectl -n ${WLS_DOMAIN_NS} patch domain ${WLS_DOMAIN_UID} \ --type=json \ --patch-file patch-file.json
Como a conexão de banco de dados está configurada na imagem auxiliar, execute o seguinte comando para remover o ConfigMap:
kubectl delete configmap sample-domain1-wdt-config-map -n ${WLS_DOMAIN_NS}
Antes de prosseguir, aguarde até que o seguinte comando produza a seguinte saída para o servidor administrador e servidores gerenciados:
kubectl get pod -n ${WLS_DOMAIN_NS} -w
NAME READY STATUS RESTARTS AGE
sample-domain1-admin-server 1/1 Running 0 20m
sample-domain1-managed-server1 1/1 Running 0 19m
sample-domain1-managed-server2 1/1 Running 0 18m
O sistema pode levar de 5 a 10 minutos para chegar a esse estado. A seguinte lista apresenta uma visão geral do que acontece enquanto você aguarda:
- Você verá o
sample-domain1-introspector
ser executado primeiro. Esse software procura alterações no recurso personalizado do domínio para que ele possa executar as ações necessárias no cluster do Kubernetes. - Quando são detectadas as alterações, o introspector de domínio encerra e inicia novos pods para distribuir as alterações.
- Em seguida, você verá o pod
sample-domain1-admin-server
ser encerrado e reiniciado. - Depois, você verá os dois servidores gerenciados serem encerrados e reiniciados.
- Só prossiga quando os três pods mostrarem o estado
1/1 Running
.
Verificar a funcionalidade da implantação
Use as etapas a seguir para verificar a funcionalidade da implantação, visualizando o console de administração do WebLogic Server e o aplicativo de amostra:
Cole o valor de adminConsoleExternalUrl na barra de endereços de um navegador da Web conectado à Internet. Você deve ver a familiar tela de credenciais do console de administração do Servidor WebLogic.
Entre com o nome de usuário
weblogic
e a senha que você inseriu ao implantar o WebLogic Server no portal do Azure. Lembre-se de que esse valor éwlsAksCluster2022
.Na caixa Estrutura de Domínio, selecione Serviços.
Nos Serviços, selecione Fontes de Dados.
No painel Resumo das Fontes de Dados JDBC, selecione Monitoramento. A tela será semelhante ao exemplo a seguir. Você descobre que o estado da fonte de dados está em execução em servidores gerenciados.
Na caixa Estrutura de Domínio, selecione Implantações.
Na tabela Implantações, deve haver uma só linha. O nome deve ter o mesmo valor que o valor de
Application
do arquivo appmodel.yaml. Escolha o nome.Selecione a guia Testes.
Selecione weblogic-cafe.
No painel Configurações de weblogic-cafe, escolha a guia Teste.
Expanda o ícone + ao lado de weblogic-cafe. A tela será semelhante ao exemplo a seguir. Em particular, você verá valores semelhantes à
http://sample-domain1-managed-server1:8001/weblogic-cafe/index.xhtml
na coluna Ponto de Teste.Observação
Os hiperlinks da coluna Ponto de Teste não são selecionáveis, porque não configuramos o console de administração com a URL externa na qual ele está em execução. Este artigo mostra o console de administração do WebLogic Server apenas a título de demonstração. Não use o console de administração do WebLogic Server para qualquer alteração de configuração duradoura ao executar o WebLogic Server no AKS. O design nativo da nuvem do WebLogic Server no AKS exige que qualquer configuração durável seja representada nas imagens iniciais do docker ou aplicada ao cluster do AKS em execução usando técnicas de CI/CD, como a atualização do modelo, conforme descrito na documentação da Oracle.
Entenda o valor de
context-path
do aplicativo de exemplo implantado. Se você implantou o aplicativo de exemplo recomendado, ocontext-path
seráweblogic-cafe
.Construa uma URL totalmente qualificada para o aplicativo de exemplo acrescentando
context-path
ao valor de clusterExternalUrl. Se você implantou o aplicativo de exemplo recomendado, a URL totalmente qualificada deve ser algo comohttp://wlsgw202401-wls-aks-domain1.eastus.cloudapp.azure.com/weblogic-cafe/
.Cole a URL totalmente qualificada em um navegador da Web conectado à Internet. Se você implantou o aplicativo de exemplo recomendado, verá resultados semelhantes à seguinte captura de tela:
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. O seguinte comando remove o grupo de recursos, o serviço de contêiner, o registro de contêiner, banco de dados e todos os recursos relacionados:
az group delete --name <resource-group-name> --yes --no-wait
az group delete --name <db-resource-group-name> --yes --no-wait
Próximas etapas
Saiba mais sobre a execução do WebLogic Server no AKS ou em máquinas virtuais seguindo estes links:
Para obter mais informações sobre as ofertas do Oracle WebLogic no Azure Marketplace, consulte Oracle WebLogic Server no Azure. Essas ofertas são todas do tipo Traga sua própria licença. Eles pressupõem que você já tenha as licenças apropriadas com a Oracle e esteja devidamente licenciado para executar ofertas no Azure.
Azure Kubernetes Service