Поделиться через


Развертывание приложения Java с помощью WebLogic Server в кластере Служба Azure Kubernetes (AKS)

В этой статье демонстрируются следующие возможности.

  • Запустите приложение Java на Oracle WebLogic Server (WLS).
  • Создайте кластер WebLogic Server в AKS с помощью предложения Azure Marketplace.
  • Создание образа Docker приложения, включающего модели средств развертывания WebLogic (WDT).
  • Разверните контейнерное приложение в кластере WebLogic Server в AKS с подключением к Microsoft Azure SQL.

В этой статье используется предложение Azure Marketplace для WebLogic Server , чтобы ускорить переход к AKS. Предложение автоматически подготавливает несколько ресурсов Azure, включая следующие ресурсы:

  • Экземпляр Реестр контейнеров Azure
  • Кластер AKS
  • Экземпляр контроллера входящего трафика шлюза приложение Azure (AGIC)
  • Оператор WebLogic
  • Образ контейнера, включая среду выполнения WebLogic
  • Кластер WebLogic Server без приложения

Затем в статье описывается создание образа для обновления кластера WebLogic Server. Изображение предоставляет модели приложения и WDT.

Если вы предпочитаете менее автоматизированный подход к развертыванию WebLogic в AKS, ознакомьтесь с пошаговыми рекомендациями, включенными в официальную документацию Oracle для Служба Azure Kubernetes.

Если вы заинтересованы в предоставлении отзывов или тесной работе с сценариями миграции с помощью команды разработчиков, разрабатывающей решения WebLogic для AKS, заполните этот короткий опрос по миграции WebLogic и включите контактные данные. Команда руководителей программ, архитекторов и инженеров будет быстро связаться с вами, чтобы начать тесное сотрудничество.

Необходимые компоненты

  • Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
  • Убедитесь, что удостоверение Azure, используемое для входа и завершения работы этой статьи, имеет роль владельца в текущей подписке или роли администратора доступа пользователей и участника в текущей подписке. Общие сведения о ролях Azure см. в статье "Что такое управление доступом на основе ролей Azure" (Azure RBAC)? Дополнительные сведения о конкретных ролях, необходимых WLS в AKS, см. в статье о встроенных ролях Azure.
  • У вас есть учетные данные для учетной записи единого входа Oracle. Сведения о создании учетной записи Oracle см. в разделе "Создание учетной записи Oracle".
  • Примите условия лицензии для WebLogic Server.
    • Посетите реестр контейнеров Oracle и войдите в систему.
    • Если у вас есть право на поддержку, выберите по промежуточному слоям, а затем найдите и выберите weblogic_cpu.
    • Если у вас нет прав на поддержку из Oracle, выберите по промежуточному слоям, а затем найдите и выберите weblogic.
    • Принимается лицензионное соглашение.

    Примечание.

    Получите право на поддержку от Oracle, прежде чем перейти в рабочую среду. Сбой этого приводит к выполнению небезопасных образов, которые не исправлены для критических ошибок безопасности. Дополнительные сведения о критически важных обновлениях исправлений Oracle см. в разделе "Критические обновления исправлений", "Оповещения системы безопасности" и "Бюллетени " из Oracle.

  • Подготовьте локальный компьютер с установленной операционной системой, например Ubuntu, Azure Linux, macOS, подсистема Windows для Linux.
    • Azure CLI. Используется az --version для проверки того, работает ли az. Этот документ был протестирован с версией 2.55.1.
    • Docker. Этот документ был протестирован с помощью Docker версии 20.10.7. Используется docker info для проверки того, запущена ли управляющая программа Docker.
    • kubectl. Используется kubectl version для проверки того, работает ли kubectl. Этот документ был протестирован с версией 1.21.2.
    • Пакет средств разработки Java (JDK), совместимый с версией WebLogic Server, которую вы планируете запустить. В этой статье описывается установка версии WebLogic Server, использующая JDK 11. Убедитесь, что JAVA_HOME переменная среды правильно задана в оболочках, в которых выполняются команды.
    • Maven 3.5.0 или более поздней версии.
    • Убедитесь, что у вас установлена программа zip/unzip. Используется zip/unzip -v для проверки того, работает ли zip/unzip работа.

    Примечание.

    Вы можете выполнить все действия этой статьи в Azure Cloud Shell, за исключением тех, кто участвует в Docker. Дополнительные сведения о Azure Cloud Shell см. в статье "Что такое Azure Cloud Shell?"

