---
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 platform
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 : https://${FQDN}/
- 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 : "openshift"
lastTriggeredImage : ''
type : ImageChange
- type : ConfigChange
status : {}
- apiVersion : route.openshift.io/v1
kind : Route
metadata :
labels :
app : wekan
service : wekan
template : wekan-mongodb-persistent-template
name : wekan
namespace : ${NAMESPACE}
spec :
host : ${FQDN}
port :
targetPort : wekan
tls :
termination : edge
to :
kind : Service
name : wekan
weight : 100
wildcardPolicy : None
status :
ingress :
- conditions :
- lastTransitionTime : '2018-08-28T14:45:21Z'
status : 'True'
type : Admitted
host : ${FQDN}
routerName : router
wildcardPolicy : None
parameters :
- description : The Fully Qualified Hostname (FQDN) of the application
displayName : FQDN
name : FQDN
required : true
- 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
- 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