Рубрики
Без рубрики

Пример Java-приложения, работающего в облаке через Kubernetes

Новый комплексный образец приложения, реализованный с использованием Java EE, микропрофиля, Kubernetes и истории. Помеченные как java, kubernetes, микросервисы, облако.

В течение последних недель я работал над новым примером приложения, которое демонстрирует, как создавать архитектуры на основе микросервисов. Хотя я хотел бы добавить еще несколько незначительных вещей, я думаю, что сейчас образец довольно всеобъемлющий и является хорошим вариантом для разработчиков, особенно разработчиков Java EE, для изучения микросервисов и облачных шаблонов.

Пример доступен в виде открытого исходного кода. Репозиторий GitHub называется cloud-native-starter .

Kubernetes, Istio и Java

При создании облачных приложений перед разработчиками стоит задача выяснить, как решать такие вопросы, как маршрутизация трафика, отказоустойчивость, распределенный мониторинг, обнаружение сервисов и многое другое. К счастью, большинство из этих новых задач решаются платформой оркестровки Kubernetes и служебная сетка Состоит в том , чтобы . Эта функциональность работает в целом для микросервисов, независимо от языка, на котором они реализованы, и без изменений в логике приложения.

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

Разработчики Java могут использовать Микропрофиль Eclipse для реализации этой функции. MicroProfile – это расширение Java EE (Enterprise Edition) для создания архитектур на основе микросервисов, дополняющее возможности Kubernetes и Istio. В дополнение к специфичной для приложения логике, с которой не могут справиться Kubernetes и Istio, он также обладает удобными функциями, которые обычно требуются при разработке микросервисов, например, механизмами вызова API-интерфейсов REST и функциями для реализации API-интерфейсов REST, включая их документацию.

Принципы проектирования

Пример приложения следует этим принципам проектирования:

  • Максимально используйте платформы – делайте как можно меньше в рамках, специфичных для конкретного языка
  • Используйте компоненты с открытым исходным кодом для основных служб приложения только
  • Сделайте первый опыт как можно более простым
  • Иметь возможность запускать приложение в разных средах

Позвольте мне более подробно объяснить принципы проектирования.

Максимально используйте платформы – делайте как можно меньше в рамках, специфичных для конкретного языка

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

Используйте компоненты с открытым исходным кодом для основных служб приложения только

В своей роли защитника разработчиков я общаюсь со многими разработчиками. Почти все любят открытый исходный код. Чтобы охватить как можно больше разработчиков, пример приложения использует для основных сервисов приложения только проекты с открытым исходным кодом. Например, стек Java использует Open J9 , OpenJDK из Принять OpenJDK , OpenLiberty и МикроПрофИЛЬ . Очевидно, что Kubernetes и Istio также являются проектами с открытым исходным кодом. Компоненты приложения, которые недоступны с открытым исходным кодом, являются необязательными и могут быть заменены.

Сделайте первый опыт как можно более простым

Существует множество примеров, фрагментов, статей и учебных пособий, доступных для различных облачных функций, и многие из них действительно хороши. Однако у меня возникли проблемы с запуском некоторых из этих функций вместе в одном приложении. Иногда они использовали разные стеки Java, иногда разные версии, а иногда статьи были устаревшими.

В примере приложения показано несколько функций, работающих вместе, подробности см. Ниже. Существуют также сценарии для очень простого развертывания служб, в основном по одному сценарию на службу, аналогично “cf push” для приложений Cloud Foundry.

Иметь возможность запускать приложение в разных средах

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

Функциональность образца приложения

Проект демонстрирует следующую функциональность:

На этой диаграмме показаны службы и компоненты:

Веб-приложение вызывает API службы BFF (бэкэнд для интерфейса) для отображения статей с авторами.

Призыв к действию

Если вы хотите изучить облачные приложения, получите код пример приложения и следуйте инструкциям для настройки локальной среды Minikube и развертывания микросервисов. Если у вас уже есть кластер Kubernetes, настройка не должна занимать больше получаса.

Вы также можете запустить это приложение в службе IBM Cloud Kubernetes , которая является управляемой службой, поставляемой с плагином Istio . IBM предоставляет бесплатную учетную запись IBM Cloud Lite , кредитная карта не требуется и ограничений по времени нет. Чтобы воспользоваться сервисом Kubernetes, свяжитесь с Харальдом и себе чтобы получить промо-код. Затем следуйте этим инструкциям для развертывания служб в облаке IBM.

Как всегда, я хотел бы получить обратную связь. Пожалуйста, дайте мне знать, что вы думаете об этом примере и как его можно улучшить. Мои прямые сообщения в Твиттере открыты: @@хайдлофф

Я также хочу поблагодарить всех, кто помог создать это приложение, особенно Харальда Уэбеле, который написал много кода и сценариев.

Оригинал: “https://dev.to/nheidloff/example-java-app-running-in-the-cloud-via-kubernetes-2lb7”