Развертывание webLogic Server в AKS

Ниже показано, как найти веб-сервер в предложении AKS и заполнить область "Основные сведения".

  1. В строке поиска в верхней части портал Azure введите weblogic. В результатах автоматического поиска в разделе Marketplace выберите WebLogic Server в AKS.

    Снимок экрана: портал Azure, на котором показан WebLogic Server в результатах поиска.

    Вы также можете перейти непосредственно к серверу WebLogic в предложении AKS .

  2. На странице предложения нажмите кнопку "Создать".

  3. На панели "Основные сведения" убедитесь, что значение, отображаемое в поле "Подписка", совпадает с тем, что вы вошли в Azure. Убедитесь, что у вас есть роли, перечисленные в разделе предварительных требований для подписки.

    Снимок экрана: портал Azure с веб-сервером в AKS.

  4. Необходимо развернуть предложение в пустой группе ресурсов. В поле "Группа ресурсов" выберите "Создать", а затем введите значение для группы ресурсов. Так как группы ресурсов должны быть уникальными в пределах подписки, выберите уникальное имя. Простой способ использовать уникальные имена — использовать сочетание инициалов, сегодняшней даты и некоторых идентификаторов, например ejb0723wls.

  5. В разделе "Сведения об экземпляре" выберите регион для развертывания. Список регионов Azure, где доступен AKS, см. в разделе "Доступность региона AKS".

  6. В разделе "Учетные данные для WebLogic" оставьте значение по умолчанию для имени пользователя для администратора WebLogic.

  7. wlsAksCluster2022 Введите пароль для администратора WebLogic. Используйте то же значение для полей шифрования подтверждения и пароля для модели WebLogic.

  8. Выберите Далее.

Ниже показано, как запустить процесс развертывания.

  1. Прокрутите страницу до раздела, помеченного как Предоставление учетной записи единого входа (SSO) Oracle. Заполните учетные данные единого входа Oracle из предварительных условий.

    Снимок экрана: портал Azure, на котором показана настроенная область единого входа.

  2. Убедитесь, что вы заметите шаги в поле сведений, начиная с шага вперед, необходимо принять стандартные условия и ограничения Oracle.

  3. В зависимости от того, имеет ли учетная запись единого входа Oracle право на поддержку Oracle, выберите соответствующий параметр для выбора типа образов webLogic Server. Если у учетной записи есть право на поддержку, выберите исправленные образы webLogic Server. В противном случае выберите общие образы webLogic Server.

  4. Оставьте значение в выборе требуемого сочетания WebLogic Server... по умолчанию. У вас есть широкий спектр вариантов для версии WebLogic Server, JDK и ОС.

  5. В разделе "Приложение" рядом с пунктом "Развертывание приложения"? выберите "Нет".

Ниже приведены действия, чтобы консоль администрирования WebLogic Server и пример приложения предоставлялись общедоступному Интернету со встроенной надстройкой ingress Шлюз приложений. Дополнительные сведения см. в разделе "Что такое Шлюз приложений контроллер входящего трафика?

  1. Нажмите кнопку "Рядом", чтобы просмотреть область TLS/SSL.

  2. Нажмите кнопку "Рядом", чтобы просмотреть область балансировки нагрузки.

  3. Рядом с параметрами балансировки нагрузки выберите Шлюз приложений контроллер входящего трафика.

    Снимок экрана: портал Azure, на котором показана самая простая конфигурация подсистемы балансировки нагрузки на странице

  4. В Шлюз приложений контроллере входящего трафика вы увидите все поля, предварительно заполненные значениями по умолчанию для виртуальной сети и подсети. Не изменяйте значения по умолчанию.

  5. Чтобы создать входящий трафик для консоли администрирования, нажмите кнопку "Да".

    Снимок экрана: портал Azure, на котором показана конфигурация контроллера входящего трафика Шлюз приложений на странице создания Oracle WebLogic Служба Azure Kubernetes Server.

  6. Оставьте значения по умолчанию для других полей.

  7. Выберите Review + create (Просмотреть и создать). Убедитесь, что проверка не завершается ошибкой. Если ошибка завершается ошибкой, исправьте все проблемы проверки, а затем нажмите кнопку "Проверить и создать еще раз".

  8. Нажмите кнопку создания.

  9. Отслеживание хода выполнения развертывания на странице " Развертывание".

