Статьи

WebLogic Server 12.1.3 в Кубернетесе

WLS-привет-мир-kubernetes Большинство из вас помнят, что у меня немного истории на сервере Oracle WebLogic. Возвращаясь к временам BEA. Я не хочу комментировать последние разработки, функции или стандартную поддержку, но одно можно сказать наверняка: многие пользователи оценят возможность запуска в контейнере. Может быть, это единственное, что будет иметь реальное значение в нашей отрасли с постоянным прогрессом в области контейнеризации. Фактически мы можем управлять компонентами разнородной инфраструктуры на общей основе. Если у нас есть правильные инструменты под рукой. И это верно для операционной стороны OpenShift и, конечно, для всех разработчиков, которые по достоинству оценят, что может сделать для них Fabric8.

Лицензионное предисловие

Что бы ни происходило в этом блоге, это происходит только на моем локальном ноутбуке разработчика. И я твердо верю, что в отношении технологий Oracle это абсолютно подпадает под действие так называемого лицензионного соглашения для разработчиков OTN Free и лицензионного соглашения для двоичного кода Oracle для Java SE .

Я абсолютно уверен, что производственной среде нужна куча лицензий. Но я не специалист. Так что не спрашивайте меня. Если вы хотите использовать RHEL 7, пожалуйста, узнайте о подписках Red Hat .

Хорошо, WebLogic — где твой образ?

Не там. Я предполагаю по причинам лицензирования. Но Bruno проделал огромную работу, отправив соответствующие файлы Dockerfiles и скрипты на официальный аккаунт Oracle GitHub . Так. первый шаг в запуске WebLogic в Kubernetes — это создание образа докера с ним. Идти,

1
git clone https://github.com/oracle/docker

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

Перейдите на веб-сайт Oracle , примите лицензию OTN (если хотите) и загрузите независимый от платформы установщик ZIP (wls1213_dev_update2.zip).

Теперь перейдите на веб-сайт загрузки JDK , выполните ту же процедуру лицензирования и загрузите JDK 8u51, что и rpm (jdk-8u51-linux-x64.rpm). Поместите оба в папку OracleWebLogic \ dockerfiles \ 1.2.1.3. Если вы работаете на Unix-подобной ОС, не стесняйтесь проверить официальную документацию и использовать предоставленные скрипты. Это не сработало для меня в Windows, так что вы проходите пошаговую инструкцию. Перейдите и переименуйте Dockerfile.developer в Dockerfile и удалите все остальные.

1
2
mv Dockerfile.developer Dockerfile
rm Dockerfile.*

Теперь вы открываете Dockerfile и меняете несколько вещей. Основывайтесь на 7-м РЕЛЕ:

1
FROM rhel7

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

1
ENV JAVA_RPM jdk-8u51-linux-x64.rpm

Время построить наш имидж. И прежде чем начать, давайте повторно воспользуемся установщиком fabric8 vagrant, который я уже использовал для последних двух постов в блоге . Итак, сначала приведите ваш бродячий экземпляр с помощью OpenShift. Теперь пришло время построить образ WebLogic. Расслабьтесь и расслабьтесь, потому что это займет еще пару минут. У вас есть уборка? Это может быть подходящее время!

1
docker build --force-rm=true --tag="vagrant.f8:5000/oracle/weblogic:12.1.3-dev" .

Готово? Проверьте, все ли там, где мы ожидаем: (изображения докера)

1
vagrant.f8:5000/oracle/weblogic       12.1.3-dev          68f1ea788bba        About a minute ago   2.05 GB

Поскольку этот образ содержит только двоичные файлы сервера, теперь нам нужно создать образ с настроенным доменом WLS. К счастью, в папке samples \ 12c-domain есть еще несколько скриптов. Итак, проверьте, имеет ли Dockerfile и все сценарии в контейнерах-сценариях правильный конец строки UNIX. Иногда Git может испортить их, если вы используете Windows. И если вы уже там, не забудьте изменить некоторые порты в соответствии с вашими потребностями. Мне пришлось изменить порт администратора на 8011 (сделать это в сценарии Dockerfile и add-machine.py. Еще одна вещь, которую мы хотим сделать, — запустить экземпляр в режиме разработки. Это позволяет нам просто скопировать наше приложение Java EE в папку ./autodeployment и разверните ее при запуске. Вы можете просто изменить атрибут в следующей строке с prod на dev:

1
setOption('ServerStartMode','dev')

Теперь вы готовы к созданию образа домена разработки:

1
docker build --force-rm=true --tag="vagrant.f8:5000/myfear/weblogic:12.1.3-dev"

И, после еще нескольких чашек кофе, мы готовы проверить, попало ли это изображение в наш репозиторий (изображения докеров)

1
vagrant.f8:5000/myfear/weblogic      12.1.3-dev          77a3ec07d176        9 minutes ago       2.052 GB

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

1
docker run -it myfear/weblogic:12.1.3-dev

Если это сработало, вы готовы создать свой третий образ сегодня. Который будет содержать вашу заявку.

NetBeans и Fabric8 — перенесите WebLogic в греческое небо

Запустите NetBeans и создайте красивый, простой и компактный проект Java EE 6 из архетипа maven по вашему выбору. Добавьте к нему все зависимости от плагинов fabric8 и docker-maven, как я уже показывал в первом посте из этой серии . Давайте настроим свойства под наши нужды и назовем изображение: myfear / weblogic-test: latest. Самое главное, вы должны правильно сопоставить порт контейнера со службой Kubernetes:

01
02
03
04
05
06
07
08
09
10
11
<!-- Kubernetes Service Port // Mapped via the HARouter-->
<fabric8.service.port>9050</fabric8.service.port>
 
<!-- The exposed container port -->
<fabric8.service.containerPort>8011</fabric8.service.containerPort>
 
<!-- because, I'm working with the remote registry here, base it on the remote image -->
<docker.from>vagrant.f8:5000/myfear/weblogic:12.1.3-dev</docker.from>
 
<!-- Just cosmetics, changing the container label -->
<fabric8.label.container>weblogic</fabric8.label.container>

Не забудьте использовать Java EE 6 в качестве зависимости и изменить как пользователя, так и базу развертывания в плагине docker-maven на:

1
2
<user>oracle:oracle:oracle</user>
<basedir>/u01/oracle/weblogic/user_projects/domains/base_domain/autodeploy/</basedir>

Время построить третий и последний образ докера:

1
mvn clean install docker:build

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

1
mvn fabric8:json fabric8:apply

И не забудьте добавить отображение имени хоста в ваш файл hosts.

1
172.28.128.4 myfear-weblogic-test.vagrant.f8

Запрос http: //myfear-weblogic-test.vagrant.f8/sample показывает приложение после того, как вы подождали пару минут (по крайней мере, мне пришлось; похоже, мой ноутбук был недостаточно быстрым).

WLS-на-K8

Некоторые дальнейшие замечания

Это не совсем готово к производству. WLS знает управляемые серверы и диспетчеры узлов, и существует множество портов для внешней связи, которые необходимо открыть. По сути, это не более чем развертывание подросткового приложения на AdminServer. Есть несколько технических документов и дальнейших идей о том, как настроить скрипты домена в соответствии с вашими потребностями. Я не хотел этого делать по понятным причинам. Итак, рассмотрим это как доказательство концепции.