summaryrefslogtreecommitdiffstats
path: root/openshift
diff options
context:
space:
mode:
authorLauri Ojansivu <x@xet7.org>2018-07-13 02:34:55 +0300
committerLauri Ojansivu <x@xet7.org>2018-07-13 02:34:55 +0300
commit9487406fc3768acd313b0dcfce5b50f7d5f495e1 (patch)
tree1b46e66a7cd8ac4e8de0587d4db83ecf407dff12 /openshift
parentbf35b09998200ecfa39ca89f42399936909ca731 (diff)
downloadwekan-9487406fc3768acd313b0dcfce5b50f7d5f495e1.tar.gz
wekan-9487406fc3768acd313b0dcfce5b50f7d5f495e1.tar.bz2
wekan-9487406fc3768acd313b0dcfce5b50f7d5f495e1.zip
Fix typos.
Diffstat (limited to 'openshift')
-rw-r--r--openshift/README.md19
-rw-r--r--openshift/wekan.yml341
2 files changed, 360 insertions, 0 deletions
diff --git a/openshift/README.md b/openshift/README.md
new file mode 100644
index 00000000..a97657f3
--- /dev/null
+++ b/openshift/README.md
@@ -0,0 +1,19 @@
+# Wekan on OpenShift
+
+OpenShift Template for Wekan backed by MongoDB
+
+#### Create Template
+```sh
+oc create -f wekan.yml
+```
+
+#### Delete Instance Resources
+Clean up all resources created. Note label filters assume single instance of template deployed in the current namespace.
+
+```sh
+oc delete all -l app=wekan
+oc delete pods -l app=wekan
+oc delete persistentvolumeclaim -l app=wekan
+oc delete serviceaccount -l app=wekan
+oc delete secret -l app=wekan
+```
diff --git a/openshift/wekan.yml b/openshift/wekan.yml
new file mode 100644
index 00000000..dd23f6ea
--- /dev/null
+++ b/openshift/wekan.yml
@@ -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 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: 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
+