В зависимости от сетевых условий и других действий в выбранном регионе развертывание может занять до 50 минут.

Вы можете выполнить действия, описанные в разделе "Создание База данных SQL Azure во время ожидания". Вернитесь к этому разделу после завершения создания базы данных.

Проверка выходных данных развертывания

Выполните действия, описанные в этом разделе, чтобы убедиться, что развертывание выполнено успешно.

Если вы перейдете от страницы развертывания , выполните следующие действия, чтобы вернуться на эту страницу. Если вы по-прежнему находитесь на странице с завершением развертывания, вы можете перейти к шагу 5 после следующего снимка экрана.

  1. В углу любой страницы портал Azure выберите меню гамбургера и выберите группы ресурсов.

  2. В поле Фильтр для любого поля введите первые несколько символов ранее созданной группы ресурсов. Если вы следовали рекомендации по созданию имени, введите свои инициалы, а затем выберите соответствующую группу ресурсов.

  3. В области навигации в разделе "Параметры" выберите "Развертывания". Вы увидите упорядоченный список развертываний в этой группе ресурсов с последним первым.

  4. Прокрутите до самой старой записи в этом списке. Эта запись соответствует развертыванию, начатому в предыдущем разделе. Выберите самое старое развертывание, как показано на следующем снимке экрана.

    Снимок экрана: портал Azure с списком развертываний группы ресурсов.

  5. В области навигации выберите выходные данные. В этом списке показаны выходные значения из развертывания. Полезные сведения включаются в выходные данные.

  6. Значение adminConsoleExternalUrl является полным общедоступным интернет-видимым ссылкой на консоль администрирования WebLogic Server для этого кластера AKS. Щелкните значок копирования рядом со значением поля, чтобы скопировать ссылку в буфер обмена. Сохраните это значение в стороне для дальнейшего использования.

  7. Значение clusterExternalUrl является полным общедоступным интернет-видимым ссылкой на пример приложения, развернутого в WebLogic Server в этом кластере AKS. Щелкните значок копирования рядом со значением поля, чтобы скопировать ссылку в буфер обмена. Сохраните это значение в стороне для дальнейшего использования.

  8. Значение shellCmdtoOutputWlsImageModelYaml — это строка base64 модели WDT, которая используется для создания образа контейнера. Сохраните это значение в стороне для дальнейшего использования.

  9. Значение shellCmdtoOutputWlsImageProperties является строкой base64 свойств модели WDT, используемых для создания образа контейнера. Сохраните это значение в стороне для дальнейшего использования.

  10. Значение shellCmdtoConnectAks — это команда Azure CLI для подключения к этому конкретному кластеру AKS.

Другие значения в выходных данных выходят за рамки этой статьи, но подробно описаны в руководстве пользователя WebLogic по AKS.

Создание базы данных SQL Azure

Чтобы создать одну базу данных База данных SQL Azure для использования с приложением, выполните действия, описанные в кратком руководстве. Создание одной базы данных в База данных SQL Azure. Внимательно обратите внимание на следующие различия:

  • На шаге "Основы" запишите значения для группы ресурсов, имени базы данных, <имени сервера.database.windows.net>, имени администратора сервера и пароля. Эта статья относится к значению группы ресурсов базы данных как <db-resource-group>.

  • На шаге "Сеть" установите метод подключения к общедоступной конечной точке, задайте для доступа к этому серверу службы и ресурсы Azure для доступа к этому серверу и задайте для параметра "Добавить текущий IP-адрес клиента" значение "Да".

    Снимок экрана: портал Azure, на котором показана вкладка

Примечание.

Бессерверный уровень вычислительных ресурсов, выбранный для этой базы данных, экономит деньги, помещая базу данных в спящий режим в периоды бездействия. Пример приложения завершится ошибкой, если база данных спит при запуске приложения.

Чтобы принудить базу данных проснуться, можно запустить запрос с помощью редактора запросов. Выполните действия, описанные в разделе "Запрос базы данных". Ниже приведен пример запроса: SELECT * FROM COFFEE;

