--- 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: "${NAMESPACE}" 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: wekan-labs-ci-cd.apps.d1.casl.rht-labs.com 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 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