Внедрете приложение за пролетно стартиране в OpenShift

1. Общ преглед

В този урок ще покажем как да внедрите приложение от нашия Bootstrap просто приложение, като използвате урока Spring Boot за Openshift.

Като част от това ще:

  • Инсталирайте и конфигурирайте инструментите за разработка на Openshift.
  • Създайте проект Openshift и внедряване на MySQL.
  • Конфигурирайте приложението за Spring Cloud Kubernetes.
  • Създайте и внедрете приложението в контейнер с помощта на приставката Fabric8 Maven и тествайте и мащабирайте приложението.

2. Конфигурация за отваряне на смени

Първо, трябва да инсталираме Minishift, локалния клъстер Openshift с един възел и клиента Openshift .

Преди да използваме Minishift, трябва да конфигурираме разрешения за потребителя на разработчика:

minishift addons install --defaults minishift addons enable admin-user minishift start oc adm policy --as system:admin add-cluster-role-to-user cluster-admin developer

Сега искаме да използваме конзолата Openshift за създаване на MySQL услуга. Можем да стартираме URL адреса на браузъра, като използваме:

minishift console

Ако не сте влезли автоматично, използвайте разработчик / разработчик.

Създайте проект с име baeldung-demo и след това създайте услуга на базата данни MySQL от каталога. Предоставете baeldung-db за услугата за бази данни , baeldung_db за името на базата данни MySQL и оставете останалите стойности по подразбиране.

Вече имаме услуга и тайни за достъп до базата данни. Обърнете внимание на url връзката към базата данни: mysql: // baeldung-db: 3306 / baeldung_db

Също така трябва да позволим на приложенията да четат конфигурация като Kubernetes Secrets и ConfigMaps:

oc create rolebinding default-view --clusterrole=view \ --serviceaccount=baeldung-demo:default --namespace=baeldung-demo

3. Зависимости от пролетния облак Kubernetes

Ще използваме проекта Spring Cloud Kubernetes, за да активираме API-тата за Kubernetes, които са в основата на Openshift:

 openshift    org.springframework.cloud spring-cloud-kubernetes-dependencies 0.3.0.RELEASE pom import   org.springframework.cloud spring-cloud-dependencies Greenwich.RELEASE pom import      org.springframework.cloud spring-cloud-starter-kubernetes-config   org.springframework.boot spring-boot-starter-actuator   

Също така ще използваме приставката Fabric8 Maven, за да изградим и разгърнем контейнера:

 io.fabric8 fabric8-maven-plugin 3.5.37   fmp  resource build     

4. Конфигурация на приложението

Сега трябва да осигурим конфигурация, за да гарантираме, че правилните Spring Profiles и Kubernetes Secrets се инжектират като променливи на околната среда .

Нека създадем YAML фрагмент в src / main / fabric8, така че приставката Fabric8 Maven да го използва при създаването на конфигурацията за разполагане.

Също така трябва да добавим раздел за задвижващия механизъм Spring Boot, тъй като по подразбиране във Fabric8 все още се опитва да осъществи достъп / health вместо / actuator / health:

spec: template: spec: containers: - env: - name: SPRING_PROFILES_ACTIVE value: mysql - name: SPRING_DATASOURCE_USER valueFrom: secretKeyRef: name: baeldung-db key: database-user - name: SPRING_DATASOURCE_PASSWORD valueFrom: secretKeyRef: name: baeldung-db key: database-password livenessProbe: httpGet: path: /actuator/health port: 8080 scheme: HTTP initialDelaySeconds: 180 readinessProbe: httpGet: path: /actuator/health port: 8080 scheme: HTTP initialDelaySeconds: 30

След това ще запазим ConfigMap в openshift / configmap.yml , това съдържа данните за application.properties с URL адреса на MySQL:

apiVersion: v1 kind: ConfigMap metadata: name: spring-boot-bootstrap data: application.properties: |- spring.datasource.url=jdbc:mysql://baeldung-db:3306/baeldung_db

Преди да взаимодействаме с Openshift с помощта на клиента от командния ред, трябва да влезем . В горния десен ъгъл на уеб конзолата има икона на потребител, от която можем да изберем падащото меню с надпис „Копиране на командата за влизане“. След това използвайте в черупка:

oc login //192.168.42.122:8443 --token=

Нека се уверим, че използваме правилния проект:

oc project baeldung-demo

И след това качваме ConfigMap :

oc create -f openshift/configmap.yml

5. Разполагане

По време на разполагането приставката Fabric8 Maven се опитва да определи конфигурирания порт. Съществуващият файл application.properties в нашето примерно приложение използва израз за дефиниране на порта, който приставката не може да анализира. Затова трябва да коментираме реда:

#server.port=${port:8080}

от текущото приложение.свойства .

Вече сме готови за внедряване:

mvn clean fabric8:deploy -P openshift 

Можем да наблюдаваме напредъка на внедряването, докато видим, че приложението ни работи:

oc get pods -w

Трябва да предостави списък:

NAME READY STATUS RESTARTS AGE baeldung-db-1-9m2cr 1/1 Running 1 1h spring-boot-bootstrap-1-x6wj5 1/1 Running 0 46s 

Преди да тестваме приложението, трябва да определим маршрута:

oc get routes

Ще отпечата маршрутите в текущия проект:

NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD spring-boot-bootstrap spring-boot-bootstrap-baeldung-demo.192.168.42.122.nip.io spring-boot-bootstrap 8080 None 

Сега нека проверим дали приложението ни работи, като добавим книга:

http POST //spring-boot-bootstrap-baeldung-demo.192.168.42.122.nip.io/api/books \ author="Iain M. Banks" 

Очаква се следният изход:

HTTP/1.1 201 { "author": "Iain M. Banks", "id": 1, "title": "The Player of Games" }

6. Мащабиране на приложението

Нека мащабираме разполагането, за да стартираме 2 екземпляра:

oc scale --replicas=2 dc spring-boot-bootstrap

И тогава можем да използваме същите стъпки като по-рано, за да гледаме как се разгръща, да вземем маршрутите и да тестваме крайната точка.

Openshift предоставя широка гама от възможности за управление на производителността и мащабиране извън обхвата на тази статия.

7. Заключение

В този урок ние:

  • Инсталира и конфигурира инструментите за разработка на Openshift и локалната среда
  • Внедрена услуга MySQL
  • Създаден ConfigMap и конфигурация за внедряване, за да предостави свойства за свързване на база данни
  • Изгради и внедри контейнер за конфигурираното ни приложение Spring Boot и
  • Тества и скалира приложението.

За повече подробности вижте подробната документация на Openshift.

Пълният изходен код на нашите примери тук е, както винаги, върху GitHub.