Затем создайте схему для примера приложения, выполнив следующие действия.

  1. Откройте область редактора запросов, выполнив действия, описанные в разделе "Запрос базы данных" краткого руководства. Создание отдельной базы данных — База данных SQL Azure.

  2. Введите и выполните следующий запрос:

    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);
    

    После успешного выполнения вы увидите сообщение о успешном выполнении запроса: затронутые строки: 1. Если вы не видите это сообщение, устраните и устраните проблему перед продолжением.

Создаются базы данных, таблицы, кластер AKS и кластер WebLogic Server. Если вы хотите, вы можете изучить консоль администрирования, открыв браузер и перейдя по адресу adminConsoleExternalUrl. Войдите со значениями, введенными во время развертывания WebLogic Server в AKS.

Вы можете перейти к подготовке AKS к размещению приложения WebLogic.

Настройка и развертывание примера приложения

Предложение подготавливает кластер WebLogic Server с помощью модели на изображении. В настоящее время в кластере WebLogic Server нет развернутого приложения.

В этом разделе обновляется кластер WebLogic Server путем развертывания примера приложения с помощью вспомогательного образа.

Получение приложения для изменения

В этом разделе описано, как клонировать пример кода для этого руководства. Пример находится на сайте GitHub в репозитории weblogic-on-azure в папке javaee/weblogic-café/ . Ниже приведена структура файлов приложения.

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

Чтобы клонировать репозиторий, используйте следующие команды:

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

Если появится сообщение об отключенном состоянии HEAD, это сообщение безопасно игнорировать. Это просто означает, что вы проверили тег.

Используйте следующую команду, чтобы создать javaee/weblogic-café/:

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

Пакет должен быть успешно создан и расположен в $BASE_DIR/weblogic-on-azure/javaee/weblogic-café/target/weblogic-café.war. Если пакет не отображается, перед продолжением необходимо устранить проблему и устранить ее.

Создание вспомогательного образа с помощью Docker

В этом разделе показано, как создать вспомогательный образ. Этот образ включает следующие компоненты:

  • Модель в файлах модели образов
  • Ваше приложение
  • Файл архива драйвера подключения к базе данных Java (JDBC)
  • Установка средств развертывания WebLogic

Вспомогательный образ — это образ контейнера Docker, содержащий приложение и конфигурацию. Оператор WebLogic Kubernetes объединяет вспомогательный образ с domain.spec.image кластером AKS, который содержит веб-сервер, JDK и операционную систему. Дополнительные сведения о вспомогательных изображениях см . в документации Oracle по вспомогательным изображениям .

В этом разделе требуется терминал Linux с установленным Azure CLI и kubectl.

