|
@@ -0,0 +1,341 @@
|
|
|
+---
|
|
|
+apiVersion: v1
|
|
|
+kind: Template
|
|
|
+labels:
|
|
|
+ template: wekan-mongodb-persistent-template
|
|
|
+message: |-
|
|
|
+ The following service(s) have been created in your project: ${WEKAN_SERVICE_NAME}.
|
|
|
+metadata:
|
|
|
+ annotations:
|
|
|
+ description: |-
|
|
|
+ This template provides a WeKan instance backed by a standalone MongoDB
|
|
|
+ server. The database is stored on persistent storage.
|
|
|
+ iconClass: pficon-trend-up
|
|
|
+ openshift.io/display-name: WEKAN backed by MongoDB
|
|
|
+ openshift.io/documentation-url: https://wekan.github.io/
|
|
|
+ openshift.io/long-description: This template provides a WeKan platphorm
|
|
|
+ with a MongoDB database created. The database is stored on persistent storage. The
|
|
|
+ database name, username, and password are chosen via parameters when provisioning
|
|
|
+ this service.
|
|
|
+ tags: wekan,kanban,mongodb
|
|
|
+ name: wekan-mongodb-persistent
|
|
|
+objects:
|
|
|
+- apiVersion: v1
|
|
|
+ kind: ServiceAccount
|
|
|
+ metadata:
|
|
|
+ name: ${WEKAN_SERVICE_NAME}
|
|
|
+ labels:
|
|
|
+ app: wekan
|
|
|
+ service: ${WEKAN_SERVICE_NAME}
|
|
|
+- apiVersion: v1
|
|
|
+ kind: Secret
|
|
|
+ metadata:
|
|
|
+ annotations:
|
|
|
+ template.openshift.io/expose-admin_password: "{.data['database-admin-password']}"
|
|
|
+ template.openshift.io/expose-database_name: "{.data['database-name']}"
|
|
|
+ template.openshift.io/expose-password: "{.data['database-password']}"
|
|
|
+ template.openshift.io/expose-username: "{.data['database-user']}"
|
|
|
+ name: "${DATABASE_SERVICE_NAME}"
|
|
|
+ labels:
|
|
|
+ app: wekan
|
|
|
+ service: ${WEKAN_SERVICE_NAME}
|
|
|
+ stringData:
|
|
|
+ database-admin-password: "${MONGODB_ADMIN_PASSWORD}"
|
|
|
+ database-name: "${MONGODB_DATABASE}"
|
|
|
+ database-password: "${MONGODB_PASSWORD}"
|
|
|
+ database-user: "${MONGODB_USER}"
|
|
|
+- apiVersion: v1
|
|
|
+ kind: Service
|
|
|
+ metadata:
|
|
|
+ annotations:
|
|
|
+ template.openshift.io/expose-uri: http://{.spec.clusterIP}:{.spec.ports[?(.name=="wekan")].port}
|
|
|
+ name: "${WEKAN_SERVICE_NAME}"
|
|
|
+ labels:
|
|
|
+ app: wekan
|
|
|
+ service: ${WEKAN_SERVICE_NAME}
|
|
|
+ spec:
|
|
|
+ ports:
|
|
|
+ - name: wekan
|
|
|
+ nodePort: 0
|
|
|
+ port: 8080
|
|
|
+ protocol: TCP
|
|
|
+ targetPort: 8080
|
|
|
+ selector:
|
|
|
+ name: "${WEKAN_SERVICE_NAME}"
|
|
|
+ sessionAffinity: None
|
|
|
+ type: ClusterIP
|
|
|
+ status:
|
|
|
+ loadBalancer: {}
|
|
|
+- apiVersion: v1
|
|
|
+ kind: Service
|
|
|
+ metadata:
|
|
|
+ annotations:
|
|
|
+ template.openshift.io/expose-uri: mongodb://{.spec.clusterIP}:{.spec.ports[?(.name=="mongo")].port}
|
|
|
+ name: "${DATABASE_SERVICE_NAME}"
|
|
|
+ labels:
|
|
|
+ app: wekan
|
|
|
+ service: ${WEKAN_SERVICE_NAME}
|
|
|
+ spec:
|
|
|
+ ports:
|
|
|
+ - name: mongo
|
|
|
+ nodePort: 0
|
|
|
+ port: 27017
|
|
|
+ protocol: TCP
|
|
|
+ targetPort: 27017
|
|
|
+ selector:
|
|
|
+ name: "${DATABASE_SERVICE_NAME}"
|
|
|
+ sessionAffinity: None
|
|
|
+ type: ClusterIP
|
|
|
+ status:
|
|
|
+ loadBalancer: {}
|
|
|
+- apiVersion: v1
|
|
|
+ kind: PersistentVolumeClaim
|
|
|
+ metadata:
|
|
|
+ name: "${DATABASE_SERVICE_NAME}"
|
|
|
+ labels:
|
|
|
+ app: wekan
|
|
|
+ service: ${WEKAN_SERVICE_NAME}
|
|
|
+ spec:
|
|
|
+ accessModes:
|
|
|
+ - ReadWriteOnce
|
|
|
+ resources:
|
|
|
+ requests:
|
|
|
+ storage: "${VOLUME_CAPACITY}"
|
|
|
+- apiVersion: image.openshift.io/v1
|
|
|
+ kind: ImageStream
|
|
|
+ metadata:
|
|
|
+ labels:
|
|
|
+ app: wekan
|
|
|
+ name: ${WEKAN_SERVICE_NAME}
|
|
|
+ spec:
|
|
|
+ tags:
|
|
|
+ - from:
|
|
|
+ kind: DockerImage
|
|
|
+ name: ${WEKAN_IMAGE}
|
|
|
+ generation: 2
|
|
|
+ name: latest
|
|
|
+ referencePolicy:
|
|
|
+ type: Source
|
|
|
+- apiVersion: v1
|
|
|
+ kind: DeploymentConfig
|
|
|
+ metadata:
|
|
|
+ name: ${WEKAN_SERVICE_NAME}
|
|
|
+ labels:
|
|
|
+ app: wekan
|
|
|
+ service: ${WEKAN_SERVICE_NAME}
|
|
|
+ spec:
|
|
|
+ replicas: 1
|
|
|
+ selector:
|
|
|
+ app: wekan
|
|
|
+ deploymentconfig: ${WEKAN_SERVICE_NAME}
|
|
|
+ strategy:
|
|
|
+ type: Recreate
|
|
|
+ template:
|
|
|
+ metadata:
|
|
|
+ labels:
|
|
|
+ app: wekan
|
|
|
+ service: ${WEKAN_SERVICE_NAME}
|
|
|
+ deploymentconfig: ${WEKAN_SERVICE_NAME}
|
|
|
+ template: wekan
|
|
|
+ name: ${WEKAN_SERVICE_NAME}
|
|
|
+ spec:
|
|
|
+ containers:
|
|
|
+ - name: ${WEKAN_SERVICE_NAME}
|
|
|
+ image: ${WEKAN_IMAGE}
|
|
|
+ imagePullPolicy: Always
|
|
|
+ env:
|
|
|
+ - name: MONGO_URL
|
|
|
+ value: mongodb://${MONGODB_USER}:${MONGODB_PASSWORD}@${DATABASE_SERVICE_NAME}:27017/${MONGODB_DATABASE}
|
|
|
+ - name: ROOT_URL
|
|
|
+ value: http://localhost
|
|
|
+ - name: PORT
|
|
|
+ value: "8080"
|
|
|
+ ports:
|
|
|
+ - containerPort: 8080
|
|
|
+ name: ${WEKAN_SERVICE_NAME}
|
|
|
+ protocol: TCP
|
|
|
+ terminationMessagePath: /dev/termination-log
|
|
|
+ livenessProbe:
|
|
|
+ failureThreshold: 30
|
|
|
+ httpGet:
|
|
|
+ path: /
|
|
|
+ port: 8080
|
|
|
+ initialDelaySeconds: 240
|
|
|
+ timeoutSeconds: 3
|
|
|
+ readinessProbe:
|
|
|
+ httpGet:
|
|
|
+ path: /
|
|
|
+ port: 8080
|
|
|
+ initialDelaySeconds: 3
|
|
|
+ timeoutSeconds: 3
|
|
|
+ dnsPolicy: ClusterFirst
|
|
|
+ restartPolicy: Always
|
|
|
+ serviceAccount: ${WEKAN_SERVICE_NAME}
|
|
|
+ serviceAccountName: ${WEKAN_SERVICE_NAME}
|
|
|
+ terminationGracePeriodSeconds: 30
|
|
|
+ triggers:
|
|
|
+ - type: ConfigChange
|
|
|
+ - type: ImageChange
|
|
|
+ imageChangeParams:
|
|
|
+ automatic: true
|
|
|
+ containerNames:
|
|
|
+ - ${WEKAN_SERVICE_NAME}
|
|
|
+ from:
|
|
|
+ kind: ImageStreamTag
|
|
|
+ name: ${WEKAN_SERVICE_NAME}:latest
|
|
|
+ lastTriggeredImage: ""
|
|
|
+- apiVersion: v1
|
|
|
+ kind: DeploymentConfig
|
|
|
+ metadata:
|
|
|
+ annotations:
|
|
|
+ template.alpha.openshift.io/wait-for-ready: 'true'
|
|
|
+ name: "${DATABASE_SERVICE_NAME}"
|
|
|
+ labels:
|
|
|
+ app: wekan
|
|
|
+ service: ${WEKAN_SERVICE_NAME}
|
|
|
+ spec:
|
|
|
+ replicas: 1
|
|
|
+ selector:
|
|
|
+ name: "${DATABASE_SERVICE_NAME}"
|
|
|
+ strategy:
|
|
|
+ type: Recreate
|
|
|
+ template:
|
|
|
+ metadata:
|
|
|
+ labels:
|
|
|
+ name: "${DATABASE_SERVICE_NAME}"
|
|
|
+ spec:
|
|
|
+ containers:
|
|
|
+ - capabilities: {}
|
|
|
+ env:
|
|
|
+ - name: MONGODB_USER
|
|
|
+ valueFrom:
|
|
|
+ secretKeyRef:
|
|
|
+ key: database-user
|
|
|
+ name: "${DATABASE_SERVICE_NAME}"
|
|
|
+ - name: MONGODB_PASSWORD
|
|
|
+ valueFrom:
|
|
|
+ secretKeyRef:
|
|
|
+ key: database-password
|
|
|
+ name: "${DATABASE_SERVICE_NAME}"
|
|
|
+ - name: MONGODB_ADMIN_PASSWORD
|
|
|
+ valueFrom:
|
|
|
+ secretKeyRef:
|
|
|
+ key: database-admin-password
|
|
|
+ name: "${DATABASE_SERVICE_NAME}"
|
|
|
+ - name: MONGODB_DATABASE
|
|
|
+ valueFrom:
|
|
|
+ secretKeyRef:
|
|
|
+ key: database-name
|
|
|
+ name: "${DATABASE_SERVICE_NAME}"
|
|
|
+ image: " "
|
|
|
+ imagePullPolicy: IfNotPresent
|
|
|
+ livenessProbe:
|
|
|
+ initialDelaySeconds: 30
|
|
|
+ tcpSocket:
|
|
|
+ port: 27017
|
|
|
+ timeoutSeconds: 1
|
|
|
+ name: mongodb
|
|
|
+ ports:
|
|
|
+ - containerPort: 27017
|
|
|
+ protocol: TCP
|
|
|
+ readinessProbe:
|
|
|
+ exec:
|
|
|
+ command:
|
|
|
+ - "/bin/sh"
|
|
|
+ - "-i"
|
|
|
+ - "-c"
|
|
|
+ - mongo 127.0.0.1:27017/$MONGODB_DATABASE -u $MONGODB_USER -p $MONGODB_PASSWORD
|
|
|
+ --eval="quit()"
|
|
|
+ initialDelaySeconds: 3
|
|
|
+ timeoutSeconds: 1
|
|
|
+ resources:
|
|
|
+ limits:
|
|
|
+ memory: "${MEMORY_LIMIT}"
|
|
|
+ securityContext:
|
|
|
+ capabilities: {}
|
|
|
+ privileged: false
|
|
|
+ terminationMessagePath: "/dev/termination-log"
|
|
|
+ volumeMounts:
|
|
|
+ - mountPath: "/var/lib/mongodb/data"
|
|
|
+ name: "${DATABASE_SERVICE_NAME}-data"
|
|
|
+ dnsPolicy: ClusterFirst
|
|
|
+ restartPolicy: Always
|
|
|
+ volumes:
|
|
|
+ - name: "${DATABASE_SERVICE_NAME}-data"
|
|
|
+ persistentVolumeClaim:
|
|
|
+ claimName: "${DATABASE_SERVICE_NAME}"
|
|
|
+ triggers:
|
|
|
+ - imageChangeParams:
|
|
|
+ automatic: true
|
|
|
+ containerNames:
|
|
|
+ - mongodb
|
|
|
+ from:
|
|
|
+ kind: ImageStreamTag
|
|
|
+ name: mongodb:${MONGODB_VERSION}
|
|
|
+ namespace: "${NAMESPACE}"
|
|
|
+ lastTriggeredImage: ''
|
|
|
+ type: ImageChange
|
|
|
+ - type: ConfigChange
|
|
|
+ status: {}
|
|
|
+parameters:
|
|
|
+- description: Maximum amount of memory the container can use.
|
|
|
+ displayName: Memory Limit
|
|
|
+ name: MEMORY_LIMIT
|
|
|
+ required: true
|
|
|
+ value: 512Mi
|
|
|
+- description: The OpenShift Namespace where the ImageStream resides.
|
|
|
+ displayName: Namespace
|
|
|
+ name: NAMESPACE
|
|
|
+ value: openshift
|
|
|
+- description: The name of the OpenShift Service exposed for the database.
|
|
|
+ displayName: Database Service Name
|
|
|
+ name: DATABASE_SERVICE_NAME
|
|
|
+ required: true
|
|
|
+ value: mongodb
|
|
|
+- description: Username for MongoDB user that will be used for accessing the database.
|
|
|
+ displayName: MongoDB Connection Username
|
|
|
+ from: user[A-Z0-9]{3}
|
|
|
+ generate: expression
|
|
|
+ name: MONGODB_USER
|
|
|
+ required: true
|
|
|
+- description: Password for the MongoDB connection user.
|
|
|
+ displayName: MongoDB Connection Password
|
|
|
+ from: "[a-zA-Z0-9]{16}"
|
|
|
+ generate: expression
|
|
|
+ name: MONGODB_PASSWORD
|
|
|
+ required: true
|
|
|
+- description: Name of the MongoDB database accessed.
|
|
|
+ displayName: MongoDB Database Name
|
|
|
+ name: MONGODB_DATABASE
|
|
|
+ required: true
|
|
|
+ value: wekan
|
|
|
+- description: Password for the database admin user.
|
|
|
+ displayName: MongoDB Admin Password
|
|
|
+ from: "[a-zA-Z0-9]{16}"
|
|
|
+ generate: expression
|
|
|
+ name: MONGODB_ADMIN_PASSWORD
|
|
|
+ required: true
|
|
|
+- description: Volume space available for data, e.g. 512Mi, 2Gi.
|
|
|
+ displayName: Volume Capacity
|
|
|
+ name: VOLUME_CAPACITY
|
|
|
+ required: true
|
|
|
+ value: 1Gi
|
|
|
+- description: Version of MongoDB image to be used (2.4, 2.6, 3.2 or latest).
|
|
|
+ displayName: Version of MongoDB Image
|
|
|
+ name: MONGODB_VERSION
|
|
|
+ required: true
|
|
|
+ value: '3.2'
|
|
|
+- name: WEKAN_SERVICE_NAME
|
|
|
+ displayName: WeKan Service Name
|
|
|
+ value: wekan
|
|
|
+ required: true
|
|
|
+- name: WEKAN_IMAGE
|
|
|
+ displayName: WeKan Docker Image
|
|
|
+ value: quay.io/wekan/wekan:latest
|
|
|
+ description: The metabase docker image to use
|
|
|
+ required: true
|
|
|
+- name: WEKAN_SERVICE_NAME
|
|
|
+ displayName: WeKan Service Name
|
|
|
+ value: wekan
|
|
|
+ required: true
|
|
|
+
|