Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Представленный шаблон позволяет развернуть сервис eltex-bob в кластере OpenShift.

Подготовка к установке:

  • должен быть развёрнут и запущен кластер OpenShift версии не ниже 3.11
  • должен быть настроен механизм создания PersistantVolumeClaim - GlusterFS, Ceph RBD, iSCSI, etc.
  • должен быть доступ по ssh к ноде кластера с ролью master

Порядок установки:

  • в случае использования Atomic Registry предварительно настроить соответствующий ImageStream
  • сохранить приложенный шаблон в файл eltex-bob-template.yaml на ноде кластера с ролью master
  • применить шаблон при помощи команды

    oc apply -f eltex-bob-template.yaml
  • находясь в Application Console, развернуть приложение из шаблона, указав следующие параметры:
    • Name of service - имя приложения в OpenShift
    • Image Name - имя docker-образа или путь к нему
    • Database connection string: строка подключения к серверу MySQL в формате jdbc:mysql://[mysql_host][/database][?properties]
    • Database login: логин для подключения к БД
    • Database password: пароль для подключения к БД
    • AP search domain mask - маска для поиска домена

  • если для работы сервиса необходим словарь ВСП, то дополнительно проделать следующие шаги:
    • создать PersistantVolumeClaim, указав используемый в кластере StorageClass
    • в созданном Volume необходимо создать каталог eltex-bob, в который необходимо поместить файл словаря vsp.xlsx
    • к созданному Deployment необходимо добавить Storage, указав следующие параметры:
      • Mount Path - точка монтирования внутри контейнера
      • Subpath - пусть к файлу на подключаемом Volume
      • Volume Name - уникальное имя для идентификации этого Volume

    • в результате OpenShift запустит новый экземпляр приложения с новой конфигурацией
  • проверить работу сервиса в соответствии с его документацией




eltex-bob-template.yaml
kind: Template
apiVersion: v1
metadata:
  name: eltex-bob-template
  annotations:
    description: "Eltex-bob application template"
    openshift.io/display-name: "The Eltex BOB"
    openshift.io/provider-display-name: "Eltex"
    iconClass: "icon-openjdk"
