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

Развертывание приложения для весенней загрузки для openShift

Простое руководство по развертыванию приложения Spring Boot для OpenShift

Автор оригинала: Corneil du Plessis.

1. Обзор

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

В рамках этого мы будем:

  • Установка и настройка инструментов разработки Openshift.
  • Создайте проект Openshift и развертывание MyS’L.
  • Настройка приложения для Весеннее облако Kubernetes .
  • Создание и развертывание приложения в контейнере с использованием Ткань8 Maven плагин и протестировать и масштабировать приложение.

2. Конфигурация с открытым смещением

Во-первых, мы должны установить мини- , локальный одноувный кластер 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 для создания сервиса MyS’L. Мы можем запустить URL-адрес браузера, используя:

minishift console

Если вы не вошли в систему автоматически, используйте разработчик/разработчик.

Создание проекта под названием baeldung-демо а затем создать службу баз данных MyS’L из каталога. Обеспечить baeldung-db для Службы баз данных, baeldung_db для имени базы данных MyS’L и оставьте другие значения по умолчанию.

Теперь у нас есть услуга и секреты для доступа к базе данных. Принять к сведению 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

Мы будем использовать Весеннее облако 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. Конфигурация приложения

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

Давайте создадим фрагмент YAML в src/main/fabric8 так что плагин Fabric8 Maven будет использовать его при создании конфигурации развертывания.

Нам также нужно добавить раздел для привода Spring Boot, так как по умолчанию в Fabric8 все еще пытается получить доступ к /здравоохранение вместо /актуатор/здоровье:

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.properts с URL-адресом MyS’L:

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 https://192.168.42.122:8443 --token=

Давайте убедитесь, что мы используем правильный проект:

oc project baeldung-demo

А потом мы загружаем ConfigMap :

oc create -f openshift/configmap.yml

5. Развертывание

Во время развертывания плагин Fabric8 Maven пытается определить настроенный порт. Существующая application.properts файл в нашем примере приложения использует выражение для определения порта, который плагин не может разобрать. Таким образом, мы должны прокомментировать строку:

#server.port=${port:8080}

от текущего application.properts .

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

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 http://spring-boot-bootstrap-baeldung-demo.192.168.42.122.nip.io/api/books \
  title="The Player of Games" 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 и локалированная среда
  • Развернута служба MyS’L
  • Создана конфигурация ConfigMap и развертывания для обеспечения свойств подключения базы данных
  • Построен и развернут контейнер для нашего настроенного приложения Spring Boot, и
  • Проверено и масштабировано приложение.

Для получения более подробной информации, проверить подробная документация Openshift .

Полный исходный код наших примеров здесь, как всегда, более на GitHub .