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

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

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

  • должен быть развёрнутый и работающий кластер OpenShift версии не ниже 3.11
  • должен быть доступ по ssh к ноде кластера с ролью master

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

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

    oc apply -f eltex-doors-template.yaml
  • сгенерировать ключевую пару при помощи команд

    openssl genrsa -out key.pem 2048 
    openssl pkcs8 -topk8 -inform PEM -outform PEM -in key.pem -out private.pem -nocrypt
    openssl rsa -in key.pem -pubout -outform PEM -out public.pem 
    rm -f key.pem
  • находясь в Application Console, развернуть приложение из шаблона, указав следующие параметры:
    • Name of service - имя приложения в Openshift
    • Image Name - имя образа или путь к нему
    • Database connection string: строка подключения к серверу MySQL в формате jdbc:mysql://[mysql_host][/database][?properties]
    • Database login: логин для подключения к БД
    • Database password: пароль для подключения к БД
    • private.pem: содержимое сгенерированного на предыдущем шаге закрытого ключа
    • public.pem: содержимое сгенерированного на предыдущем шаге открытого ключа

  • проверить работу сервиса в соответствии с его документацией


eltex-doors-template.yaml
kind: Template
apiVersion: v1
metadata:
  name: eltex-doors-template
  annotations:
    description: "Eltex-doors application template"
    openshift.io/display-name: "The Eltex DOORS"
    openshift.io/provider-display-name: "Eltex"
    iconClass: "icon-openjdk"
objects:
  - apiVersion: v1
    kind: Secret
    metadata:
      name: ${INSTANCE_NAME}-secret
    stringData:
      private.pem: ${PRIVATE_DATA}
      public.pem: ${PUBLIC_DATA}
    type: Opaque
  - apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ${INSTANCE_NAME}-config
    data:
      application.properties: |-
        spring.application.name=eltex_doors
        spring.datasource.url=${DB_URL}
        spring.datasource.username=${DB_LOGIN}
        spring.datasource.password=${DB_PASS}
        spring.flyway.url=${DB_URL}
        spring.flyway.user=${DB_LOGIN}
        spring.flyway.password=${DB_PASS}
        server.port=9097
        auth.cron.session.timeout=*/60 * * * * *
        auth.username=user
        auth.password=password
        auth.private.key=/etc/eltex-doors/keys/private.pem
        auth.public.key=/etc/eltex-doors/keys/public.pem
        auth.token.access.lifetime=00:15:00
        auth.token.refresh.lifetime=720:00:00
      log4j2.xml: |-
        <?xml version="1.0" encoding="UTF-8"?> 
        <Configuration>
          <Properties>
              <Property name="defaultPattern" value="%d{ISO8601} [%t] %-5p %logger{1} %C{1}.%M(line:%L). %m%n"/>
          </Properties>
          <Appenders>
              <Console name="STDOUT" target="SYSTEM_OUT">
                  <PatternLayout>
                      <Pattern>${defaultPattern}</Pattern>
                  </PatternLayout>
              </Console>
          </Appenders>
          <Loggers>
              <Root level="info">
                  <AppenderRef ref="STDOUT"/>
              </Root>
          </Loggers>
        </Configuration>
  - apiVersion: "apps.openshift.io/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} 
              imagePullPolicy: Always
              volumeMounts:
                - name: config-volume
                  mountPath: /etc/eltex-doors/application.properties
                  subPath: application.properties
                - name: config-volume
                  mountPath: /etc/eltex-doors/log4j2.xml
                  subPath: log4j2.xml
                - name: secret-volume
                  mountPath: /etc/eltex-doors/keys
              livenessProbe:
                httpGet:
                  path: /actuator/health
                  port: 9097
                  scheme: HTTP
                initialDelaySeconds: 30
          volumes:
            - name: config-volume
              configMap:
                name: ${INSTANCE_NAME}-config
                items:
                - key: application.properties
                  path: application.properties
                - key: log4j2.xml  
                  path: log4j2.xml
            - name: secret-volume
              secret:
                secretName: ${INSTANCE_NAME}-secret
      triggers:
        - type: "ConfigChange"  
  - apiVersion: v1
    kind: Service
    metadata:
      name: ${INSTANCE_NAME}-service
    spec:
      ports:
        - port: 9097
          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-doors
  - name: IMAGE_NAME
    displayName: Image name
    description: Image name or pull spec
    required: true
    value: hub.eltex-co.ru/softwlc/eltex-doors:latest
  - name: DB_URL
    displayName: Database connection string
    description: Database for eltex-doors
    required: true
    value: jdbc:mysql://lab3.eltex.loc:3306/eltex_doors?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: PRIVATE_DATA
    displayName: private.pem
    description: Contents of private.pem
    required: true
  - name: PUBLIC_DATA
    displayName: public.pem
    description: Contents of public.pem
    required: true
message: "... The Eltex Doors with name ${INSTANCE_NAME} is starting ..." 
  


  • Нет меток