2016-09-20 13:12:04 +00:00
{
"kind" : "Template" ,
"apiVersion" : "v1" ,
"metadata" : {
"name" : "nodejs-mongo-persistent" ,
"annotations" : {
2016-10-24 20:34:46 +00:00
"openshift.io/display-name" : "Node.js + MongoDB (Persistent)" ,
"description" : "An example Node.js application with a MongoDB database. For more information about using this template, including OpenShift considerations, see https://github.com/openshift/nodejs-ex/blob/master/README.md." ,
"tags" : "quickstart,nodejs" ,
2017-02-14 19:44:26 +00:00
"iconClass" : "icon-nodejs" ,
2017-10-19 12:42:43 +00:00
"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." ,
"openshift.io/provider-display-name" : "Red Hat, Inc." ,
"openshift.io/documentation-url" : "https://github.com/openshift/nodejs-ex" ,
2017-11-07 19:03:41 +00:00
"openshift.io/support-url" : "https://access.redhat.com" ,
"template.openshift.io/bindable" : "false"
2016-09-20 13:12:04 +00:00
}
} ,
2016-10-24 20:34:46 +00:00
"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/openshift/nodejs-ex/blob/master/README.md." ,
2016-09-20 13:12:04 +00:00
"labels" : {
"template" : "nodejs-mongo-persistent"
} ,
"objects" : [
2016-11-29 16:18:16 +00:00
{
"kind" : "Secret" ,
"apiVersion" : "v1" ,
"metadata" : {
"name" : "${NAME}"
} ,
"stringData" : {
2017-01-18 17:17:51 +00:00
"database-user" : "${DATABASE_USER}" ,
"database-password" : "${DATABASE_PASSWORD}" ,
"database-admin-password" : "${DATABASE_ADMIN_PASSWORD}"
2016-11-29 16:18:16 +00:00
}
} ,
2016-09-20 13:12:04 +00:00
{
"kind" : "Service" ,
"apiVersion" : "v1" ,
"metadata" : {
"name" : "${NAME}" ,
"annotations" : {
2016-10-19 17:39:23 +00:00
"description" : "Exposes and load balances the application pods" ,
2016-10-24 20:34:46 +00:00
"service.alpha.openshift.io/dependencies" : "[{\"name\": \"${DATABASE_SERVICE_NAME}\", \"kind\": \"Service\"}]"
2016-09-20 13:12:04 +00:00
}
} ,
"spec" : {
"ports" : [
{
"name" : "web" ,
"port" : 8080 ,
"targetPort" : 8080
}
] ,
"selector" : {
"name" : "${NAME}"
}
}
} ,
{
"kind" : "Route" ,
"apiVersion" : "v1" ,
"metadata" : {
2017-11-07 19:03:41 +00:00
"name" : "${NAME}"
2016-09-20 13:12:04 +00:00
} ,
"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" : {
2017-08-11 16:38:32 +00:00
"description" : "Defines how to build the application" ,
"template.alpha.openshift.io/wait-for-ready" : "true"
2016-09-20 13:12:04 +00:00
}
} ,
"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}" ,
2017-05-23 19:53:51 +00:00
"name" : "nodejs:6"
2016-09-20 13:12:04 +00:00
} ,
"env" : [
{
2017-01-18 17:17:51 +00:00
"name" : "NPM_MIRROR" ,
"value" : "${NPM_MIRROR}"
2016-09-20 13:12:04 +00:00
}
]
}
} ,
"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" : {
2017-08-11 16:38:32 +00:00
"description" : "Defines how to deploy the application server" ,
"template.alpha.openshift.io/wait-for-ready" : "true"
2016-09-20 13:12:04 +00:00
}
} ,
"spec" : {
"strategy" : {
2017-04-25 20:47:41 +00:00
"type" : "Recreate"
2016-09-20 13:12:04 +00:00
} ,
"triggers" : [
{
"type" : "ImageChange" ,
"imageChangeParams" : {
"automatic" : true ,
"containerNames" : [
"nodejs-mongo-persistent"
] ,
"from" : {
"kind" : "ImageStreamTag" ,
"name" : "${NAME}:latest"
}
}
} ,
{
"type" : "ConfigChange"
}
] ,
"replicas" : 1 ,
"selector" : {
"name" : "${NAME}"
} ,
"template" : {
"metadata" : {
"name" : "${NAME}" ,
"labels" : {
"name" : "${NAME}"
}
} ,
"spec" : {
"containers" : [
{
"name" : "nodejs-mongo-persistent" ,
"image" : " " ,
"ports" : [
{
"containerPort" : 8080
}
] ,
"env" : [
{
"name" : "DATABASE_SERVICE_NAME" ,
"value" : "${DATABASE_SERVICE_NAME}"
} ,
{
"name" : "MONGODB_USER" ,
2016-11-29 16:18:16 +00:00
"valueFrom" : {
"secretKeyRef" : {
"name" : "${NAME}" ,
2017-01-18 17:17:51 +00:00
"key" : "database-user"
2016-11-29 16:18:16 +00:00
}
}
2016-09-20 13:12:04 +00:00
} ,
{
"name" : "MONGODB_PASSWORD" ,
2016-11-29 16:18:16 +00:00
"valueFrom" : {
"secretKeyRef" : {
"name" : "${NAME}" ,
2017-01-18 17:17:51 +00:00
"key" : "database-password"
2016-11-29 16:18:16 +00:00
}
}
2016-09-20 13:12:04 +00:00
} ,
{
"name" : "MONGODB_DATABASE" ,
"value" : "${DATABASE_NAME}"
} ,
{
"name" : "MONGODB_ADMIN_PASSWORD" ,
2016-11-29 16:18:16 +00:00
"valueFrom" : {
"secretKeyRef" : {
"name" : "${NAME}" ,
2017-01-18 17:17:51 +00:00
"key" : "database-admin-password"
2016-11-29 16:18:16 +00:00
}
}
2016-09-20 13:12:04 +00:00
}
] ,
"readinessProbe" : {
"timeoutSeconds" : 3 ,
"initialDelaySeconds" : 3 ,
"httpGet" : {
"path" : "/pagecount" ,
"port" : 8080
}
} ,
"livenessProbe" : {
2017-01-18 17:17:51 +00:00
"timeoutSeconds" : 3 ,
"initialDelaySeconds" : 30 ,
"httpGet" : {
"path" : "/pagecount" ,
"port" : 8080
}
2016-09-20 13:12:04 +00:00
} ,
"resources" : {
2017-01-18 17:17:51 +00:00
"limits" : {
"memory" : "${MEMORY_LIMIT}"
}
2016-09-20 13:12:04 +00:00
}
}
]
}
}
}
} ,
{
"kind" : "PersistentVolumeClaim" ,
"apiVersion" : "v1" ,
"metadata" : {
"name" : "${DATABASE_SERVICE_NAME}"
} ,
"spec" : {
"accessModes" : [
"ReadWriteOnce"
] ,
"resources" : {
"requests" : {
"storage" : "${VOLUME_CAPACITY}"
}
}
}
} ,
{
"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" : {
2017-08-18 17:14:14 +00:00
"description" : "Defines how to deploy the database" ,
"template.alpha.openshift.io/wait-for-ready" : "true"
2016-09-20 13:12:04 +00:00
}
} ,
"spec" : {
"strategy" : {
"type" : "Recreate"
} ,
"triggers" : [
{
"type" : "ImageChange" ,
"imageChangeParams" : {
"automatic" : true ,
"containerNames" : [
"mongodb"
] ,
"from" : {
"kind" : "ImageStreamTag" ,
"namespace" : "${NAMESPACE}" ,
"name" : "mongodb:3.2"
}
}
} ,
{
"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" ,
2016-11-29 16:18:16 +00:00
"valueFrom" : {
"secretKeyRef" : {
"name" : "${NAME}" ,
2017-01-18 17:17:51 +00:00
"key" : "database-user"
2016-11-29 16:18:16 +00:00
}
}
2016-09-20 13:12:04 +00:00
} ,
{
"name" : "MONGODB_PASSWORD" ,
2016-11-29 16:18:16 +00:00
"valueFrom" : {
"secretKeyRef" : {
"name" : "${NAME}" ,
2017-01-18 17:17:51 +00:00
"key" : "database-password"
2016-11-29 16:18:16 +00:00
}
}
2016-09-20 13:12:04 +00:00
} ,
{
"name" : "MONGODB_DATABASE" ,
"value" : "${DATABASE_NAME}"
} ,
{
"name" : "MONGODB_ADMIN_PASSWORD" ,
2016-11-29 16:18:16 +00:00
"valueFrom" : {
"secretKeyRef" : {
"name" : "${NAME}" ,
2017-01-18 17:17:51 +00:00
"key" : "database-admin-password"
2016-11-29 16:18:16 +00:00
}
}
2016-09-20 13:12:04 +00:00
}
] ,
"readinessProbe" : {
"timeoutSeconds" : 1 ,
"initialDelaySeconds" : 3 ,
"exec" : {
2016-11-29 16:18:16 +00:00
"command" : [
"/bin/sh" ,
"-i" ,
"-c" ,
"mongo 127.0.0.1:27017/$MONGODB_DATABASE -u $MONGODB_USER -p $MONGODB_PASSWORD --eval=\"quit()\""
]
2016-09-20 13:12:04 +00:00
}
} ,
"livenessProbe" : {
"timeoutSeconds" : 1 ,
"initialDelaySeconds" : 30 ,
"tcpSocket" : {
"port" : 27017
}
} ,
"resources" : {
2017-01-18 17:17:51 +00:00
"limits" : {
"memory" : "${MEMORY_MONGODB_LIMIT}"
}
2016-09-20 13:12:04 +00:00
} ,
"volumeMounts" : [
{
"name" : "${DATABASE_SERVICE_NAME}-data" ,
"mountPath" : "/var/lib/mongodb/data"
}
]
}
] ,
"volumes" : [
{
"name" : "${DATABASE_SERVICE_NAME}-data" ,
"persistentVolumeClaim" : {
"claimName" : "${DATABASE_SERVICE_NAME}"
}
}
]
}
}
}
}
] ,
"parameters" : [
{
"name" : "NAME" ,
"displayName" : "Name" ,
"description" : "The name assigned to all of the frontend objects defined in this template." ,
"required" : true ,
"value" : "nodejs-mongo-persistent"
} ,
{
"name" : "NAMESPACE" ,
"displayName" : "Namespace" ,
"description" : "The OpenShift Namespace where the ImageStream resides." ,
"required" : true ,
"value" : "openshift"
} ,
{
"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" : "VOLUME_CAPACITY" ,
"displayName" : "Volume Capacity" ,
"description" : "Volume space available for data, e.g. 512Mi, 2Gi" ,
"value" : "1Gi" ,
"required" : true
} ,
{
"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/openshift/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" ,
2017-06-26 03:08:48 +00:00
"description" : "Github trigger secret. A difficult to guess string encoded as part of the webhook URL. Not encrypted." ,
2016-09-20 13:12:04 +00:00
"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" : ""
}
]
}