objects:
  - apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ${INSTANCE_NAME}-config
    data:
      application.properties: |-
        spring.application.name=bob
        spring.datasource.url=${DB_URL}
        spring.datasource.hikari.maximum-pool-size=1
        spring.datasource.username=${DB_LOGIN}
        spring.datasource.password=${DB_PASS}
        domain_search.mask=${AP_SEARCH_MASK}
        domain_search.regex=^root/Ap/(.*)$
        domain_search.replacement=$1
        vsp_search.regex=/(\\d{2,}[-_]\\d{2,})[^/]*$
        log.include.stacktrace=false
        mac.splitter=":" 
        auth.enabled=false
        auth.username=user
        auth.password=password
        excel.config.file=/etc/eltex-bob/excel_config.yaml
        server.port=9190
      excel_config.yaml: |-
        vspExcelFile: /etc/eltex-bob/vsp.xlsx
        vspSheetName: Операторы
        type: NUMBER
        columns:
          vsp: 5
          bank: 2
          region: 12
          office: 3
          address: 9
          city: 8
      log4j2.xml: |-
        <?xml version="1.0" encoding="UTF-8"?>
        <Configuration>
            <Properties>
                <Property name="maxSize" value="5MB"/>
                <Property name="maxCount" value="7"/>
                <Property name="logDir" value="/var/log/eltex-bob"/>
                <Property name="defaultPattern" value="%d{ISO8601} [%t] %-5p %logger{1} %C{1}.%M(line:%L). %m%n"/>
                <Property name="gelfHost" value="udp:lab3-test.eltex.loc"/>
                <Property name="gelfPort" value="12201"/>
                <Property name="gelfLevel" value="OFF"/>
                <Property name="filenamePrefix" value="eltex-bob"/>
            </Properties>
            <Appenders>
                <Console name="STDOUT" target="SYSTEM_OUT">
                    <PatternLayout>
                        <Pattern>${defaultPattern}</Pattern>
                    </PatternLayout>
                </Console>
                <Gelf name="Gelf"
                      host="${gelfHost}"
                      port="${gelfPort}"
                      version="1.1"
                      facility="${filenamePrefix}"
                      extractStackTrace="true"
                      originHost="%host{fqdn}"
                      maximumMessageSize="8192" >
                    <Field name="thread" pattern="%t" />
                    <Field name="level" pattern="%level" />
                    <Field name="severity" pattern="%-5level" />
                    <Field name="logger" pattern="%logger{1}" />
                    <Field name="location" pattern="%C{1}.%M(line:%L)" />
                </Gelf>
            </Appenders>
            <Loggers>
                <Root level="info">
                    <AppenderRef ref="STDOUT"/>
                    <AppenderRef ref="Gelf" level="${gelfLevel}"/>
                </Root>
            </Loggers>
        </Configuration>
  - apiVersion: v1
    kind: DeploymentConfig
    metadata:
      labels:
        app: ${INSTANCE_NAME} 
      name: ${INSTANCE_NAME} 
    spec:
      replicas: 1
      selector:
        app: ${INSTANCE_NAME}
      strategy:
        type: "Rolling" 
      template:
        metadata:
          labels:
            app: ${INSTANCE_NAME}
        spec:
          containers:
            - name: ${INSTANCE_NAME}-container
              image: ${IMAGE_NAME}
              volumeMounts:
                - name: config-volume
                  mountPath: /etc/eltex-bob/application.properties
                  subPath: application.properties
                - name: config-volume
                  mountPath: /etc/eltex-bob/excel_config.yaml
                  subPath: excel_config.yaml
                - name: config-volume
                  mountPath: /etc/eltex-bob/log4j2.xml
                  subPath: log4j2.xml
              livenessProbe:
                httpGet:
                  path: /actuator/health
                  port: 9190
                  scheme: HTTP
                initialDelaySeconds: 30
              readinessProbe:
                httpGet:
                  path: /GetAPList
                  port: 9190
                  scheme: HTTP
                initialDelaySeconds: 30
          volumes:
            - name: config-volume
              configMap:
                name: ${INSTANCE_NAME}-config
                items:
                - key: application.properties
                  path: application.properties
                - key: excel_config.yaml  
                  path: excel_config.yaml
                - key: log4j2.xml  
                  path: log4j2.xml
      triggers:
        - type: "ConfigChange" 
  - apiVersion: v1
    kind: Service
    metadata:
      name: ${INSTANCE_NAME}-service
    spec:
      ports:
        - port: 9190
          protocol: TCP
      selector:
        app: ${INSTANCE_NAME}
  - apiVersion: v1
    kind: Route
    metadata:
      name: ${INSTANCE_NAME}-route
    spec:
      to:
        kind: Service
        name: ${INSTANCE_NAME}-service
parameters:
  - name: INSTANCE_NAME
    displayName: Name of service
    description: Name of service in openshift
    required: true
    value: eltex-bob
  - name: IMAGE_NAME
    displayName: Image name
    description: Image name or pull spec
    required: true
    value: hub.eltex-co.ru/softwlc/eltex-bob:latest
  - name: DB_URL
    displayName: Database connection string
    description: Database for eltex-bob
    required: true
    value: jdbc:mysql://lab3.eltex.loc:3306/eltex_ems?useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
  - name: DB_LOGIN
    displayName: Database login
    description: Database login
    required: true
    value: root
  - name: DB_PASS
    displayName: Database password
    description: Database password
    required: true
    value: root
  - name: AP_SEARCH_MASK
    displayName: AP search domain mask
    description: AP search domain mask
    required: true
    value: "[a-zA-Z0-9.-_]*.ap.root"
message: "... The Eltex Bob with name ${INSTANCE_NAME} is starting ..." 
  • Нет меток