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


Развертывание приложения 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 Kubernetes
  • Образ контейнера, включая среду выполнения 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.
    • kubectl. Используется kubectl version для проверки того, работает ли kubectl. Этот документ был протестирован с версией 1.21.2.
    • Пакет средств разработки Java (JDK). В этой статье описывается установка Microsoft Build OpenJDK 11. Убедитесь, что JAVA_HOME переменная среды правильно задана в оболочках, в которых выполняются команды.
    • Maven 3.5.0 или более поздней версии.
    • Убедитесь, что у вас установлена программа zip/unzip. Используется zip/unzip -v для проверки того, работает ли zip/unzip работа.

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

В этом разделе создается База данных SQL Azure с помощью проверки подлинности Microsoft Entra с включенным подключением к управляемому удостоверению.

Создание или изменение группы ресурсов

Создайте группу ресурсов с помощью команды az group create. Так как группы ресурсов должны быть уникальными в пределах подписки, выберите уникальное имя. Простой способ создания уникальных имен — использовать сочетание ваших инициалов, текущей даты и некоторого идентификатора. Например, abc1228rg. В этом примере создается группа ресурсов с именем abc1228rg в расположении eastus :

export RESOURCE_GROUP_NAME="abc1228rg"
az group create \
    --name ${RESOURCE_GROUP_NAME} \
    --location eastus

Создание сервера базы данных и базы данных

Создайте сервер с помощью команды az sql server create. В этом примере создается сервер с именем myazuresql20130213 пользователя администратора azureuser и пароля администратора. заменив <your-password> собственным паролем; Дополнительные сведения см. в кратком руководстве. Создание одной базы данных — База данных SQL Azure.

Примечание.

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

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

Создайте базу данных с помощью команды az sql db create на уровне бессерверных вычислений.

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

Настройка администратора Microsoft Entra

Сведения о взаимодействии SQL Server Azure с управляемыми удостоверениями см. в статье "Подключение с помощью проверки подлинности Microsoft Entra".

Выполните следующие действия, чтобы настроить учетную запись администратора Microsoft Entra на сервере SQL Azure из портал Azure:

  1. В портал Azure откройте экземпляр myazuresql20130213SQL Server Azure.
  2. Выберите "Параметры", а затем выберите идентификатор Microsoft Entra. На странице идентификатора Записи Майкрософт выберите "Задать администратора".
  3. На странице "Добавить администратора" найдите пользователя, выберите пользователя или группу, чтобы быть администратором, а затем нажмите кнопку "Выбрать".
  4. В верхней части страницы идентификатора Microsoft Entra нажмите кнопку "Сохранить". Для пользователей и групп Microsoft Entra идентификатор объекта отображается рядом с именем администратора.
  5. Процесс изменения администратора может занять несколько минут. Затем новый администратор появится в поле идентификатора Microsoft Entra.

Создание управляемого удостоверения, назначаемого пользователем

Затем в Azure CLI создайте удостоверение в подписке с помощью команды az identity create . Это управляемое удостоверение используется для подключения к базе данных.

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

Создание пользователя базы данных для управляемого удостоверения

Теперь подключитесь к базе данных SQL Azure от портал Azure имени администратора Microsoft Entra и создайте пользователя для управляемого удостоверения.

Сначала создайте правило брандмауэра для доступа к серверу SQL Azure на портале, как показано на следующих шагах:

  1. В портал Azure откройте экземпляр myazuresql20130213SQL Server Azure.
  2. Выберите "Безопасность", а затем выберите "Сеть".
  3. В разделе "Правила брандмауэра" выберите " Добавить IPV4-адрес клиента".
  4. В разделе "Исключения" выберите "Разрешить службам и ресурсам Azure доступ к этому серверу".
  5. Выберите Сохранить.

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

  1. Выберите "Параметры", а затем выберите базы данных SQL. Выберите mysingledatabase20230213.

  2. Выберите редактор запросов. На странице приветствия База данных SQL Редактор запросов в разделе проверки подлинности Active Directory найдите сообщение, напримерLogged in as user@contoso.com.

  3. Выберите "Продолжить" в user качестве user@contoso.comимени учетной записи администратора AD.

  4. После входа в редактор запроса 1 выполните следующие команды, чтобы создать пользователя базы данных для управляемого удостоверения 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
    
  5. В редакторе запросов 1 выберите "Выполнить ", чтобы выполнить команды SQL.

  6. Если команды успешно выполнены, вы можете найти сообщение Query succeeded: Affected rows: 0.

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

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}

Создание схемы для примера приложения

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

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. Если вы не видите это сообщение, устраните и устраните проблему перед продолжением.

Вы можете продолжить развертывание WLS в предложении AKS.

