Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save jasonmimick/4c5ba0dc177cfda5d036239168fca2bd to your computer and use it in GitHub Desktop.
Save jasonmimick/4c5ba0dc177cfda5d036239168fca2bd to your computer and use it in GitHub Desktop.
apiVersion: v1
kind: Template
labels:
template: mongodb-openshift-dev-preview-template
message: |-
This is the MongoDB Enterprise Openshift Developer Preview.
Sweet!
metadata:
annotations:
description: |-
Provisions MongoDB replica set and agent-only pods which are managed by MongoDB Ops Manager.
NOTE: Sharded clusters are not supported yet. Security is not automatically enabled.
iconClass: icon-mongodb
openshift.io/display-name: MongoDB Enterprise
openshift.io/documentation-url: https://docs.openshift.org/latest/using_images/db_images/mongodb.html
openshift.io/long-description: This template provisions a MongoDB replica
set which is managed by an instance of MongoDB Ops Manager.
openshift.io/provider-display-name: MongoDB, Inc.
openshift.io/support-url: https://access.redhat.com
tags: database,mongodb
creationTimestamp: 2018-03-28T13:46:42Z
name: mongodb-openshift-dev-preview
namespace: openshift
resourceVersion: "332"
selfLink: /oapi/v1/namespaces/openshift/templates/mongodb-openshift-dev-preview
objects:
- apiVersion: v1
kind: Secret
metadata:
name: ${CLUSTER_NAME}-secret
annotations:
template.openshift.io/expose-group-id: '{.data[''MMS_GROUP_ID'']}'
template.openshift.io/expose-agent-apikey: '{.data[''MMS_AGENT_APIKEY'']}'
template.openshift.io/expose-base-url: '{.data[''MMS_BASE_URL'']}'
namespace: ${NAMESPACE}
type: Opaque
state: present
string_data:
agent-apikey: ${MMS_AGENT_APIKEY}
group-id: ${MMS_GROUP_ID}
base-url: ${MMS_BASE_URL}
- apiVersion: v1
kind: Service
metadata:
name: mongodb-${MMS_PROJECT_NAME}-${CLUSTER_NAME}
labels:
name: mongodb-${MMS_PROJECT_NAME}-${CLUSTER_NAME}
replSet: ${CLUSTER_NAME}
spec:
selector:
app: mongodb-${MMS_PROJECT_NAME}-${CLUSTER_NAME}
ports:
- port: ${MONGODB_PORT}
name: mongodb-${MMS_PROJECT_NAME}-${CLUSTER_NAME}
clusterIp: None
- apiVersion: "apps/v1beta1"
kind: StatefulSet
metadata:
name: mongodb-${MMS_PROJECT_NAME}-${CLUSTER_NAME}
namespace: ${NAMESPACE}
spec:
serviceName: mongodb-${MMS_PROJECT_NAME}-${CLUSTER_NAME}
replicas: "${NUMBER_REPLICAS}"
template:
metadata:
labels:
app: mongodb-${MMS_PROJECT_NAME}-${CLUSTER_NAME}
spec:
terminationGracePeriodSeconds: 10
containers:
- name: mongodb-${MMS_PROJECT_NAME}-${CLUSTER_NAME}
image: centos
env:
- name: MMS_BASE_URL_INTERNAL
valueFrom:
secretKeyRef:
name: ${CLUSTER_NAME}-secret
key: base-url
- name: MMS_AGENT_APIKEY
valueFrom:
secretKeyRef:
name: ${CLUSTER_NAME}-secret
key: agent-apikey
- name: MMS_GROUP_ID
valueFrom:
secretKeyRef:
name: ${CLUSTER_NAME}-secret
key: group-id
- name: MMS_BOOTSTRAP_URL
value: "https://raw.githubusercontent.com/jasonmimick/mongodb-openshift-dev-preview/master/install-automation-agent.sh"
command: [ "/bin/sh", "-c" ]
args: [ "cd /tmp && curl -OL $(MMS_BOOTSTRAP_URL) && chmod +x install-automation-agent.sh && ./install-automation-agent.sh" ]
ports:
volumeMounts:
- name: "pvc"
mountPath: /data
volumeClaimTemplates:
- name: "pvc"
metadata:
name: "pvc"
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: ${DISK_SIZE_GB}Gi
parameters:
- description: Maximum amount of memory the container can use.
displayName: Memory Limit
name: MEMORY_LIMIT
required: true
value: 512Mi
- description: URL for MongoDB Ops Manager
name: MMS_BASE_URL
displayName: Ops Manager URL
required: true
value: "http://jasonsmacbook55.lan:8080"
- description: MongoDB Ops Manager User
name: MMS_USER
displayName: Ops Manager user
required: true
value: jason.mimick@mongodb.com
- description: MongoDB Ops Manager API key for user
name: MMS_USER_APIKEY
displayName: User"s Ops Manager API key
required: true
value: "01804670-3aa4-4e61-a978-0f3b427e3ed4"
- description: Name for Ops Manager Project
name: MMS_PROJECT_NAME
displayName: Project to create replica set in
required: true
from: user[A-Z0-9]{3}
generate: expression
- description: Ops Manager Organization ID
name: MMS_DEFAULT_ORGID
displayName: Organization for new project
required: true
value: "5aafd7af6cef470b4fa811a2"
- description: API Timeout
name: MMS_API_TIMEOUT
displayName: MongoDB Ops Manager API Timeout in seconds
required: true
value: "30"
- description: Cluster Name
name: CLUSTER_NAME
displayName: MongoDB Cluster Name
required: true
from: user[A-Z0-9]{3}
generate: expression
- description: Version of MongoDB to deploy
name: MONGODB_VERSION
displayName: MongoDB Version
required: true
value: "3.4.13"
- description: Path for MongoDB data files in container
name: MONGODB_DBPATH
displayName: Path for data files
required: true
value: "/data"
- description: Log file destination
name: MONGODB_LOGPATH
displayName: Full path and name of database logfile
required: true
value: "/data/mongodb.log"
- description: MongoDB port
name: MONGODB_PORT
required: true
displayName: Port for MongoDB to listen on
value: "27000"
- description: Size of disk
name: DISK_SIZE_GB
displayName: Size in Gb for persistent storage claim on data node
required: true
value: "5"
- description: Number of members in replica set
name: NUMBER_PODS_RS
displayName: Number of nodes in Replica Set
required: true
value: "3"
- description: Name for secret to store meta data
name: CLUSTER_SECRET
displayName: k8s secret name
required: true
value: ${CLUSTER_NAME}-secret
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment