Implantar um aplicativo Java com o WebLogic Server em um cluster do Serviço Kubernetes do Azure (AKS)

Este artigo demonstra como:

  • Execute seu aplicativo Java no Oracle WebLogic Server (WLS).
  • Levante um cluster do WebLogic Server no AKS usando uma oferta do Azure Marketplace.
  • Crie uma imagem do Docker do aplicativo que inclua modelos WDT (WebLogic Deploy Tooling).
  • Implante o aplicativo em contêiner no cluster do WebLogic Server no AKS com conexão ao Microsoft Azure SQL.

Este artigo usa a oferta do Azure Marketplace para o WebLogic Server para acelerar sua jornada para o AKS. A oferta provisiona automaticamente vários recursos do Azure, incluindo os seguintes recursos:

  • Uma instância do Registro de Contêiner do Azure
  • Um cluster AKS
  • Uma instância AGIC (Azure App Gateway Ingress Controller)
  • O operador WebLogic Kubernetes
  • Uma imagem de contêiner, incluindo o tempo de execução do WebLogic
  • Um cluster do WebLogic Server sem um aplicativo

Em seguida, o artigo apresenta a criação de uma imagem para atualizar o cluster do WebLogic Server. A imagem fornece o aplicativo e os modelos WDT.

Se você preferir uma abordagem menos automatizada para implantar o WebLogic no AKS, consulte as orientações passo a passo incluídas na documentação oficial da Oracle para o Serviço Kubernetes do Azure.

Se você estiver interessado em fornecer feedback ou trabalhar em estreita colaboração em seus cenários de migração com a equipe de engenharia que desenvolve soluções WebLogic em 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á prontamente em contato com você para iniciar uma estreita colaboração.

Pré-requisitos

  • Se não tiver uma subscrição 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 de Colaborador e Administrador de Acesso de Usuário na assinatura atual. Para obter uma visão geral das funções do Azure, consulte O que é o controle de acesso baseado em função do Azure (Azure RBAC)? Para obter detalhes sobre as funções específicas exigidas pelo WLS no AKS, consulte Funções internas do Azure.
  • Ter as credenciais para uma conta de logon único (SSO) Oracle. Para criar uma, consulte Criar sua conta Oracle.
  • Aceite os termos de licença do WebLogic Server.
    • Visite o Oracle Container Registry e faça login.
    • 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.

    Nota

    Obtenha um direito de suporte da Oracle antes de entrar em produção. A falha em fazer isso resulta na execução de imagens inseguras que não são corrigidas para falhas críticas de segurança. Para obter mais informações sobre as atualizações críticas de patches da Oracle, consulte Atualizações críticas de patches, alertas de segurança e boletins da Oracle.

  • Prepare uma máquina local com o sistema operacional Unix-like instalado - por exemplo, Ubuntu, Azure Linux, macOS, Windows Subsystem for Linux.
    • CLI do Azure. Use az --version para testar se az funciona. Este documento foi testado com a versão 2.55.1.
    • Kubectl. Use kubectl version para testar se kubectl funciona. Este documento foi testado com a versão v1.21.2.
    • Um Java Development Kit (JDK). O artigo orienta você a instalar o Microsoft Build do OpenJDK 11. Certifique-se de que sua JAVA_HOME variável de ambiente esteja definida corretamente nos shells nos quais você executa os comandos.
    • Maven 3.5.0 ou superior.
    • Certifique-se de ter o utilitário zip/unzip instalado. Use zip/unzip -v para testar se zip/unzip funciona.

Criar uma Base de Dados SQL do Azure

Esta seção cria um Banco de Dados SQL do Azure usando a 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 dentro de 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 nomeado abc1228rg no eastus local:

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 nomeado myazuresql20130213 com usuário azureuser admin e senha admin. Substitua <your-password> pela sua palavra-passe. Para obter mais informações, consulte Guia de início rápido: criar um único banco de dados - Banco de Dados SQL do Azure.

Nota

