Рубрики
Uncategorized

Развертывание масштабируемых микросервисов Java для Enterprise Kubernetes с использованием Red Hat OpenShift

Три из самых быстрорастущих архитектурных и развертывающих моделей в программном обеспечении сегодня-микросервисы, … Помечено Java, Kubernetes, Microservices, DevOps.

Три из самых быстрорастущих архитектурных и развертываемых моделей в программном обеспечении сегодня-микросервисы, Kubernetes и гибридное облако. В этой лаборатории мы пройдемся по созданию гибридного приложения облачного микросервиса, используя Java и Open Liberty, развернув это приложение в кластер Kubernetes, работающий Red Hat OpenShift. Мы сделаем это с помощью бесплатных (!) И пробных ресурсов на IBM Cloud.

ℹ Эта лаборатория использует части Open Liberty Openshift Operators Lab , но консолидировано и обновляется с последними синтаксисами и лабораторными версиями.

Чтобы назначить бесплатный кластер, вам нужно Подпишитесь на IBM Cloud

ℹ Проблемы с активацией вашей учетной записи? Обязательно проверьте свою папку спама на предмет электронной почты активации, и если ваша бесплатная учетная запись электронной почты не работает, попробуйте другой адрес электронной почты, например, Ваше рабочее письмо. По какой -то причине учетные записи Outlook.com часто не зарегистрируются.

Посетите https://olsolab.mybluemix.net и не забудьте использовать следующее Ключ: Ослаб

(Для адреса электронной почты используйте тот же адрес электронной почты, который вы использовали для регистрации своей учетной записи IBM.)

Теперь вы сможете получить доступ к своему кластеру Red Hat OpenShift через облачную панель IBM. Посетите https://cloud.ibm.com/resources :

Теперь , нажмите на имя своего кластера, чтобы получить доступ к странице сведений о кластере на IBM Cloud:

В правом верхнем углу потяните Действия Меню и выберите Связаться с CLI

После нажатия Запросить токен , вы увидите пользовательскую команду, созданную под Войдите с этим токеном Анкет Скопируйте это в буфер обмена, мы будем использовать его через секунду!

Вернемся к вашей облачной панели IBM Cloud, нажмите на IBM Cloud Shell Icon Анкет

Оболочка займет несколько секунд, чтобы вращаться. Как только он будет вживую, вы можете вставка OC Login ... командование, что мы скопировали несколько шагов раньше. Вуаля, вы теперь вошли в свой кластер OpenShift из облачной оболочки IBM, и вы можете запускать команды, используя OC !

Во -первых, давайте создадим новый проект. Я позвоню в свой проект гид . Вы можете сделать это через Red Hat OpenShift UI или через CLI:

oc new-project guide

Далее мы установим два оператора: Strimzi Для Кафки и Open Liberty Анкет Для этой установки мы будем использовать последний оператор Open Liberty, но в частности, мы будем использовать версию 0,22,1 Стримзи.

Во -первых, нажмите на ссылку OpenShift Web Console на своей странице IBM Cloud Cluster:

В левом меню нажмите Операторы >> Оператор Хаб Анкет

Затем убедитесь, что вы перешли на соответствующий проект, который мы назвали Руководство Анкет

ℹ Вы можете использовать любое название проекта, просто убедитесь, что быть последовательным.

Теперь, когда у нас выбран правильный проект, давайте установим Последний Версия Open Liberty и версия 0,22,1 из Strimzi Анкет

Давайте используем пример кода, предоставленный проектом Open Liberty, для развертывания некоторых простых микросервисов. Мы клонируем код, используя эти команды:

git clone https://github.com/openliberty/guide-cloud-openshift-operator.git
cd guide-cloud-openshift-operator
cd start

Мы изменим файлы в старт каталог в этой лаборатории. В конце концов это будет напоминать финиш каталог , но вы можете перейти к финиш Если вы хотите: D

Вы можете настроить специфику развертываемости kafka, контролируемого оператором Strimzi, с помощью файла конфигурации YAML.

Убедитесь, что вы находитесь в каталоге начала, и создайте файл kafka.yaml в вашем любимом редакторе.

ℹ Примечание: из -за Новые несовместимости API , этот файл kafka.yaml отличается от учебника Open Liberty.

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: kafka-cluster
spec:
  kafka:
    version: 2.5.0
    replicas: 1
    listeners:
    - name: plain
      port: 9092
      type: internal
      tls: false
    config:
      offsets.topic.replication.factor: 1
      transaction.state.log.replication.factor: 1
      transaction.state.log.min.isr: 1
      log.message.format.version: 2.5
    storage:
      type: ephemeral
  zookeeper:
    replicas: 1
    storage:
      type: ephemeral
  entityOperator:
    topicOperator: {}
    userOperator: {}

ℹ Примечание: проблемы с вим А в отступление? Попробуйте настроить : установить вставку Перед вставкой, затем : Установите Nopaste После того, как ты закончишь.

Теперь давайте развернем Kafka на основе этого файла:

oc apply -f kafka.yaml

Запустите следующие команды для упаковки системы и микросервисов инвентаризации:

mvn -pl models clean install
mvn clean package

Теперь давайте создадим Build.yaml файл:

apiVersion: v1
kind: Template
metadata:
  name: "build-template"
  annotations:
    description: "Build template for the system and inventory service"
    tags: "build"
objects:
  - apiVersion: v1
    kind: ImageStream
    metadata:
      name: "${APP_NAME}-imagestream"
      labels:
        name: "${APP_NAME}"
  - apiVersion: v1
    kind: BuildConfig
    metadata:
      name: "${APP_NAME}-buildconfig"
      labels:
        name: "${APP_NAME}"
    spec:
      source:
        type: Binary
      strategy:
        type: Docker
      output:
        to:
          kind: ImageStreamTag
          name: "${APP_NAME}-imagestream:1.0-SNAPSHOT"
parameters:
- description: The application name [system|inventory]
  name: APP_NAME

Запустите следующие команды для создания объектов для системы и микросервисов инвентаризации:

oc process -f build.yaml -p APP_NAME=system | oc create -f -
oc process -f build.yaml -p APP_NAME=inventory | oc create -f -

Наконец, давайте запустим сборки:

oc start-build system-buildconfig --from-dir=system/.
oc start-build inventory-buildconfig --from-dir=inventory/.

Далее пришло время управлять развертыванием. Создать Deploy.yaml файл:

apiVersion: openliberty.io/v1beta1
kind: OpenLibertyApplication
metadata:
  name: system
  labels:
    name: system
spec:
  applicationImage: guide/system-imagestream:1.0-SNAPSHOT
  env:
    - name: WLP_LOGGING_MESSAGE_FORMAT
      value: "json"
    - name: WLP_LOGGING_MESSAGE_SOURCE
      value: "message,trace,accessLog,ffdc,audit"
    - name: MP_MESSAGING_CONNECTOR_LIBERTY_KAFKA_BOOTSTRAP_SERVERS
      value: "[kafka-bootstrap-address]"
---
apiVersion: openliberty.io/v1beta1
kind: OpenLibertyApplication
metadata:
  name: inventory
  labels:
    name: inventory
spec:
  applicationImage: guide/inventory-imagestream:1.0-SNAPSHOT
  service:
    port: 9085
  expose: true
  env:
    - name: WLP_LOGGING_MESSAGE_FORMAT
      value: "json"
    - name: WLP_LOGGING_MESSAGE_SOURCE
      value: "message,trace,accessLog,ffdc,audit"
    - name: MP_MESSAGING_CONNECTOR_LIBERTY_KAFKA_BOOTSTRAP_SERVERS
      value: "[kafka-bootstrap-address]"

Вы заметите, что у этого файла отсутствует значение, [kafka-bootstrap-address] Анкет Вы можете найти это в конфигурации POD в OpenShift, это должно выглядеть следующим образом: My-Cluster-Kafka-Bootstrap: 9092

Вы можете получить правильное значение, работая:

oc get kafka kafka-cluster -o=jsonpath='{.status.listeners[?(@.type=="plain")].bootstrapServers}{"\n"}'

Заменить [kafka-bootstrap-address] с новым значением.

Далее разверните приложение, запустив

oc apply -f deploy.yaml

Чтобы получить публичный маршрут, запустите:

oc get routes

Вы увидите выход, похожий на:

NAME        HOST/PORT                                    PATH   SERVICES    PORT       TERMINATION   WILDCARD
inventory   inventory-guide.apps.lights.os.fyre.ibm.com         inventory   9085-tcp                 None

Посетите микросервис инвентаризации, перейдя к следующему URL: http://[host]/systems/systems (убедившись заменить имя хоста значением хоста из вышеуказанной команды.

Поздравляю! Вы только что закончили настройку и развертывание открытого микросервиса Liberty на Red Hat OpenShift!

Оригинал: «https://dev.to/drnugent/deploying-scalable-java-microservices-to-enterprise-kubernetes-using-red-hat-openshift-546b»