Представленный шаблон позволяет развернуть сервис 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 ..."