Чтобы создать образ, выполните следующие действия.

  1. Используйте следующие команды, чтобы создать каталог для этапов моделей и приложений:

    mkdir -p ${BASE_DIR}/mystaging/models
    cd ${BASE_DIR}/mystaging/models
    
  2. Скопируйте значение shellCmdtoOutputWlsImageModelYaml, сохраненное из выходных данных развертывания, вставьте его в окно Bash и выполните команду. Команда должна выглядеть примерно так:

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

    Эта команда создает файл ${BASE_DIR}/mystaging/models/model.yaml с содержимым, аналогичным следующему примеру:

    # 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. Аналогичным образом скопируйте значение shellCmdtoOutputWlsImageProperties , вставьте его в окно Bash и выполните команду. Команда должна выглядеть примерно так:

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

    Эта команда создает файл ${BASE_DIR}/mystaging/models/model.properties с содержимым, аналогичным следующему примеру:

    # 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. Чтобы создать файл модели приложения, выполните следующие действия.

    1. Используйте следующие команды, чтобы скопировать weblogic-café.war и сохранить его в 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. Используйте следующие команды, чтобы создать файл модели приложения с отображаемым содержимым. Сохраните файл модели в ${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. Используйте следующие команды, чтобы скачать и установить драйвер JDBC Microsoft SQL Server в 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
    
  6. Затем используйте следующие команды, чтобы создать файл модели подключения к базе данных с отображаемым содержимым. Сохраните файл модели до ${BASE_DIR}/mystaging/models/dbmodel.yaml. В модели используются заполнители (секрет sqlserver-secret) для имени пользователя базы данных, пароля и URL-адреса. Убедитесь, что следующие поля заданы правильно. Следующая модель именует ресурс с jdbc/WebLogicCafeDB.

    Имя элемента Поле значение
    Имя JNDI resources.JDBCSystemResource.<resource-name>.JdbcResource.JDBCDataSourceParams.JNDIName jdbc/WebLogicCafeDB
    Имя драйвера resources.JDBCSystemResource.<resource-name>.JDBCDriverParams.DriverName com.microsoft.sqlserver.jdbc.SQLServerDriver
    URL-адрес базы данных resources.JDBCSystemResource.<resource-name>.JDBCDriverParams.URL @@SECRET:sqlserver-secret:url@@
    Пароль базы данных resources.JDBCSystemResource.<resource-name>.JDBCDriverParams.PasswordEncrypted @@SECRET:sqlserver-secret:password@@
    Имя пользователя базы данных resources.JDBCSystemResource.<resource-name>.JDBCDriverParams.Properties.user.Value '@@SECRET:sqlserver-secret:user@@'
    cat <<EOF >dbmodel.yaml
    resources:
      JDBCSystemResource:
        jdbc/WebLogicCafeDB:
          Target: 'cluster-1'
          JdbcResource:
            JDBCDataSourceParams:
              JNDIName: [
                jdbc/WebLogicCafeDB
              ]
              GlobalTransactionsProtocol: None
            JDBCDriverParams:
              DriverName: com.microsoft.sqlserver.jdbc.SQLServerDriver
              URL: '@@SECRET:sqlserver-secret:url@@'
              PasswordEncrypted: '@@SECRET:sqlserver-secret:password@@'
              Properties:
                user:
                  Value: '@@SECRET:sqlserver-secret:user@@'
            JDBCConnectionPoolParams:
              TestTableName: SQL SELECT 1
              TestConnectionsOnReserve: true
    EOF
    
  7. Используйте следующие команды, чтобы создать архивный файл приложения, а затем удалить папку wlsdeploy , которую больше не требуется:

    cd ${BASE_DIR}/mystaging/models
    zip -r archive.zip wlsdeploy
    
    rm -f -r wlsdeploy
    
  8. Используйте следующие команды, чтобы скачать и установить средство развертывания WebLogic (WDT) в промежуточном каталоге и удалить файлы weblogic-deploy/bin/*.cmd , которые не используются в средах 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
    
  9. Чтобы удалить установщик WDT, выполните следующую команду:

    rm weblogic-deploy.zip
    
  10. Используйте следующие команды для создания вспомогательного образа с помощью 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
    # ARG expansion in COPY command's --chown is available in docker version 19.03.1+.
    # For older docker versions, change the Dockerfile to use separate COPY and 'RUN chown' commands.
    COPY --chown=\$USER:\$GROUP ./ \${AUXILIARY_IMAGE_PATH}/
    USER \$USER
    EOF
    
  11. docker buildx build Выполните команду с помощью ${BASE_DIR}/mystaging/Dockerfile, как показано в следующем примере:

    cd ${BASE_DIR}/mystaging
    docker buildx build --platform linux/amd64 --build-arg AUXILIARY_IMAGE_PATH=/auxiliary --tag model-in-image:WLS-v1 .
    

    При успешной сборке образа выходные данные выглядят примерно так:

    [+] Building 12.0s (8/8) FINISHED                                   docker:default
    => [internal] load build definition from Dockerfile                          0.8s
    => => transferring dockerfile: 473B                                          0.0s
    => [internal] load .dockerignore                                             1.1s
    => => transferring context: 2B                                               0.0s
    => [internal] load metadata for docker.io/library/busybox:latest             5.0s
    => [1/3] FROM docker.io/library/busybox@sha256:6d9ac9237a84afe1516540f40a0f  0.0s
    => [internal] load build context                                             0.3s
    => => transferring context: 21.89kB                                          0.0s
    => CACHED [2/3] RUN adduser -D -u 1000 -G root oracle                        0.0s
    => [3/3] COPY --chown=oracle:root ./ /auxiliary/                             1.5s
    => exporting to image                                                        1.3s
    => => exporting layers                                                       1.0s
    => => writing image sha256:2477d502a19dcc0e841630ea567f50d7084782499fe3032a  0.1s
    => => naming to docker.io/library/model-in-image:WLS-v1                      0.2s
    
  12. Если образ успешно создан, теперь он должен находиться в репозитории Docker локального компьютера. Чтобы проверить создание образа, выполните следующую команду:

    docker images model-in-image:WLS-v1
    

    Эта команда должна создать выходные данные, аналогичные следующему примеру:

    REPOSITORY       TAG       IMAGE ID       CREATED       SIZE
    model-in-image   WLS-v1    76abc1afdcc6   2 hours ago   8.61MB
    

    После создания образа он должен иметь исполняемые файлы WDT в файле /вспомогательный/weblogic-deploy, а также модель WDT, свойство и архивные файлы в /вспомогательных/моделях. Используйте следующую команду, чтобы проверить содержимое изображения:

    docker run -it --rm model-in-image:WLS-v1 find /auxiliary -maxdepth 2 -type f -print
    

    Эта команда должна создать выходные данные, аналогичные следующему примеру:

    /auxiliary/models/model.properties
    /auxiliary/models/dbmodel.yaml
    /auxiliary/models/model.yaml
    /auxiliary/models/archive.zip
    /auxiliary/models/appmodel.yaml
    /auxiliary/Dockerfile
    /auxiliary/weblogic-deploy/LICENSE.txt
    /auxiliary/weblogic-deploy/VERSION.txt
    
  13. Чтобы отправить вспомогательный образ в Реестр контейнеров Azure, выполните следующие действия.

    1. Откройте портал Azure и перейдите в группу ресурсов, подготовленную в разделе Deploy WebLogic Server в AKS.

    2. Выберите ресурс реестра контейнеров типа из списка ресурсов.

    3. Наведите указатель мыши на значение рядом с сервером входа и выберите значок копирования рядом с текстом.

    4. Сохраните значение в переменной среды с помощью следующей ACR_LOGIN_SERVER команды:

      export ACR_LOGIN_SERVER=<value-from-clipboard>
      
    5. Выполните следующие команды, чтобы пометить и отправить изображение. Перед выполнением этих команд убедитесь, что Docker запущен.

      export ACR_NAME=$(echo ${ACR_LOGIN_SERVER} | cut -d '.' -f 1)
      az acr login -n $ACR_NAME
      docker tag model-in-image:WLS-v1 $ACR_LOGIN_SERVER/wlsaks-auxiliary-image:1.0
      docker push $ACR_LOGIN_SERVER/wlsaks-auxiliary-image:1.0
      
    6. az acr repository show Чтобы проверить, успешно ли отправлено изображение в удаленный репозиторий, как показано в следующем примере:

      az acr repository show --name ${ACR_NAME} --image wlsaks-auxiliary-image:1.0
      

      Эта команда должна создать выходные данные, аналогичные следующему примеру:

      {
        "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
      }
      

Применение вспомогательного образа

На предыдущих шагах вы создали вспомогательный образ, включая модели и WDT. Перед применением вспомогательного образа к кластеру WebLogic Server выполните следующие действия, чтобы создать секрет для URL-адреса источника данных, имени пользователя и пароля. Секрет используется как часть заполнителя в dbmodel.yaml.

  1. Подключитесь к кластеру AKS, скопируйте значение shellCmdtoConnectAks , сохраненное ранее, вставив его в окно Bash, а затем выполните команду. Команда должна выглядеть примерно так:

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

    Вы должны увидеть выходные данные, аналогичные следующему примеру. Если вы не видите эти выходные данные, устраните и устраните проблему перед продолжением.

    Merged "<name>" as current context in /Users/<username>/.kube/config
    
  2. Чтобы получить значения переменных, показанных в следующей таблице, выполните следующие действия. Эти значения используются для создания секрета для подключения к источнику данных.

    «Переменная» Description Пример
    DB_CONNECTION_STRING Строка подключения SQL Server. jdbc:sqlserver://server-name.database.windows.net:1433;database=wlsaksquickstart0125
    DB_USER Имя пользователя для входа в SQL Server. welogic@sqlserverforwlsaks
    DB_PASSWORD Пароль для входа на сервер sQL. Secret123456
    1. Посетите ресурс базы данных SQL в портал Azure.

    2. В области навигации в разделе "Параметры" выберите строки подключения.

    3. Перейдите на вкладку JDBC .

    4. Щелкните значок копирования, чтобы скопировать строка подключения в буфер обмена.

    5. Для DB_CONNECTION_STRINGэтого используйте всю строка подключения, но замените заполнитель {your_password_here} паролем базы данных.

    6. Для DB_USERэтого используйте часть строка подключения от azureuser до, но не включая;password={your_password_here}.

    7. Для DB_PASSWORDэтого используйте введенное значение при создании базы данных.

  3. Используйте следующие команды, чтобы создать секрет Kubernetes. В этой статье используется имя sqlserver-secret секрета для секрета подключения к источнику данных. Если вы используете другое имя, убедитесь, что значение совпадает с значением в dbmodel.yaml.

    В следующих командах обязательно задайте переменные DB_CONNECTION_STRINGDB_USERи DB_PASSWORD правильно замените примеры заполнителя значениями, описанными на предыдущих шагах. Чтобы предотвратить вмешательство оболочки, заключите значение DB_ переменных в одинарные кавычки.

    export DB_CONNECTION_STRING='<example-jdbc:sqlserver://server-name.database.windows.net:1433;database=wlsaksquickstart0125>'
    export DB_USER='<example-welogic@sqlserverforwlsaks>'
    export DB_PASSWORD='<example-Secret123456>'
    export WLS_DOMAIN_NS=sample-domain1-ns
    export WLS_DOMAIN_UID=sample-domain1
    export SECRET_NAME=sqlserver-secret
    
    kubectl -n ${WLS_DOMAIN_NS} create secret generic \
        ${SECRET_NAME} \
        --from-literal=password="${DB_PASSWORD}" \
        --from-literal=url="${DB_CONNECTION_STRING}" \
        --from-literal=user="${DB_USER}"
    
    kubectl -n ${WLS_DOMAIN_NS} label secret \
        ${SECRET_NAME} \
        weblogic.domainUID=${WLS_DOMAIN_UID}
    

    Перед продолжением необходимо просмотреть следующие выходные данные. Если вы не видите эти выходные данные, устраните и устраните проблему перед продолжением.

    secret/sqlserver-secret created
    secret/sqlserver-secret labeled
    
  4. Примените вспомогательный образ, исправив определение пользовательского ресурса домена (CRD) с помощью kubectl patch команды.

    Вспомогательный образ определен в spec.configuration.model.auxiliaryImages, как показано в следующем примере.

    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
    

    Используйте следующие команды, чтобы увеличить restartVersion значение и использовать kubectl patch для применения вспомогательного образа к домену CRD с помощью приведенного определения:

    export VERSION=$(kubectl -n ${WLS_DOMAIN_NS} get domain ${WLS_DOMAIN_UID} -o=jsonpath='{.spec.restartVersion}' | tr -d "\"")
    export VERSION=$((VERSION+1))
    
    cat <<EOF >patch-file.json
    [
      {
        "op": "replace",
        "path": "/spec/restartVersion",
        "value": "${VERSION}"
      },
      {
        "op": "add",
        "path": "/spec/configuration/model/auxiliaryImages",
        "value": [{"image": "$ACR_LOGIN_SERVER/wlsaks-auxiliary-image:1.0", "imagePullPolicy": "IfNotPresent", "sourceModelHome": "/auxiliary/models", "sourceWDTInstallHome": "/auxiliary/weblogic-deploy"}]
      },
      {
        "op": "add",
        "path": "/spec/configuration/secrets",
        "value": ["${SECRET_NAME}"]
      }
    ]
    EOF
    
    kubectl -n ${WLS_DOMAIN_NS} patch domain ${WLS_DOMAIN_UID} \
        --type=json \
        --patch-file patch-file.json
    
    kubectl get pod -n ${WLS_DOMAIN_NS} -w
    
  5. Дождитесь, пока сервер администрирования и управляемые серверы будут отображать значения в следующем блоке выходных данных, прежде чем продолжить:

    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
    

    Для достижения этого состояния может потребоваться 5–10 минут. В следующем списке представлен обзор того, что происходит во время ожидания.

    • Сначала должно появиться запущено sample-domain1-introspector . Это программное обеспечение ищет изменения в пользовательском ресурсе домена, чтобы он смог выполнить необходимые действия в кластере Kubernetes.
    • При обнаружении изменений домен introspector убивает и запускает новые модули pod для развертывания изменений.
    • Затем вы увидите sample-domain1-admin-server завершение и перезапуск модуля pod.
    • Затем вы увидите, что два управляемых сервера завершаются и перезапускаются.
    • Только если все три модуля pod показывают 1/1 Running состояние, это нормально.

Проверка функциональности развертывания

Чтобы проверить функциональные возможности развертывания, просмотрите консоль администрирования WebLogic Server и пример приложения:

  1. Вставьте значение adminConsoleExternalUrl в адресную строку веб-браузера, подключенного к Интернету. Вы увидите знакомый экран входа в консоль администрирования WebLogic Server.

  2. Войдите с именем пользователя weblogic и паролем, введенным при развертывании WebLogic Server из портал Azure. Помните, что это значение wlsAksCluster2022.

  3. В поле "Структура домена" выберите "Службы".

  4. В разделе "Службы" выберите источники данных.

  5. На панели "Сводка источников данных JDBC" выберите "Мониторинг". Экран должен выглядеть примерно так, как показано в следующем примере. Состояние источника данных выполняется на управляемых серверах.

    Снимок экрана: состояние источника данных.

  6. В поле "Структура домена" выберите "Развертывания".

  7. В таблице "Развертывания" должна быть одна строка. Имя должно совпадать со Application значением в файле appmodel.yaml . Щелкните имя.

  8. Перейдите на вкладку "Тестирование ".

  9. Выберите weblogic-café.

  10. На панели "Параметры" для веб-кафе выберите вкладку "Тестирование".

  11. Разверните значок рядом + с weblogic-café. Экран должен выглядеть примерно так, как показано в следующем примере. В частности, в столбце точки тестирования должны отображаться значения, аналогичные http://sample-domain1-managed-server1:8001/weblogic-cafe/index.xhtml столбцу "Точка тестирования".

    Снимок экрана: точки тестирования weblogic-café.

    Примечание.

    Гиперссылки в столбце "Точка тестирования" недоступны для выбора, так как мы не настроили консоль администрирования с внешним URL-адресом, на котором она запущена. В этой статье показана консоль администрирования WebLogic Server только путем демонстрации. Не используйте консоль администрирования WebLogic Server для каких-либо устойчивых изменений конфигурации при запуске webLogic Server в AKS. Облачная разработка WebLogic Server в AKS требует, чтобы любая устойчивая конфигурация была представлена в исходных образах docker или применена к работающему кластеру AKS с помощью методов CI/CD, таких как обновление модели, как описано в документации Oracle.

  12. Ознакомьтесь со context-path значением развернутого примера приложения. При развертывании рекомендуемого примера приложения context-path используется weblogic-cafe.

  13. Создайте полный URL-адрес для примера приложения, добавив context-path его в значение clusterExternalUrl . Если вы развернули рекомендуемое приложение, полный URL-адрес должен быть примерно таким http://wlsgw202401-wls-aks-domain1.eastus.cloudapp.azure.com/weblogic-cafe/.

  14. Вставьте полный URL-адрес в веб-браузере, подключенном к Интернету. Если вы развернули рекомендуемое приложение, вы увидите результаты, аналогичные следующему снимку экрана:

    Снимок экрана: тестовое веб-приложение.

Очистка ресурсов

Чтобы избежать расходов за использование Azure, необходимо удалить ненужные ресурсы. Если кластер больше не нужен, используйте команду az group delete . Следующая команда удаляет группу ресурсов, службу контейнеров, реестр контейнеров, базу данных и все связанные ресурсы:

az group delete --name <resource-group-name> --yes --no-wait
az group delete --name <db-resource-group-name> --yes --no-wait

Следующие шаги

Дополнительные сведения о запуске WebLogic Server на AKS или виртуальных машинах см. по следующим ссылкам:

Дополнительные сведения о предложениях Oracle WebLogic в Azure Marketplace см. в статье Oracle WebLogic Server в Azure. Эти предложения — это все собственные лицензии. Предполагается, что у вас уже есть соответствующие лицензии с Oracle и имеются соответствующие лицензии для запуска предложений в Azure.