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


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

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

  • Запустите приложение Java на Oracle WebLogic Server (WLS).
  • Создайте кластер WebLogic Server в AKS с помощью предложения Azure Marketplace.
  • Создайте образ Docker для приложения, которая включает модели развертывания с помощью средств WebLogic Deploy Tooling (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 RBAC)? Дополнительные сведения о конкретных ролях, необходимых WLS в AKS, см. в статье о встроенных ролях Azure.
  • У вас есть учетные данные для учетной записи единого входа Oracle. Сведения о создании учетной записи Oracle см. в разделе "Создание учетной записи Oracle".
  • Примите условия лицензии для WebLogic Server.
    • Посетите реестр контейнеров Oracle и войдите в систему.
    • Если у вас есть право на поддержку, выберите Промежуточное программное обеспечение, а затем найдите и выберите weblogic_cpu.
    • Если у вас нет прав на поддержку от Oracle, выберите Middleware, затем найдите и выберите weblogic.
    • Примите лицензионное соглашение.

    Замечание

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

  • Подготовьте локальную машину с установленной Unix-подобной операционной системой, например, 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

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

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

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

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

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

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

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

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

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

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

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

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

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

  3. Выберите Продолжить как user@contoso.com, где user - имя вашей учетной записи администратора 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 Server на AKS.

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

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

    Снимок экрана портала Azure, на котором показан WebLogic Server в AKS.

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

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

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

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

  8. Нажмите кнопку Далее.

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

  1. Прокрутите страницу до раздела, обозначенного как предоставление учетной записи Единого входа (SSO) Oracle Sign-On. Введите свои учетные данные для единого входа Oracle, указанные в предварительных условиях.

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

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

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

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

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

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

  1. Выберите Далее, чтобы просмотреть панель TLS/SSL.

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

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

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

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

  5. Чтобы создать вход для консоли администрирования, выберите Да.

    Снимок экрана портала Azure с конфигурацией контроллера Ingress шлюза приложений на странице создания Oracle WebLogic Server в Azure Kubernetes Service.

  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. Для параметров балансировки нагрузки выберите стандартную службу балансировщика нагрузки.

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

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

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

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

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

После развертывания можно найти URL-адреса доступа к серверу администрирования и кластеру в выходных данных, помеченные как adminConsoleExternalUrl и 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

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

  • Файлы модели Model in Image
  • Ваше приложение
  • Файл архива драйвера подключения к базе данных 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. Чтобы скачать и установить драйвер Microsoft SQL Server JDBC в 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. Чтобы установить расширение удостоверений Azure 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. Используйте следующие команды для очистки ресурсов:

        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.
  • При обнаружении изменений инспектор домена убивает старые pods и запускает новые для развертывания изменений.
  • Затем вы увидите завершение и перезапуск 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. На панели Параметры для weblogic-cafe выберите вкладку Тестирование.

  11. Разверните значок + рядом с weblogic-cafe. Экран должен выглядеть примерно так, как показано в следующем примере. В частности, в столбце точки тестирования должны отображаться значения, аналогичные 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. Все эти предложения — по модели Bring-Your-Own-License. Предполагается, что у вас уже есть соответствующие лицензии с Oracle и имеются соответствующие лицензии для запуска предложений в Azure.