--- kind: Template apiVersion: v1 metadata: name: mongodb-persistent annotations: openshift.io/display-name: MongoDB description: |- MongoDB database service, with persistent storage. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/mongodb-container/blob/master/3.2/README.md. NOTE: Scaling to more than one replica is not supported. You must have persistent volumes available in your cluster to use this template. iconClass: icon-mongodb tags: database,mongodb openshift.io/long-description: This template provides a standalone MongoDB server with a database created. The database is stored on persistent storage. The database name, username, and password are chosen via parameters when provisioning this service. openshift.io/provider-display-name: Red Hat, Inc. openshift.io/documentation-url: https://docs.openshift.org/latest/using_images/db_images/mongodb.html openshift.io/support-url: https://access.redhat.com message: |- The following service(s) have been created in your project: ${DATABASE_SERVICE_NAME}. Username: ${MONGODB_USER} Password: ${MONGODB_PASSWORD} Database Name: ${MONGODB_DATABASE} Connection URL: mongodb://${MONGODB_USER}:${MONGODB_PASSWORD}@${DATABASE_SERVICE_NAME}/${MONGODB_DATABASE} For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/mongodb-container/blob/master/3.2/README.md. labels: template: mongodb-persistent-template objects: - kind: Secret apiVersion: v1 metadata: name: "${DATABASE_SERVICE_NAME}" annotations: template.openshift.io/expose-username: "{.data['database-user']}" template.openshift.io/expose-password: "{.data['database-password']}" template.openshift.io/expose-admin_password: "{.data['database-admin-password']}" template.openshift.io/expose-database_name: "{.data['database-name']}" stringData: database-user: "${MONGODB_USER}" database-password: "${MONGODB_PASSWORD}" database-admin-password: "${MONGODB_ADMIN_PASSWORD}" database-name: "${MONGODB_DATABASE}" - kind: Service apiVersion: v1 metadata: name: "${DATABASE_SERVICE_NAME}" annotations: template.openshift.io/expose-uri: mongodb://{.spec.clusterIP}:{.spec.ports[?(.name=="mongo")].port} spec: ports: - name: mongo protocol: TCP port: 27017 targetPort: 27017 nodePort: 0 selector: name: "${DATABASE_SERVICE_NAME}" type: ClusterIP sessionAffinity: None status: loadBalancer: {} - kind: PersistentVolumeClaim apiVersion: v1 metadata: name: "${DATABASE_SERVICE_NAME}" spec: accessModes: - ReadWriteOnce resources: requests: storage: "${VOLUME_CAPACITY}" - kind: DeploymentConfig apiVersion: v1 metadata: name: "${DATABASE_SERVICE_NAME}" annotations: template.alpha.openshift.io/wait-for-ready: 'true' spec: strategy: type: Recreate triggers: - type: ImageChange imageChangeParams: automatic: true containerNames: - mongodb from: kind: ImageStreamTag name: mongodb:${MONGODB_VERSION} namespace: "${NAMESPACE}" lastTriggeredImage: '' - type: ConfigChange replicas: 1 selector: name: "${DATABASE_SERVICE_NAME}" template: metadata: labels: name: "${DATABASE_SERVICE_NAME}" spec: containers: - name: mongodb image: " " ports: - containerPort: 27017 protocol: TCP readinessProbe: timeoutSeconds: 1 initialDelaySeconds: 3 exec: command: - "/bin/sh" - "-i" - "-c" - mongo 127.0.0.1:27017/$MONGODB_DATABASE -u $MONGODB_USER -p $MONGODB_PASSWORD --eval="quit()" livenessProbe: timeoutSeconds: 1 initialDelaySeconds: 30 tcpSocket: port: 27017 env: - name: MONGODB_USER valueFrom: secretKeyRef: name: "${DATABASE_SERVICE_NAME}" key: database-user - name: MONGODB_PASSWORD valueFrom: secretKeyRef: name: "${DATABASE_SERVICE_NAME}" key: database-password - name: MONGODB_ADMIN_PASSWORD valueFrom: secretKeyRef: name: "${DATABASE_SERVICE_NAME}" key: database-admin-password - name: MONGODB_DATABASE valueFrom: secretKeyRef: name: "${DATABASE_SERVICE_NAME}" key: database-name resources: limits: memory: "${MEMORY_LIMIT}" volumeMounts: - name: "${DATABASE_SERVICE_NAME}-data" mountPath: "/var/lib/mongodb/data" terminationMessagePath: "/dev/termination-log" imagePullPolicy: IfNotPresent capabilities: {} securityContext: capabilities: {} privileged: false volumes: - name: "${DATABASE_SERVICE_NAME}-data" persistentVolumeClaim: claimName: "${DATABASE_SERVICE_NAME}" restartPolicy: Always dnsPolicy: ClusterFirst status: {} parameters: - name: MEMORY_LIMIT displayName: Memory Limit description: Maximum amount of memory the container can use. value: 512Mi required: true - name: NAMESPACE displayName: Namespace description: The OpenShift Namespace where the ImageStream resides. value: openshift - name: DATABASE_SERVICE_NAME displayName: Database Service Name description: The name of the OpenShift Service exposed for the database. value: mongodb required: true - name: MONGODB_USER displayName: MongoDB Connection Username description: Username for MongoDB user that will be used for accessing the database. value: username required: true - name: MONGODB_PASSWORD displayName: MongoDB Connection Password description: Password for the MongoDB connection user. value: password required: true - name: MONGODB_DATABASE displayName: MongoDB Database Name description: Name of the MongoDB database accessed. value: sampledb required: true - name: MONGODB_ADMIN_PASSWORD displayName: MongoDB Admin Password description: Password for the database admin user. generate: expression from: "[a-zA-Z0-9]{16}" required: true - name: VOLUME_CAPACITY displayName: Volume Capacity description: Volume space available for data, e.g. 512Mi, 2Gi. value: 1Gi required: true - name: MONGODB_VERSION displayName: Version of MongoDB Image description: Version of MongoDB image to be used (2.4, 2.6, 3.2 or latest). value: '3.2' required: true