diff options
author | Lauri Ojansivu <x@xet7.org> | 2018-07-13 01:59:12 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-13 01:59:12 +0300 |
commit | 5f345e851ac341f9b462bed1794fa551eabf64f4 (patch) | |
tree | 575b282d882349a3db3220614ecfde59fb3d5e42 | |
parent | 90707aaab32ecd5993e28c9705dd3d8678d44599 (diff) | |
parent | 687c7923e7d5963f294ce0c3173790ac96e64fbd (diff) | |
download | wekan-5f345e851ac341f9b462bed1794fa551eabf64f4.tar.gz wekan-5f345e851ac341f9b462bed1794fa551eabf64f4.tar.bz2 wekan-5f345e851ac341f9b462bed1794fa551eabf64f4.zip |
Merge pull request #1765 from adyachok/devel
Wekan integration with OpenShift
-rw-r--r-- | wekan-openshift/README.md | 19 | ||||
-rw-r--r-- | wekan-openshift/wekan.yml | 341 |
2 files changed, 360 insertions, 0 deletions
diff --git a/wekan-openshift/README.md b/wekan-openshift/README.md new file mode 100644 index 00000000..4be97048 --- /dev/null +++ b/wekan-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/wekan-openshift/wekan.yml b/wekan-openshift/wekan.yml new file mode 100644 index 00000000..34a67271 --- /dev/null +++ b/wekan-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 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 + |