Ранней привлекательностью Java было ее обещание “написать один раз, запустить где угодно”. ” Теоретически, эта переносимость должна позволить разработчику писать код, который будет работать без изменений на любой платформе.
Однако сейчас мы видим, что экосистема движется в сторону облачных технологий, таких как контейнеры, и команды создают приложения, которые являются более модульными и распределенными, чтобы упростить их масштабирование. Это значительно меняет подход к разработке, развертыванию и предоставлению приложений.
Таким образом, сценарий, который мы сейчас видим, заключается в том, что разработчики пытаются научиться развертывать свои приложения Java с использованием контейнеров и Kubernetes в качестве платформы управления контейнерами с целью достижения таких целей, как повышение устойчивости, масштабируемости и многого другого. Тем не менее, когда они начинают свое путешествие по микросервисам, они понимают, что это не так просто, как ожидалось.
При развертывании приложения Java с использованием архитектуры микросервисов в Kubernetes они узнают, что речь идет уже не только о коде их приложения. Теперь, чтобы развернуть и предоставить пользователям доступ к своим приложениям, им необходимо понимать такие концепции, как контроллеры репликации, модули, службы, балансировка нагрузки и многое другое, которые ранее рассматривались как компоненты, связанные с инфраструктурой, и обрабатывались системными администраторами. Это усложняет и задерживает процесс доставки приложений и негативно влияет на работу разработчиков.
В конце концов, разработчики должны сосредоточиться на том, что важнее всего, на коде своего приложения, одновременно автоматизируя задачи, связанные с инфраструктурой.
Давайте посмотрим, как мы можем развернуть пример микросервисного приложения Java под названием WildFly
Если бы вы развернули это приложение в Kubernetes, вам нужно было бы:
- Создайте конфигурацию контроллера репликации
- Создайте сервис для своего приложения
- Создайте и настройте балансировку нагрузки, чтобы пользователи могли получить доступ к вашему приложению
- Создать пространство имен
- И больше
Создание вышеперечисленного может занять много времени. Управление этими конфигурациями по мере изменения приложения может привести к дополнительным сложностям, таким как понимание того, как выбирать между NodePort и ClusterIP, например, и многое другое.
Требования:
- Кластер Kubernetes
- Ketch установлен и доступен через ваш интерфейс командной строки. Для получения дополнительной информации об установке Ketch, пожалуйста, посетите Начало работы с Ketch
Если Ketch уже установлен, первым шагом будет создание пула, который преобразуется в пространство имен в Kubernetes, где вы будете развертывать свое приложение WildFly. Вы можете сделать это с помощью приведенной ниже команды:
ketch pool add development --ingress-service-endpoint 35.197.96.152 --ingress-type istio
- Имейте в виду, что вам потребуется обновить IP-адрес конечной точки службы входа на IP-адрес из вашего кластера, который вы можете найти, выполнив приведенную ниже команду:
kubectl get services -n istio-system
Вы можете увидеть, что ваш пул был успешно создан, выполнив приведенную ниже команду:
ketch pool list
Теперь вы создаете свое приложение, в котором следующим будет развернут образ приложения WildFly:
ketch app create wildfly --pool development
Последний шаг заключается в развертывании образа приложения:
ketch app deploy wildfly -i docker.io/jboss/wildfly:latest
Вы можете просмотреть подробную информацию о статусе вашего приложения и URL-адрес, который был автоматически присвоен ему, используя приведенную ниже команду:
ketch app list
Если вы перейдете по представленному URL-адресу, мы сможем увидеть веб-интерфейс приложения
Используя Ketch, вы увидели, что вместо того, чтобы тратить много времени на изучение различных концепций Kubernetes, вы можете развернуть свое приложение Java Microservices с помощью трех простых команд.
Ketch устраняет сложности с развертыванием приложений, улучшает работу разработчиков и скорость доставки приложений.
Подайте Кетч сегодня и присоединяйтесь к одному из самых быстрорастущих проектов с открытым исходным кодом в облачном пространстве!
Оригинал: “https://dev.to/brunoa19/java-microservice-deployment-to-kubernetes-2mm7”