Представленный шаблон позволяет развернуть сервис eltex-doors в кластере OpenShift.
Подготовка к установке:
Порядок установки:
применить шаблон при помощи команды
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 |


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 ..."
|