Развертывание 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. Нажмите кнопку "Рядом", чтобы просмотреть область DNS.

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

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

  1. Для подключения к базе данных нажмите кнопку "Да".
  2. В разделе "Параметры подключения" для параметра "Выбор типа базы данных" откройте раскрывающееся меню и выберите Microsoft SQL Server (с поддержкой подключения без пароля).
  3. Для имени JNDI введите jdbc/WebLogicCafeDB.
  4. Для строки подключения DataSource введите строка подключения, полученные в последнем разделе.
  5. Выберите "Использовать подключение к источнику данных без пароля".
  6. Для управляемого удостоверения, назначаемого пользователем, выберите управляемое удостоверение, созданное на предыдущем шаге. В этом примере его имя — myManagedIdentity.
  7. Выберите Добавить.

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

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

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

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

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

Примечание.

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

  1. Для параметров балансировки нагрузки выберите Load Balancer (цен. категория Service.

  2. Выберите "Использовать внутреннюю подсистему балансировки нагрузки".

  3. Добавьте следующие строки в таблицу:

    Префикс имени службы Назначение Порт
    wls-admin-internal admin-server 7001
    wls-cluster-internal cluster-1 8001

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

Снимок экрана: портал Azure, на котором показана вкладка балансировки нагрузки сервера Create Oracle WebLogic Server на странице Служба Azure Kubernetes.

После развертывания можно найти URL-адреса доступа сервера администрирования и кластера из выходных данных, помеченные администраторомConsoleExternalUrl и clusterExternalUrl.

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

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

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

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

Предложение подготавливает кластер 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. Если пакет не отображается, перед продолжением необходимо устранить проблему и устранить ее.

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

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

  • Модель в файлах модели образов
  • Ваше приложение
  • Файл архива драйвера подключения к базе данных 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. Чтобы настроить подключение к источнику данных, выполните следующие действия.

    1. Выполните следующие действия, чтобы скачать и установить драйвер JDBC Microsoft SQL Server и расширение удостоверений Azure, которое позволяет подключения к базе данных с помощью управляемого удостоверения Azure.

      1. Чтобы скачать и установить драйвер wlsdeploy/externalJDBCLibrariesJDBC Microsoft SQL Server, используйте следующие команды:

        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. Чтобы установить расширение wlsdeploy/classpathLibrariesудостоверений Azure, используйте следующие команды:

        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. Используйте следующие команды для очистки ресурсов:

        rm target -f -r
        rm azure-identity-extensions.xml
        
    2. Подключитесь к кластеру 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
      
    3. Экспортируйте модель подключения к базе данных и сохраните ее в ${BASE_DIR}/mystaging/models/dbmodel.yaml. Следующие шаги извлекают модель конфигурации базы данных из ConfigMap sample-domain1-wdt-config-map. Имя соответствует формату <domain-uid>-wdt-config-map, где <domain-uid> устанавливается во время развертывания предложения. Если вы изменили значение по умолчанию, замените его собственным пользовательским интерфейсом домена.

      1. Ключ данных — db-secret-name.yaml>.< Чтобы получить имя секрета базы данных, используйте следующую команду:

        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. Затем извлеките модель базы данных с помощью следующей команды:

        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. Наконец, используйте следующую команду, чтобы проверить содержимое dbmodel.yaml.

        cat ${BASE_DIR}/mystaging/models/dbmodel.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.
        
        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. Используйте следующие команды, чтобы создать архивный файл, а затем удалить папку wlsdeploy , которую больше не требуется:

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

    rm weblogic-deploy.zip
    
  9. Используйте следующие команды для создания файла 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. az acr build Выполните команду с помощью ${BASE_DIR}/mystaging/Dockerfile, как показано в следующем примере:

    export ACR_NAME=<value-from-clipboard>
    export IMAGE="wlsaks-auxiliary-image:1.0"
    
  11. Используйте следующие команды, чтобы дважды проверить промежуточные файлы:

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

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

    ./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. Создайте изображение, az acr buildкак показано в следующем примере:

    az acr build -t ${IMAGE} --build-arg AUXILIARY_IMAGE_PATH=/auxiliary -r ${ACR_NAME} --platform linux/amd64 .
    

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

    ...
    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
    

    Образ отправляется в ACR после успешной сборки.

  13. az acr repository show Чтобы проверить, успешно ли отправлено изображение в удаленный репозиторий, как показано в следующем примере:

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

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

    {
       "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, выполнив следующие действия.

  1. Примените вспомогательный образ, исправив определение пользовательского ресурса домена (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))
    
    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. Так как подключение к базе данных настроено на вспомогательном образе, выполните следующую команду, чтобы удалить ConfigMap:

    kubectl delete configmap sample-domain1-wdt-config-map -n ${WLS_DOMAIN_NS}
    

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

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

Для достижения этого состояния может потребоваться 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.