Created
December 11, 2019 19:45
-
-
Save jaredhocutt/1e28fe1d4e8e0da2330138b5967544ca to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "kind": "Template", | |
| "apiVersion": "v1", | |
| "metadata": { | |
| "name": "nodejs-mongodb-example", | |
| "annotations": { | |
| "openshift.io/display-name": "Node.js + MongoDB (Ephemeral)", | |
| "description": "An example Node.js application with a MongoDB database. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/nodejs-ex/blob/master/README.md.\n\nWARNING: Any data stored will be lost upon pod destruction. Only use this template for testing.", | |
| "tags": "quickstart,nodejs", | |
| "iconClass": "icon-nodejs", | |
| "openshift.io/long-description": "This template defines resources needed to develop a NodeJS application, including a build configuration, application deployment configuration, and database deployment configuration. The database is stored in non-persistent storage, so this configuration should be used for experimental purposes only.", | |
| "openshift.io/provider-display-name": "Red Hat, Inc.", | |
| "openshift.io/documentation-url": "https://github.com/sclorg/nodejs-ex", | |
| "openshift.io/support-url": "https://access.redhat.com", | |
| "template.openshift.io/bindable": "false" | |
| } | |
| }, | |
| "message": "The following service(s) have been created in your project: ${NAME}, ${DATABASE_SERVICE_NAME}.\n\nFor more information about using this template, including OpenShift considerations, see https://github.com/sclorg/nodejs-ex/blob/master/README.md.", | |
| "labels": { | |
| "template": "nodejs-mongodb-example", | |
| "app": "nodejs-mongodb-example" | |
| }, | |
| "objects": [ | |
| { | |
| "kind": "Secret", | |
| "apiVersion": "v1", | |
| "metadata": { | |
| "name": "${NAME}" | |
| }, | |
| "stringData": { | |
| "database-user": "${DATABASE_USER}", | |
| "database-password": "${DATABASE_PASSWORD}", | |
| "database-admin-password" : "${DATABASE_ADMIN_PASSWORD}" | |
| } | |
| }, | |
| { | |
| "kind": "Service", | |
| "apiVersion": "v1", | |
| "metadata": { | |
| "name": "${NAME}", | |
| "annotations": { | |
| "description": "Exposes and load balances the application pods", | |
| "service.alpha.openshift.io/dependencies": "[{\"name\": \"${DATABASE_SERVICE_NAME}\", \"kind\": \"Service\"}]" | |
| } | |
| }, | |
| "spec": { | |
| "ports": [ | |
| { | |
| "name": "web", | |
| "port": 8080, | |
| "targetPort": 8080 | |
| } | |
| ], | |
| "selector": { | |
| "name": "${NAME}" | |
| } | |
| } | |
| }, | |
| { | |
| "kind": "Route", | |
| "apiVersion": "v1", | |
| "metadata": { | |
| "name": "${NAME}" | |
| }, | |
| "spec": { | |
| "host": "${APPLICATION_DOMAIN}", | |
| "to": { | |
| "kind": "Service", | |
| "name": "${NAME}" | |
| } | |
| } | |
| }, | |
| { | |
| "kind": "ImageStream", | |
| "apiVersion": "v1", | |
| "metadata": { | |
| "name": "${NAME}", | |
| "annotations": { | |
| "description": "Keeps track of changes in the application image" | |
| } | |
| } | |
| }, | |
| { | |
| "kind": "BuildConfig", | |
| "apiVersion": "v1", | |
| "metadata": { | |
| "name": "${NAME}", | |
| "annotations": { | |
| "description": "Defines how to build the application", | |
| "template.alpha.openshift.io/wait-for-ready": "true" | |
| } | |
| }, | |
| "spec": { | |
| "source": { | |
| "type": "Git", | |
| "git": { | |
| "uri": "${SOURCE_REPOSITORY_URL}", | |
| "ref": "${SOURCE_REPOSITORY_REF}" | |
| }, | |
| "contextDir": "${CONTEXT_DIR}" | |
| }, | |
| "strategy": { | |
| "type": "Source", | |
| "sourceStrategy": { | |
| "from": { | |
| "kind": "ImageStreamTag", | |
| "namespace": "${NAMESPACE}", | |
| "name": "nodejs:${NODEJS_VERSION}" | |
| }, | |
| "env": [ | |
| { | |
| "name": "NPM_MIRROR", | |
| "value": "${NPM_MIRROR}" | |
| } | |
| ] | |
| } | |
| }, | |
| "output": { | |
| "to": { | |
| "kind": "ImageStreamTag", | |
| "name": "${NAME}:latest" | |
| } | |
| }, | |
| "triggers": [ | |
| { | |
| "type": "ImageChange" | |
| }, | |
| { | |
| "type": "ConfigChange" | |
| }, | |
| { | |
| "type": "GitHub", | |
| "github": { | |
| "secret": "${GITHUB_WEBHOOK_SECRET}" | |
| } | |
| }, | |
| { | |
| "type": "Generic", | |
| "generic": { | |
| "secret": "${GENERIC_WEBHOOK_SECRET}" | |
| } | |
| } | |
| ], | |
| "postCommit": { | |
| "script": "npm test" | |
| } | |
| } | |
| }, | |
| { | |
| "kind": "DeploymentConfig", | |
| "apiVersion": "v1", | |
| "metadata": { | |
| "name": "${NAME}", | |
| "annotations": { | |
| "description": "Defines how to deploy the application server", | |
| "template.alpha.openshift.io/wait-for-ready": "true" | |
| } | |
| }, | |
| "spec": { | |
| "strategy": { | |
| "type": "Recreate" | |
| }, | |
| "triggers": [ | |
| { | |
| "type": "ImageChange", | |
| "imageChangeParams": { | |
| "automatic": true, | |
| "containerNames": [ | |
| "nodejs-mongodb-example" | |
| ], | |
| "from": { | |
| "kind": "ImageStreamTag", | |
| "name": "${NAME}:latest" | |
| } | |
| } | |
| }, | |
| { | |
| "type": "ConfigChange" | |
| } | |
| ], | |
| "replicas": 1, | |
| "selector": { | |
| "name": "${NAME}" | |
| }, | |
| "template": { | |
| "metadata": { | |
| "name": "${NAME}", | |
| "labels": { | |
| "name": "${NAME}" | |
| } | |
| }, | |
| "spec": { | |
| "containers": [ | |
| { | |
| "name": "nodejs-mongodb-example", | |
| "image": " ", | |
| "ports": [ | |
| { | |
| "containerPort": 8080 | |
| } | |
| ], | |
| "env": [ | |
| { | |
| "name": "DATABASE_SERVICE_NAME", | |
| "value": "${DATABASE_SERVICE_NAME}" | |
| }, | |
| { | |
| "name": "MONGODB_USER", | |
| "valueFrom": { | |
| "secretKeyRef" : { | |
| "name" : "${NAME}", | |
| "key" : "database-user" | |
| } | |
| } | |
| }, | |
| { | |
| "name": "MONGODB_PASSWORD", | |
| "valueFrom": { | |
| "secretKeyRef" : { | |
| "name" : "${NAME}", | |
| "key" : "database-password" | |
| } | |
| } | |
| }, | |
| { | |
| "name": "MONGODB_DATABASE", | |
| "value": "${DATABASE_NAME}" | |
| }, | |
| { | |
| "name": "MONGODB_ADMIN_PASSWORD", | |
| "valueFrom": { | |
| "secretKeyRef" : { | |
| "name" : "${NAME}", | |
| "key" : "database-admin-password" | |
| } | |
| } | |
| } | |
| ], | |
| "readinessProbe": { | |
| "timeoutSeconds": 3, | |
| "initialDelaySeconds": 3, | |
| "httpGet": { | |
| "path": "/", | |
| "port": 8080 | |
| } | |
| }, | |
| "livenessProbe": { | |
| "timeoutSeconds": 3, | |
| "initialDelaySeconds": 30, | |
| "httpGet": { | |
| "path": "/", | |
| "port": 8080 | |
| } | |
| }, | |
| "resources": { | |
| "limits": { | |
| "memory": "${MEMORY_LIMIT}" | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| } | |
| } | |
| }, | |
| { | |
| "kind": "Service", | |
| "apiVersion": "v1", | |
| "metadata": { | |
| "name": "${DATABASE_SERVICE_NAME}", | |
| "annotations": { | |
| "description": "Exposes the database server" | |
| } | |
| }, | |
| "spec": { | |
| "ports": [ | |
| { | |
| "name": "mongodb", | |
| "port": 27017, | |
| "targetPort": 27017 | |
| } | |
| ], | |
| "selector": { | |
| "name": "${DATABASE_SERVICE_NAME}" | |
| } | |
| } | |
| }, | |
| { | |
| "kind": "DeploymentConfig", | |
| "apiVersion": "v1", | |
| "metadata": { | |
| "name": "${DATABASE_SERVICE_NAME}", | |
| "annotations": { | |
| "description": "Defines how to deploy the database", | |
| "template.alpha.openshift.io/wait-for-ready": "true" | |
| } | |
| }, | |
| "spec": { | |
| "strategy": { | |
| "type": "Recreate" | |
| }, | |
| "triggers": [ | |
| { | |
| "type": "ImageChange", | |
| "imageChangeParams": { | |
| "automatic": true, | |
| "containerNames": [ | |
| "mongodb" | |
| ], | |
| "from": { | |
| "kind": "ImageStreamTag", | |
| "namespace": "${NAMESPACE}", | |
| "name": "mongodb:${MONGODB_VERSION}" | |
| } | |
| } | |
| }, | |
| { | |
| "type": "ConfigChange" | |
| } | |
| ], | |
| "replicas": 1, | |
| "selector": { | |
| "name": "${DATABASE_SERVICE_NAME}" | |
| }, | |
| "template": { | |
| "metadata": { | |
| "name": "${DATABASE_SERVICE_NAME}", | |
| "labels": { | |
| "name": "${DATABASE_SERVICE_NAME}" | |
| } | |
| }, | |
| "spec": { | |
| "containers": [ | |
| { | |
| "name": "mongodb", | |
| "image": " ", | |
| "ports": [ | |
| { | |
| "containerPort": 27017 | |
| } | |
| ], | |
| "env": [ | |
| { | |
| "name": "MONGODB_USER", | |
| "valueFrom": { | |
| "secretKeyRef" : { | |
| "name" : "${NAME}", | |
| "key" : "database-user" | |
| } | |
| } | |
| }, | |
| { | |
| "name": "MONGODB_PASSWORD", | |
| "valueFrom": { | |
| "secretKeyRef" : { | |
| "name" : "${NAME}", | |
| "key" : "database-password" | |
| } | |
| } | |
| }, | |
| { | |
| "name": "MONGODB_DATABASE", | |
| "value": "${DATABASE_NAME}" | |
| }, | |
| { | |
| "name": "MONGODB_ADMIN_PASSWORD", | |
| "valueFrom": { | |
| "secretKeyRef" : { | |
| "name" : "${NAME}", | |
| "key" : "database-admin-password" | |
| } | |
| } | |
| } | |
| ], | |
| "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 | |
| } | |
| }, | |
| "resources": { | |
| "limits": { | |
| "memory": "${MEMORY_MONGODB_LIMIT}" | |
| } | |
| }, | |
| "volumeMounts": [ | |
| { | |
| "name": "${DATABASE_SERVICE_NAME}-data", | |
| "mountPath": "/var/lib/mongodb/data" | |
| } | |
| ] | |
| } | |
| ], | |
| "volumes": [ | |
| { | |
| "name": "${DATABASE_SERVICE_NAME}-data", | |
| "emptyDir": { | |
| "medium": "" | |
| } | |
| } | |
| ] | |
| } | |
| } | |
| } | |
| } | |
| ], | |
| "parameters": [ | |
| { | |
| "name": "NAME", | |
| "displayName": "Name", | |
| "description": "The name assigned to all of the frontend objects defined in this template.", | |
| "required": true, | |
| "value": "nodejs-mongodb-example" | |
| }, | |
| { | |
| "name": "NAMESPACE", | |
| "displayName": "Namespace", | |
| "description": "The OpenShift Namespace where the ImageStream resides.", | |
| "required": true, | |
| "value": "openshift" | |
| }, | |
| { | |
| "name": "NODEJS_VERSION", | |
| "displayName": "Version of NodeJS Image", | |
| "description": "Version of NodeJS image to be used (6, 8, or latest).", | |
| "value": "10", | |
| "required": true | |
| }, | |
| { | |
| "name": "MONGODB_VERSION", | |
| "displayName": "Version of MongoDB Image", | |
| "description": "Version of MongoDB image to be used (3.6 or latest).", | |
| "value": "3.6", | |
| "required": true | |
| }, | |
| { | |
| "name": "MEMORY_LIMIT", | |
| "displayName": "Memory Limit", | |
| "description": "Maximum amount of memory the Node.js container can use.", | |
| "required": true, | |
| "value": "512Mi" | |
| }, | |
| { | |
| "name": "MEMORY_MONGODB_LIMIT", | |
| "displayName": "Memory Limit (MongoDB)", | |
| "description": "Maximum amount of memory the MongoDB container can use.", | |
| "required": true, | |
| "value": "512Mi" | |
| }, | |
| { | |
| "name": "SOURCE_REPOSITORY_URL", | |
| "displayName": "Git Repository URL", | |
| "description": "The URL of the repository with your application source code.", | |
| "required": true, | |
| "value": "https://github.com/sclorg/nodejs-ex.git" | |
| }, | |
| { | |
| "name": "SOURCE_REPOSITORY_REF", | |
| "displayName": "Git Reference", | |
| "description": "Set this to a branch name, tag or other ref of your repository if you are not using the default branch." | |
| }, | |
| { | |
| "name": "CONTEXT_DIR", | |
| "displayName": "Context Directory", | |
| "description": "Set this to the relative path to your project if it is not in the root of your repository." | |
| }, | |
| { | |
| "name": "APPLICATION_DOMAIN", | |
| "displayName": "Application Hostname", | |
| "description": "The exposed hostname that will route to the Node.js service, if left blank a value will be defaulted.", | |
| "value": "" | |
| }, | |
| { | |
| "name": "GITHUB_WEBHOOK_SECRET", | |
| "displayName": "GitHub Webhook Secret", | |
| "description": "Github trigger secret. A difficult to guess string encoded as part of the webhook URL. Not encrypted.", | |
| "generate": "expression", | |
| "from": "[a-zA-Z0-9]{40}" | |
| }, | |
| { | |
| "name": "GENERIC_WEBHOOK_SECRET", | |
| "displayName": "Generic Webhook Secret", | |
| "description": "A secret string used to configure the Generic webhook.", | |
| "generate": "expression", | |
| "from": "[a-zA-Z0-9]{40}" | |
| }, | |
| { | |
| "name": "DATABASE_SERVICE_NAME", | |
| "displayName": "Database Service Name", | |
| "required": true, | |
| "value": "mongodb" | |
| }, | |
| { | |
| "name": "DATABASE_USER", | |
| "displayName": "MongoDB Username", | |
| "description": "Username for MongoDB user that will be used for accessing the database.", | |
| "generate": "expression", | |
| "from": "user[A-Z0-9]{3}" | |
| }, | |
| { | |
| "name": "DATABASE_PASSWORD", | |
| "displayName": "MongoDB Password", | |
| "description": "Password for the MongoDB user.", | |
| "generate": "expression", | |
| "from": "[a-zA-Z0-9]{16}" | |
| }, | |
| { | |
| "name": "DATABASE_NAME", | |
| "displayName": "Database Name", | |
| "required": true, | |
| "value": "sampledb" | |
| }, | |
| { | |
| "name": "DATABASE_ADMIN_PASSWORD", | |
| "displayName": "Database Administrator Password", | |
| "description": "Password for the database admin user.", | |
| "generate": "expression", | |
| "from": "[a-zA-Z0-9]{16}" | |
| }, | |
| { | |
| "name": "NPM_MIRROR", | |
| "displayName": "Custom NPM Mirror URL", | |
| "description": "The custom NPM mirror URL", | |
| "value": "" | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment