donal
2018-04-25 a47792c5377f25dcdaf5fe6e9a67f4fa68853928
ADD - mongodb template for ci
2 files added
213 ■■■■■ changed files
params/mongodb 2 ●●●●● patch | view | raw | blame | history
templates/mongodb.yml 211 ●●●●● patch | view | raw | blame | history
params/mongodb
New file
@@ -0,0 +1,2 @@
VOLUME_CAPACITY=1Gi
MONGODB_DATABASE=todolist
templates/mongodb.yml
New file
@@ -0,0 +1,211 @@
---
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