Mesmo que você esteja usando um nome de usuário e senha aqui, essas 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 seguintes etapas para configurar uma conta de administrador do Microsoft Entra para o servidor SQL do Azure a partir do portal do Azure:

  1. No portal do Azure, abra a instância myazuresql20130213do servidor SQL do Azure .
  2. Selecione Configurações e, em seguida, selecione Microsoft Entra ID. Na página ID do Microsoft Entra , selecione Definir administrador.
  3. Na página Adicionar administrador, procure um utilizador, selecione o utilizador ou grupo para ser administrador e, em seguida, selecione Selecionar.
  4. 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.
  5. O processo de mudança de administrador pode levar vários minutos. Em seguida, o novo administrador aparece na caixa ID do Microsoft Entra .

Criar uma identidade gerida atribuída pelo utilizador

Em seguida, na CLI do Azure, crie uma identidade em sua assinatura usando o comando az identity create . Você usa essa identidade gerenciada para se conectar ao seu banco de dados.

az identity create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name myManagedIdentity

Criar um usuário de banco de dados para sua identidade gerenciada

Agora, conecte-se como o usuário administrador do Microsoft Entra ao seu banco de dados SQL do Azure a partir do 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 a partir do portal, conforme mostrado nas seguintes etapas:

  1. No portal do Azure, abra a instância myazuresql20130213do servidor SQL do Azure .
  2. Selecione Segurança e, em seguida, selecione Rede.
  3. Em Regras de firewall, selecione Adicionar o endereço IP IPV4 do cliente.
  4. Em Exceções, selecione Permitir que os serviços e recursos do Azure acessem este servidor.
  5. Selecione Guardar.

Depois que a regra de firewall for criada, você poderá acessar o servidor SQL do Azure no portal. Use as seguintes etapas para criar um usuário de banco de dados:

  1. Selecione Configurações e, em seguida, selecione bancos de dados SQL. Selecione mysingledatabase20230213.

  2. Selecione Editor de consultas. Na página Bem-vindo ao Editor de Consultas do Banco de Dados SQL, em Autenticação do Ative Directory, localize uma mensagem como Logged in as user@contoso.com.

  3. Selecione Continuar como user@contoso.com, em que user é o nome da sua conta de administrador do AD.

  4. Depois de entrar, no editor de Consulta 1 , execute os seguintes comandos para criar um usuário de banco de dados para identidade myManagedIdentitygerenciada.

    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
    
  5. No editor de Consulta 1 , selecione Executar para executar os comandos SQL.

  6. Se os comandos forem concluídos com êxito, você poderá encontrar uma mensagem dizendo Query succeeded: Affected rows: 0.

Use o seguinte comando para obter a cadeia de conexão que você usa 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}

Criar 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 não vir esta mensagem, resolva o problema antes de continuar.

Você pode continuar a implantar o WLS na oferta AKS.

Implantar o WebLogic Server no AKS

Use as seguintes etapas para localizar a oferta WebLogic Server on AKS e preencha o painel Noções básicas :

  1. Na barra de pesquisa na parte superior do portal do Azure, insira weblogic. Nos resultados de pesquisa sugeridos automaticamente, na seção Marketplace, selecione WebLogic Server no AKS.

    Captura de ecrã do portal do Azure que mostra o WebLogic Server nos resultados da pesquisa.

    Você também pode ir diretamente para a oferta WebLogic Server on AKS .

  2. Na página da oferta, selecione Criar.

  3. No painel Noções básicas, verifique se o valor mostrado no campo Assinatura é o mesmo em que você fez logon no Azure. Verifique se você tem as funções listadas na seção de pré-requisitos para a assinatura.

    Captura de ecrã do portal do Azure que mostra o WebLogic Server no AKS.

  4. 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 dentro de 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, ejb0723wls.

  5. Em Detalhes da instância, selecione a região para a implantação. Para obter uma lista de regiões do Azure onde o AKS está disponível, consulte Disponibilidade da região do AKS.

  6. Em Credenciais para WebLogic, deixe o valor padrão para Nome de usuário para WebLogic Administrator.

  7. Preencha wlsAksCluster2022 a senha para o administrador WebLogic. Use o mesmo valor para os campos de confirmação e Senha para criptografia do Modelo WebLogic.

  8. Selecione Seguinte.

Use as seguintes etapas para iniciar o processo de implantação:

  1. Role até a seção Fornecer uma conta Oracle Single Sign-On (SSO). Preencha suas credenciais Oracle SSO a partir das pré-condições.

    Captura de ecrã do portal do Azure que mostra o painel SSO configurado.

  2. Certifique-se de anotar as etapas na caixa de informações começando com Antes de avançar, você deve aceitar os Termos e Restrições Padrão da Oracle.

  3. Dependendo se a conta Oracle SSO tem ou não um direito de suporte Oracle, selecione a opção apropriada para Select the type of WebLogic Server Images. Se a conta tiver um direito de suporte, selecione Imagens do WebLogic Server com patch. Caso contrário, selecione General WebLogic Server Images.

  4. Deixe o valor em Select desired combination of WebLogic Server... em seu valor padrão. Você tem uma ampla gama de opções para WebLogic Server, JDK e versão do sistema operacional.

  5. 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 exemplo sejam expostos à Internet pública com um complemento de entrada interno do Application Gateway. Para obter mais informações, consulte O que é o Application Gateway Ingress Controller?

  1. Selecione Avançar para ver o painel TLS/SSL .

  2. Selecione Avançar para ver o painel Balanceamento de carga.

  3. Ao lado de Opções de balanceamento de carga, selecione Application Gateway Ingress Controller.

    Captura de tela do portal do Azure que mostra a configuração mais simples possível do balanceador de carga na página Criar o Oracle WebLogic Server no Serviço Kubernetes do Azure.

  4. No Application Gateway Ingress Controller, você verá todos os campos pré-preenchidos com os padrões para Rede virtual e Sub-rede. Deixe os valores padrão.

  5. Para Criar ingresso para o Console de Administração, selecione Sim.

    Captura de tela do portal do Azure que mostra a configuração do Application Gateway Ingress Controller na página Criar Oracle WebLogic Server no Serviço Kubernetes do Azure.

  6. Selecione Avançar para ver o painel DNS .

  7. Selecione Avançar para ver o painel Banco de dados .

Use as seguintes etapas para configurar uma conexão de banco de dados usando uma identidade gerenciada:

  1. Em Conectar ao banco de dados?, selecione Sim.
  2. 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).
  3. Para JNDI Name, insira jdbc/WebLogicCafeDB.
  4. Para DataSource Connection String, insira a cadeia de conexão obtida na última seção.
  5. Selecione Usar conexão de fonte de dados sem senha.
  6. Em Identidade gerenciada atribuída ao usuário, selecione a identidade gerenciada criada na etapa anterior. Neste exemplo, seu nome é myManagedIdentity.
  7. Selecione Adicionar.

A seção Configurações de conexão deve se parecer com a seguinte captura de tela:

Captura de ecrã do portal do Azure que mostra o separador Base de Dados da página Criar Oracle WebLogic Server no Serviço Kubernetes do Azure.

Use as seguintes etapas para concluir a implantação:

  1. Selecione Rever + criar. Certifique-se de que a validação não falha. Se falhar, corrija quaisquer problemas de validação e, em seguida, selecione Rever + criar novamente.
  2. Selecione Criar.
  3. Acompanhe o progresso da implantação na página Implantação está 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.

Nota

Se sua organização exigir que você implante a carga de trabalho em uma rede virtual corporativa sem IPs públicos permitidos, você poderá escolher o serviço interno de Balanceador de Carga. Para configurar o serviço Balanceador de Carga interno, use as seguintes etapas na guia Balanceamento de carga:

  1. Em Opções de Balanceamento de Carga, selecione Serviço de Balanceador de Carga Padrão.

  2. Selecione Usar balanceador de carga interno.

  3. Adicione as seguintes linhas à tabela:

    Prefixo do nome do 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:

Captura de tela do portal do Azure que mostra a guia Balanceamento de carga da página Criar Oracle WebLogic Server no Serviço Kubernetes do Azure.

Após a implantação, você pode encontrar as URLs de acesso do servidor de administração e do cluster na saída, rotulada adminConsoleExternalUrl e clusterExternalUrl.

Examinar a saída da implantação

Use as etapas nesta seção para verificar se a implantação foi bem-sucedida.

Se você navegou para fora da página Implantação está em andamento , as etapas a seguir mostram como voltar a essa página. Se você ainda estiver na página que mostra Sua implantação foi concluída, pule para a etapa 5 após a próxima captura de tela.

  1. No canto de qualquer página do portal do Azure, selecione o menu hambúrguer e selecione Grupos de recursos.

  2. Na caixa com o texto Filtro 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.

  3. No painel de navegação, na seção Configurações , selecione Implantações. Você verá uma lista ordenada das implantações para esse grupo de recursos, com a mais recente primeiro.

  4. Desloque-se para a entrada mais antiga desta lista. Esta entrada corresponde à implantação iniciada na seção anterior. Selecione a implantação mais antiga, conforme mostrado na captura de tela a seguir.

    Captura de ecrã do portal do Azure que mostra a lista de implementações do grupo de recursos.

  5. No painel de navegação, selecione Saídas. Esta lista mostra os valores de saída da implantação. Informações úteis estão incluídas nos resultados.

  6. O valor adminConsoleExternalUrl é o link público e totalmente qualificado visível da Internet para o console de administração do WebLogic Server para este cluster AKS. Selecione o ícone de cópia ao lado do valor do campo para copiar o link para a área de transferência. Guarde este valor para mais tarde.

  7. O valor clusterExternalUrl é o link público e totalmente qualificado visível da Internet para o aplicativo de exemplo implantado no WebLogic Server neste cluster AKS. Selecione o ícone de cópia ao lado do valor do campo para copiar o link para a área de transferência. Guarde este valor para mais tarde.

  8. O valor shellCmdtoOutputWlsImageModelYaml é a cadeia de caracteres base64 do modelo WDT usado para criar a imagem do contêiner. Guarde este valor para mais tarde.

  9. O valor shellCmdtoOutputWlsImageProperties é a cadeia de caracteres base64 das propriedades do modelo WDT usada para criar a imagem do contêiner. Guarde este valor para mais tarde.

  10. O valor shellCmdtoConnectAks é o comando da CLI do Azure para se conectar a esse cluster AKS específico.

Os outros valores nas saídas estão além do escopo deste artigo, mas são explicados em detalhes no guia do usuário do WebLogic on AKS.

Configurar e implantar o 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 exemplo usando imagem auxiliar.

Confira o aplicativo

Nesta seção, você clona o código de exemplo para este guia. O exemplo está no GitHub no repositório weblogic-on-azure na pasta javaee/weblogic-café/ . Aqui está 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 vir uma mensagem sobre estar no estado "HEAD desanexado", é seguro ignorá-la. Isso significa apenas que você fez check-out de uma tag.

Use o seguinte comando para construir javaee/weblogic-café/:

mvn clean package --file $BASE_DIR/weblogic-on-azure/javaee/weblogic-cafe/pom.xml

O pacote deve ser gerado com êxito e localizado em $BASE_DIR/weblogic-on-azure/javaee/weblogic-café/target/weblogic-café.war. Se não vir o pacote, tem de resolver o problema antes de continuar.

Usar o Registro de Contêiner do Azure para criar uma imagem auxiliar

As etapas nesta seção mostram como criar uma imagem auxiliar. Esta imagem inclui os seguintes componentes:

  • O modelo em arquivos de modelo de imagem
  • A aplicação
  • O arquivo de arquivo do driver JDBC (Java Database Connectivity)
  • A instalação do WebLogic Deploy Tooling

Uma imagem auxiliar é uma imagem de contêiner do Docker que contém seu aplicativo e configuração. O Operador WebLogic Kubernetes combina sua imagem auxiliar com a domain.spec.image no cluster AKS que contém o WebLogic Server, JDK e sistema operacional. Para obter mais informações sobre imagens auxiliares, consulte Imagens auxiliares na documentação do Oracle.

Esta seção requer um terminal Linux com a CLI do Azure e o kubectl instalados.

Use as seguintes etapas para criar a imagem:

  1. 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
    
  2. Copie o valor shellCmdtoOutputWlsImageModelYaml que você salvou das saídas de implantação, cole-o na janela Bash e execute o comando. O comando deve ser semelhante ao exemplo a seguir:

    echo -e IyBDb3B5cmlna...Cgo= | base64 -d > model.yaml
    

    Este comando produz um arquivo ${BASE_DIR}/mystaging/models/model.yaml com conteúdo semelhante ao exemplo a seguir:

    # 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"
    
  3. Da mesma forma, copie o valor shellCmdtoOutputWlsImageProperties , cole-o na janela Bash e execute o comando. O comando deve ser semelhante ao exemplo a seguir:

    echo -e IyBDb3B5cml...pFPTUK | base64 -d > model.properties
    

    Este comando produz um arquivo ${BASE_DIR}/mystaging/models/model.properties com conteúdo semelhante ao exemplo a seguir:

    # 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
    
  4. Use as etapas a seguir para criar o arquivo de modelo de aplicativo.

    1. Use os seguintes comandos para copiar weblogic-café.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
      
    2. 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
      
  5. Use as etapas a seguir para configurar a conexão da fonte de dados.

    1. Use as etapas a seguir para baixar e instalar o driver JDBC do Microsoft SQL Server e a Extensão de Identidade do Azure que habilita conexões de banco de dados usando o Azure Managed Identity.

      1. Use os seguintes comandos para baixar e instalar o driver JDBC do Microsoft SQL Server 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
        
      2. Use os seguintes comandos para instalar o Azure Identity Extension para 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/
        
      3. Use os seguintes comandos para limpar recursos:

        rm target -f -r
        rm azure-identity-extensions.xml
        
    2. Conecte-se ao cluster AKS copiando o valor shellCmdtoConnectAks que você salvou anteriormente, colando-o na janela Bash e executando o comando. O comando deve ser semelhante ao exemplo a seguir:

      az account set --subscription <subscription>;
      az aks get-credentials \
          --resource-group <resource-group> \
          --name <name>
      

      Você deve ver uma saída semelhante ao exemplo a seguir. Se você não vir essa saída, solucione e resolva o problema antes de continuar.

      Merged "<name>" as current context in /Users/<username>/.kube/config
      
    3. Exporte o modelo de conexão do banco de dados e salve-o 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-o pelo seu próprio UID de domínio.

      1. A chave de dados é db-secret-name.yaml>.< Use o seguinte comando para recuperar o nome secreto 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}')
        
      2. Em seguida, extraia 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
        
      3. 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 ser semelhante à 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
        
  6. Use os seguintes comandos para criar um arquivo morto e, em seguida, remova a pasta wlsdeploy , que você não precisa mais:

    cd ${BASE_DIR}/mystaging/models
    zip -r archive.zip wlsdeploy
    
    rm -f -r wlsdeploy
    
  7. Use os seguintes comandos para baixar e instalar o WebLogic Deploy Tooling (WDT) no diretório de preparo e remover seus 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
    
  8. Use o seguinte comando para limpar o instalador do WDT:

    rm weblogic-deploy.zip
    
  9. 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
    
  10. Execute o az acr build comando usando ${BASE_DIR}/mystaging/Dockerfile, conforme mostrado no exemplo a seguir:

    export ACR_NAME=<value-from-clipboard>
    export IMAGE="wlsaks-auxiliary-image:1.0"
    
  11. Use os seguintes comandos para verificar novamente os arquivos de preparação:

    cd ${BASE_DIR}/mystaging
    find -maxdepth 2 -type f -print
    

    Esses comandos produzem uma saída semelhante ao exemplo a seguir:

    ./models/model.properties
    ./models/model.yaml
    ./models/appmodel.yaml
    ./models/dbmodel.yaml
    ./models/archive.zip
    ./Dockerfile
    ./weblogic-deploy/VERSION.txt
    ./weblogic-deploy/LICENSE.txt
    
  12. Crie a imagem com az acr build, conforme 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 exemplo a seguir:

    ...
    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 compilação bem-sucedida.

  13. Você pode executar az acr repository show para testar se a imagem é enviada por push para o repositório remoto com êxito, conforme mostrado no exemplo a seguir:

    az acr repository show --name ${ACR_NAME} --image ${IMAGE}
    

    Este comando deve produzir uma saída semelhante ao exemplo a seguir:

    {
       "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 modelos e WDT. Aplique a imagem auxiliar ao cluster do WebLogic Server com as etapas a seguir.

  1. Aplique a imagem auxiliar corrigindo a definição de recurso personalizado (CRD) do domínio usando o kubectl patch comando.

    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 restartVersion valor e use kubectl patch para aplicar a imagem auxiliar ao domínio CRD 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
    
  2. 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 continuar, aguarde até que o comando a seguir produza a seguinte saída para o servidor de administração e os 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

Pode levar de 5 a 10 minutos para que o sistema atinja esse estado. A lista a seguir fornece uma visão geral do que está acontecendo enquanto você espera:

  • Você deve ver a sample-domain1-introspector execução primeiro. Este software procura alterações no recurso personalizado de domínio para que possa executar as ações necessárias no cluster Kubernetes.
  • Quando as alterações são detetadas, o introspector de domínio mata e inicia novos pods para implementar as alterações.
  • Em seguida, você deve ver o sample-domain1-admin-server pod terminar e reiniciar.
  • Em seguida, você verá os dois servidores gerenciados serem encerrados e reiniciados.
  • Só quando os três pods mostrarem o 1/1 Running estado, é ok prosseguir.

Verificar a funcionalidade da implantação

Use as seguintes etapas para verificar a funcionalidade da implantação exibindo o console de administração do WebLogic Server e o aplicativo de exemplo:

  1. Cole o valor adminConsoleExternalUrl na barra de endereços de um navegador da Web conectado à Internet. Você deve ver a conhecida tela de entrada do console de administração do WebLogic Server.

  2. Entre com o nome weblogic de usuário e a senha que você inseriu ao implantar o WebLogic Server a partir do portal do Azure. Lembre-se que este valor é wlsAksCluster2022.

  3. Na caixa Estrutura do Domínio, selecione Serviços.

  4. Em Serviços, selecione Fontes de Dados.

  5. No painel Resumo das fontes de dados JDBC, selecione Monitoramento. Sua tela deve ser semelhante ao exemplo a seguir. Você acha que o estado da fonte de dados está sendo executado em servidores gerenciados.

    Captura de tela do estado da fonte de dados.

  6. Na caixa Estrutura do Domínio, selecione Implantações.

  7. Na tabela Implantações, deve haver uma linha. O nome deve ser o mesmo valor que o Application valor no arquivo appmodel.yaml . Selecione o nome.

  8. Selecione a guia Teste .

  9. Selecione weblogic-café.

  10. No painel Configurações para weblogic-café , selecione a guia Teste .

  11. Expanda o + ícone ao lado de weblogic-café. Sua tela deve ser semelhante ao exemplo a seguir. Em particular, você deve ver valores semelhantes aos http://sample-domain1-managed-server1:8001/weblogic-cafe/index.xhtml na coluna Ponto de teste .

    Captura de tela dos pontos de teste weblogic-café.

    Nota

    Os hiperlinks na coluna Ponto de Teste não podem ser selecionados porque não configuramos o console de administração com a URL externa na qual ele está sendo executado. Este artigo mostra o console de administração do WebLogic Server apenas como demonstração. Não use o console de administração do WebLogic Server para quaisquer alterações de configuração duráveis ao executar o WebLogic Server no AKS. O design nativo da nuvem do WebLogic Server no AKS requer que qualquer configuração durável seja representada nas imagens iniciais do docker ou aplicada ao cluster AKS em execução usando técnicas de CI/CD, como a atualização do modelo, conforme descrito na documentação do Oracle.

  12. Entenda o context-path valor do aplicativo de exemplo que você implantou. Se você implantou o aplicativo de exemplo recomendado, o context-path é weblogic-cafe.

  13. Construa uma URL totalmente qualificada para o aplicativo de exemplo anexando o context-path valor clusterExternalUrl. Se você implantou o aplicativo de exemplo recomendado, a URL totalmente qualificada deve ser algo como http://wlsgw202401-wls-aks-domain1.eastus.cloudapp.azure.com/weblogic-cafe/.

  14. Cole o URL totalmente qualificado em um navegador da Web conectado à Internet. Se você implantou o aplicativo de exemplo recomendado, deverá ver resultados semelhantes à captura de tela a seguir:

    Captura de ecrã da aplicação Web de teste.

Clean up resources (Limpar recursos)

Para evitar cobranças do Azure, você deve limpar recursos desnecessários. Quando não precisar mais do cluster, use o comando az group delete . O comando a seguir remove 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
az group delete --name <db-resource-group-name> --yes --no-wait

Próximos passos

Saiba mais sobre como executar o WebLogic Server em AKS ou 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. Estas ofertas são todas traga a 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.