Развертывание приложения 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
работа.
- Azure CLI. Используется
Создание базы данных 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:
- В портал Azure откройте экземпляр
myazuresql20130213
SQL Server Azure. - Выберите "Параметры", а затем выберите идентификатор Microsoft Entra. На странице идентификатора Записи Майкрософт выберите "Задать администратора".
- На странице "Добавить администратора" найдите пользователя, выберите пользователя или группу, чтобы быть администратором, а затем нажмите кнопку "Выбрать".
- В верхней части страницы идентификатора Microsoft Entra нажмите кнопку "Сохранить". Для пользователей и групп Microsoft Entra идентификатор объекта отображается рядом с именем администратора.
- Процесс изменения администратора может занять несколько минут. Затем новый администратор появится в поле идентификатора Microsoft Entra.
Создание управляемого удостоверения, назначаемого пользователем
Затем в Azure CLI создайте удостоверение в подписке с помощью команды az identity create . Это управляемое удостоверение используется для подключения к базе данных.
az identity create \
--resource-group ${RESOURCE_GROUP_NAME} \
--name myManagedIdentity
Создание пользователя базы данных для управляемого удостоверения
Теперь подключитесь к базе данных SQL Azure от портал Azure имени администратора Microsoft Entra и создайте пользователя для управляемого удостоверения.
Сначала создайте правило брандмауэра для доступа к серверу SQL Azure на портале, как показано на следующих шагах:
- В портал Azure откройте экземпляр
myazuresql20130213
SQL Server Azure. - Выберите "Безопасность", а затем выберите "Сеть".
- В разделе "Правила брандмауэра" выберите " Добавить IPV4-адрес клиента".
- В разделе "Исключения" выберите "Разрешить службам и ресурсам Azure доступ к этому серверу".
- Выберите Сохранить.
После создания правила брандмауэра можно получить доступ к серверу SQL Azure на портале. Чтобы создать пользователя базы данных, выполните следующие действия.
Выберите "Параметры", а затем выберите базы данных SQL. Выберите
mysingledatabase20230213
.Выберите редактор запросов. На странице приветствия База данных SQL Редактор запросов в разделе проверки подлинности Active Directory найдите сообщение, например
Logged in as user@contoso.com
.Выберите "Продолжить" в
user
качестве user@contoso.comимени учетной записи администратора AD.После входа в редактор запроса 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
В редакторе запросов 1 выберите "Выполнить ", чтобы выполнить команды SQL.
Если команды успешно выполнены, вы можете найти сообщение
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 и заполнить область "Основные сведения".
В строке поиска в верхней части портал Azure введите weblogic. В результатах автоматического поиска в разделе Marketplace выберите WebLogic Server в AKS.
Вы также можете перейти непосредственно к серверу WebLogic в предложении AKS .
На странице предложения нажмите кнопку "Создать".
На панели "Основные сведения" убедитесь, что значение, отображаемое в поле "Подписка", совпадает с тем, что вы вошли в Azure. Убедитесь, что у вас есть роли, перечисленные в разделе предварительных требований для подписки.
Необходимо развернуть предложение в пустой группе ресурсов. В поле "Группа ресурсов" выберите "Создать", а затем введите значение для группы ресурсов. Так как группы ресурсов должны быть уникальными в пределах подписки, выберите уникальное имя. Простой способ использовать уникальные имена — использовать сочетание инициалов, сегодняшней даты и некоторых идентификаторов, например
ejb0723wls
.В разделе "Сведения об экземпляре" выберите регион для развертывания. Список регионов Azure, где доступен AKS, см. в разделе "Доступность региона AKS".
В разделе "Учетные данные для WebLogic" оставьте значение по умолчанию для имени пользователя для администратора WebLogic.
wlsAksCluster2022
Введите пароль для администратора WebLogic. Используйте то же значение для полей шифрования подтверждения и пароля для модели WebLogic.Выберите Далее.
Выполните следующие действия, чтобы запустить процесс развертывания:
Прокрутите страницу до раздела, помеченного как Предоставление учетной записи единого входа (SSO) Oracle. Заполните учетные данные единого входа Oracle из предварительных условий.
Убедитесь, что вы заметите шаги в поле сведений, начиная с шага вперед, необходимо принять стандартные условия и ограничения Oracle.
В зависимости от того, имеет ли учетная запись единого входа Oracle право на поддержку Oracle, выберите соответствующий параметр для выбора типа образов webLogic Server. Если у учетной записи есть право на поддержку, выберите исправленные образы webLogic Server. В противном случае выберите общие образы webLogic Server.
Оставьте значение в выборе требуемого сочетания WebLogic Server... по умолчанию. У вас есть широкий спектр вариантов для версии WebLogic Server, JDK и ОС.
В разделе "Приложение" рядом с пунктом "Развертывание приложения"? выберите "Нет".
Ниже приведены действия, чтобы консоль администрирования WebLogic Server и пример приложения предоставлялись общедоступному Интернету со встроенной надстройкой ingress Шлюз приложений. Дополнительные сведения см. в разделе "Что такое Шлюз приложений контроллер входящего трафика?
Нажмите кнопку "Рядом", чтобы просмотреть область TLS/SSL.
Нажмите кнопку "Рядом", чтобы просмотреть область балансировки нагрузки.
Рядом с параметрами балансировки нагрузки выберите Шлюз приложений контроллер входящего трафика.
В Шлюз приложений контроллере входящего трафика вы увидите все поля, предварительно заполненные значениями по умолчанию для виртуальной сети и подсети. Не изменяйте значения по умолчанию.
Чтобы создать входящий трафик для консоли администрирования, нажмите кнопку "Да".
Нажмите кнопку "Рядом", чтобы просмотреть область DNS.
Нажмите кнопку "Рядом", чтобы просмотреть область "База данных".
Чтобы настроить подключение к базе данных с помощью управляемого удостоверения, выполните следующие действия.
- Для подключения к базе данных нажмите кнопку "Да".
- В разделе "Параметры подключения" для параметра "Выбор типа базы данных" откройте раскрывающееся меню и выберите Microsoft SQL Server (с поддержкой подключения без пароля).
- Для имени JNDI введите jdbc/WebLogicCafeDB.
- Для строки подключения DataSource введите строка подключения, полученные в последнем разделе.
- Выберите "Использовать подключение к источнику данных без пароля".
- Для управляемого удостоверения, назначаемого пользователем, выберите управляемое удостоверение, созданное на предыдущем шаге. В этом примере его имя —
myManagedIdentity
. - Выберите Добавить.
Раздел параметров подключения должен выглядеть следующим образом:
Чтобы завершить развертывание, выполните следующие действия.
- Выберите Review + create (Просмотреть и создать). Убедитесь, что проверка не завершается ошибкой. Если ошибка завершается ошибкой, исправьте все проблемы проверки, а затем нажмите кнопку "Проверить и создать еще раз".
- Нажмите кнопку создания.
- Отслеживание хода выполнения развертывания на странице " Развертывание".
В зависимости от сетевых условий и других действий в выбранном регионе развертывание может занять до 50 минут.
Примечание.
Если вашей организации требуется развернуть рабочую нагрузку в корпоративной виртуальной сети без разрешенных общедоступных IP-адресов, можно выбрать внутреннюю службу Load Balancer. Чтобы настроить внутреннюю службу Load Balancer, выполните следующие действия на вкладке балансировки нагрузки :
Для параметров балансировки нагрузки выберите Load Balancer (цен. категория Service.
Выберите "Использовать внутреннюю подсистему балансировки нагрузки".
Добавьте следующие строки в таблицу:
Префикс имени службы Назначение Порт wls-admin-internal
admin-server
7001 wls-cluster-internal
cluster-1
8001
Вкладка балансировки нагрузки должна выглядеть следующим образом:
После развертывания можно найти URL-адреса доступа сервера администрирования и кластера из выходных данных, помеченные администраторомConsoleExternalUrl и clusterExternalUrl.
Проверка выходных данных развертывания
Выполните действия, описанные в этом разделе, чтобы убедиться, что развертывание выполнено успешно.
Если вы перейдете от страницы развертывания , выполните следующие действия, чтобы вернуться на эту страницу. Если вы по-прежнему находитесь на странице с завершением развертывания, вы можете перейти к шагу 5 после следующего снимка экрана.
В углу любой страницы портал Azure выберите меню гамбургера и выберите группы ресурсов.
В поле Фильтр для любого поля введите первые несколько символов ранее созданной группы ресурсов. Если вы следовали рекомендации по созданию имени, введите свои инициалы, а затем выберите соответствующую группу ресурсов.
В области навигации в разделе "Параметры" выберите "Развертывания". Вы увидите упорядоченный список развертываний в этой группе ресурсов с последним первым.
Прокрутите до самой старой записи в этом списке. Эта запись соответствует развертыванию, начатому в предыдущем разделе. Выберите самое старое развертывание, как показано на следующем снимке экрана.
В области навигации выберите выходные данные. В этом списке показаны выходные значения из развертывания. Полезные сведения включаются в выходные данные.
Значение adminConsoleExternalUrl является полным общедоступным интернет-видимым ссылкой на консоль администрирования WebLogic Server для этого кластера AKS. Щелкните значок копирования рядом со значением поля, чтобы скопировать ссылку в буфер обмена. Сохраните это значение в стороне для дальнейшего использования.
Значение clusterExternalUrl является полным общедоступным интернет-видимым ссылкой на пример приложения, развернутого в WebLogic Server в этом кластере AKS. Щелкните значок копирования рядом со значением поля, чтобы скопировать ссылку в буфер обмена. Сохраните это значение в стороне для дальнейшего использования.
Значение shellCmdtoOutputWlsImageModelYaml — это строка base64 модели WDT, которая используется для создания образа контейнера. Сохраните это значение в стороне для дальнейшего использования.
Значение shellCmdtoOutputWlsImageProperties является строкой base64 свойств модели WDT, используемых для создания образа контейнера. Сохраните это значение в стороне для дальнейшего использования.
Значение 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.
Чтобы создать образ, выполните следующие действия.
Используйте следующие команды, чтобы создать каталог для этапов моделей и приложений:
mkdir -p ${BASE_DIR}/mystaging/models cd ${BASE_DIR}/mystaging/models
Скопируйте значение 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"
Аналогичным образом скопируйте значение 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
Чтобы создать файл модели приложения, выполните следующие действия.
Используйте следующие команды, чтобы скопировать 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
Используйте следующие команды, чтобы создать файл модели приложения с отображаемым содержимым. Сохраните файл модели в ${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
Чтобы настроить подключение к источнику данных, выполните следующие действия.
Выполните следующие действия, чтобы скачать и установить драйвер JDBC Microsoft SQL Server и расширение удостоверений Azure, которое позволяет подключения к базе данных с помощью управляемого удостоверения Azure.
Чтобы скачать и установить драйвер
wlsdeploy/externalJDBCLibraries
JDBC 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
Чтобы установить расширение
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/
Используйте следующие команды для очистки ресурсов:
rm target -f -r rm azure-identity-extensions.xml
Подключитесь к кластеру 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
Экспортируйте модель подключения к базе данных и сохраните ее в ${BASE_DIR}/mystaging/models/dbmodel.yaml. Следующие шаги извлекают модель конфигурации базы данных из ConfigMap
sample-domain1-wdt-config-map
. Имя соответствует формату<domain-uid>-wdt-config-map
, где<domain-uid>
устанавливается во время развертывания предложения. Если вы изменили значение по умолчанию, замените его собственным пользовательским интерфейсом домена.Ключ данных — 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}')
Затем извлеките модель базы данных с помощью следующей команды:
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
Наконец, используйте следующую команду, чтобы проверить содержимое 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
Используйте следующие команды, чтобы создать архивный файл, а затем удалить папку wlsdeploy , которую больше не требуется:
cd ${BASE_DIR}/mystaging/models zip -r archive.zip wlsdeploy rm -f -r wlsdeploy
Используйте следующие команды, чтобы скачать и установить средство развертывания 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
Чтобы очистить установщик WDT, выполните следующую команду:
rm weblogic-deploy.zip
Используйте следующие команды для создания файла 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
az acr build
Выполните команду с помощью ${BASE_DIR}/mystaging/Dockerfile, как показано в следующем примере:export ACR_NAME=<value-from-clipboard> export IMAGE="wlsaks-auxiliary-image:1.0"
Используйте следующие команды, чтобы дважды проверить промежуточные файлы:
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
Создайте изображение,
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 после успешной сборки.
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, выполнив следующие действия.
Примените вспомогательный образ, исправив определение пользовательского ресурса домена (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
Так как подключение к базе данных настроено на вспомогательном образе, выполните следующую команду, чтобы удалить 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 и пример приложения:
Вставьте значение adminConsoleExternalUrl в адресную строку веб-браузера, подключенного к Интернету. Вы увидите знакомый экран входа в консоль администрирования WebLogic Server.
Войдите с именем пользователя
weblogic
и паролем, введенным при развертывании WebLogic Server из портал Azure. Помните, что это значениеwlsAksCluster2022
.В поле "Структура домена" выберите "Службы".
В разделе "Службы" выберите источники данных.
На панели "Сводка источников данных JDBC" выберите "Мониторинг". Экран должен выглядеть примерно так, как показано в следующем примере. Состояние источника данных выполняется на управляемых серверах.
В поле "Структура домена" выберите "Развертывания".
В таблице "Развертывания" должна быть одна строка. Имя должно совпадать со
Application
значением в файле appmodel.yaml . Выберите имя.Перейдите на вкладку "Тестирование ".
Выберите weblogic-café.
На панели "Параметры" для веб-кафе выберите вкладку "Тестирование".
Разверните значок рядом + с weblogic-café. Экран должен выглядеть примерно так, как показано в следующем примере. В частности, в столбце точки тестирования должны отображаться значения, аналогичные
http://sample-domain1-managed-server1:8001/weblogic-cafe/index.xhtml
столбцу "Точка тестирования".Примечание.
Гиперссылки в столбце "Точка тестирования" недоступны для выбора, так как мы не настроили консоль администрирования с внешним URL-адресом, на котором она запущена. В этой статье показана консоль администрирования WebLogic Server только путем демонстрации. Не используйте консоль администрирования WebLogic Server для каких-либо устойчивых изменений конфигурации при запуске webLogic Server в AKS. Облачная разработка WebLogic Server в AKS требует, чтобы любая устойчивая конфигурация была представлена в исходных образах docker или применена к работающему кластеру AKS с помощью методов CI/CD, таких как обновление модели, как описано в документации Oracle.
Ознакомьтесь со
context-path
значением развернутого примера приложения. При развертывании рекомендуемого примера приложенияcontext-path
используетсяweblogic-cafe
.Создайте полный URL-адрес для примера приложения, добавив
context-path
его в значение clusterExternalUrl . Если вы развернули рекомендуемое приложение, полный URL-адрес должен быть примерно такимhttp://wlsgw202401-wls-aks-domain1.eastus.cloudapp.azure.com/weblogic-cafe/
.Вставьте полный 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.
Azure Kubernetes Service