From f11aa2af5cc51c109908e91517db54543b16bea9 Mon Sep 17 00:00:00 2001 From: Scott Dodson Date: Mon, 16 Jan 2017 14:27:20 -0500 Subject: v1.3 Add RHAMP --- .../examples/v1.3/quickstart-templates/README.md | 3 +- .../apicast-gateway-template.yml | 149 +++++++++++++++++++++ .../v1.3/quickstart-templates/cakephp-mysql.json | 43 +++++- .../v1.3/quickstart-templates/dancer-mysql.json | 56 +++++--- .../quickstart-templates/django-postgresql.json | 39 +++++- .../jenkins-ephemeral-template.json | 2 +- .../jenkins-persistent-template.json | 2 +- .../v1.3/quickstart-templates/nodejs-mongodb.json | 91 ++++++++++--- .../quickstart-templates/rails-postgresql.json | 49 ++++++- 9 files changed, 376 insertions(+), 58 deletions(-) create mode 100644 roles/openshift_examples/files/examples/v1.3/quickstart-templates/apicast-gateway-template.yml (limited to 'roles/openshift_examples/files/examples/v1.3/quickstart-templates') diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/README.md b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/README.md index e0db922a2..62765e03d 100644 --- a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/README.md +++ b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/README.md @@ -19,5 +19,4 @@ instantiating them. Note: This file is processed by `hack/update-external-examples.sh`. New examples must follow the exact syntax of the existing entries. Files in this directory -are automatically pulled down, do not add additional files directly to this -directory. +are automatically pulled down, do not modify/add files to this directory. diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/apicast-gateway-template.yml b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/apicast-gateway-template.yml new file mode 100644 index 000000000..34f5fcbcc --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/apicast-gateway-template.yml @@ -0,0 +1,149 @@ +apiVersion: v1 +kind: Template +metadata: + creationTimestamp: null + name: 3scale-gateway + annotations: + description: "3scale API Gateway" + iconClass: "icon-load-balancer" + tags: "api,gateway,3scale" +objects: +- apiVersion: v1 + kind: DeploymentConfig + metadata: + name: ${THREESCALE_GATEWAY_NAME} + spec: + replicas: 2 + selector: + deploymentconfig: ${THREESCALE_GATEWAY_NAME} + strategy: + resources: {} + rollingParams: + intervalSeconds: 1 + maxSurge: 25% + maxUnavailable: 25% + timeoutSeconds: 600 + updatePeriodSeconds: 1 + type: Rolling + template: + metadata: + labels: + deploymentconfig: ${THREESCALE_GATEWAY_NAME} + spec: + containers: + - env: + - name: THREESCALE_PORTAL_ENDPOINT + valueFrom: + secretKeyRef: + name: ${THREESCALE_PORTAL_ENDPOINT_SECRET} + key: password + - name: THREESCALE_CONFIG_FILE + value: ${THREESCALE_CONFIG_FILE} + - name: RESOLVER + value: ${RESOLVER} + - name: APICAST_SERVICES + value: ${APICAST_SERVICES} + - name: APICAST_MISSING_CONFIGURATION + value: ${MISSING_CONFIGURATION} + - name: APICAST_LOG_LEVEL + value: ${APICAST_LOG_LEVEL} + - name: APICAST_PATH_ROUTING_ENABLED + value: ${PATH_ROUTING} + - name: APICAST_RESPONSE_CODES + value: ${RESPONSE_CODES} + - name: APICAST_REQUEST_LOGS + value: ${REQUEST_LOGS} + - name: APICAST_RELOAD_CONFIG + value: ${APICAST_RELOAD_CONFIG} + image: ${THREESCALE_GATEWAY_IMAGE} + imagePullPolicy: Always + name: ${THREESCALE_GATEWAY_NAME} + livenessProbe: + httpGet: + path: /status/live + port: 8090 + initialDelaySeconds: 10 + timeoutSeconds: 1 + readinessProbe: + httpGet: + path: /status/ready + port: 8090 + initialDelaySeconds: 15 + timeoutSeconds: 1 + ports: + - containerPort: 8080 + protocol: TCP + resources: {} + terminationMessagePath: /dev/termination-log + dnsPolicy: ClusterFirst + restartPolicy: Always + securityContext: {} + terminationGracePeriodSeconds: 30 + triggers: + - type: ConfigChange + status: {} +- apiVersion: v1 + kind: Service + metadata: + creationTimestamp: null + name: ${THREESCALE_GATEWAY_NAME} + spec: + ports: + - name: 8080-tcp + port: 8080 + protocol: TCP + targetPort: 8080 + selector: + deploymentconfig: ${THREESCALE_GATEWAY_NAME} + sessionAffinity: None + type: ClusterIP + status: + loadBalancer: {} +parameters: +- description: "Name of the secret containing the THREESCALE_PORTAL_ENDPOINT with the access-token or provider key" + value: threescale-portal-endpoint-secret + name: THREESCALE_PORTAL_ENDPOINT_SECRET + required: true +- description: "Path to saved JSON file with configuration for the gateway. Has to be injected to the docker image as read only volume." + value: + name: THREESCALE_CONFIG_FILE + required: false +- description: "Name for the 3scale API Gateway" + value: threescalegw + name: THREESCALE_GATEWAY_NAME + required: true +- description: "Docker image to use." + value: 'rhamp10/apicast-gateway:1.0.0-4' + name: THREESCALE_GATEWAY_IMAGE + required: true +- description: "DNS Resolver for openresty, if empty it will be autodiscovered" + value: + name: RESOLVER + required: false +- description: "Subset of services to run. Use comma separated list of service ids (eg. 42,1337)" + value: + name: APICAST_SERVICES + required: false +- description: "What to do on missing or invalid configuration. Allowed values are: log, exit." + value: exit + required: false + name: MISSING_CONFIGURATION +- description: "Log level. One of the following: debug, info, notice, warn, error, crit, alert, or emerg." + name: APICAST_LOG_LEVEL + required: false +- description: "Enable path routing. Experimental feature." + name: PATH_ROUTING + required: false + value: "false" +- description: "Enable traffic logging to 3scale. Includes whole request and response." + value: "false" + name: REQUEST_LOGS + required: false +- description: "Enable logging response codes to 3scale." + value: "false" + name: RESPONSE_CODES + required: false +- description: "Reload config on every request" + value: "false" + name: APICAST_RELOAD_CONFIG + required: false diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/cakephp-mysql.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/cakephp-mysql.json index 354978891..9dbbf89d1 100644 --- a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/cakephp-mysql.json +++ b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/cakephp-mysql.json @@ -15,6 +15,17 @@ "template": "cakephp-mysql-example" }, "objects": [ + { + "kind": "Secret", + "apiVersion": "v1", + "metadata": { + "name": "${NAME}" + }, + "stringData" : { + "databaseUser" : "${DATABASE_USER}", + "databasePassword" : "${DATABASE_PASSWORD}" + } + }, { "kind": "Service", "apiVersion": "v1", @@ -212,11 +223,21 @@ }, { "name": "DATABASE_USER", - "value": "${DATABASE_USER}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "databaseUser" + } + } }, { "name": "DATABASE_PASSWORD", - "value": "${DATABASE_PASSWORD}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "databasePassword" + } + } }, { "name": "CAKEPHP_SECRET_TOKEN", @@ -349,12 +370,22 @@ }, "env": [ { - "name": "MYSQL_USER", - "value": "${DATABASE_USER}" + "name": "MYSQL_USER", + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "databaseUser" + } + } }, { - "name": "MYSQL_PASSWORD", - "value": "${DATABASE_PASSWORD}" + "name": "MYSQL_PASSWORD", + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "databasePassword" + } + } }, { "name": "MYSQL_DATABASE", diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/dancer-mysql.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/dancer-mysql.json index 9fc5be5e0..dccb8bf7f 100644 --- a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/dancer-mysql.json +++ b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/dancer-mysql.json @@ -15,6 +15,17 @@ "template": "dancer-mysql-example" }, "objects": [ + { + "kind": "Secret", + "apiVersion": "v1", + "metadata": { + "name": "${NAME}" + }, + "stringData" : { + "databaseUser" : "${DATABASE_USER}", + "databasePassword" : "${DATABASE_PASSWORD}" + } + }, { "kind": "Service", "apiVersion": "v1", @@ -115,7 +126,10 @@ "secret": "${GITHUB_WEBHOOK_SECRET}" } } - ] + ], + "postCommit": { + "script": "perl -I extlib/lib/perl5 -I lib t/*" + } } }, { @@ -190,11 +204,21 @@ }, { "name": "MYSQL_USER", - "value": "${DATABASE_USER}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "databaseUser" + } + } }, { "name": "MYSQL_PASSWORD", - "value": "${DATABASE_PASSWORD}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "databasePassword" + } + } }, { "name": "MYSQL_DATABASE", @@ -324,11 +348,21 @@ "env": [ { "name": "MYSQL_USER", - "value": "${DATABASE_USER}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "databaseUser" + } + } }, { "name": "MYSQL_PASSWORD", - "value": "${DATABASE_PASSWORD}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "databasePassword" + } + } }, { "name": "MYSQL_DATABASE", @@ -406,18 +440,6 @@ "generate": "expression", "from": "[a-zA-Z0-9]{40}" }, - { - "name": "ADMIN_USERNAME", - "displayName": "Administrator Username", - "generate": "expression", - "from": "admin[A-Z0-9]{3}" - }, - { - "name": "ADMIN_PASSWORD", - "displayName": "Administrator Password", - "generate": "expression", - "from": "[a-zA-Z0-9]{8}" - }, { "name": "DATABASE_SERVICE_NAME", "displayName": "Database Service Name", diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/django-postgresql.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/django-postgresql.json index 590d5fd4f..59ff8a988 100644 --- a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/django-postgresql.json +++ b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/django-postgresql.json @@ -15,6 +15,17 @@ "template": "django-psql-example" }, "objects": [ + { + "kind": "Secret", + "apiVersion": "v1", + "metadata": { + "name": "${NAME}" + }, + "stringData" : { + "databaseUser" : "${DATABASE_USER}", + "databasePassword" : "${DATABASE_PASSWORD}" + } + }, { "kind": "Service", "apiVersion": "v1", @@ -204,11 +215,21 @@ }, { "name": "DATABASE_USER", - "value": "${DATABASE_USER}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "databaseUser" + } + } }, { "name": "DATABASE_PASSWORD", - "value": "${DATABASE_PASSWORD}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "databasePassword" + } + } }, { "name": "APP_CONFIG", @@ -314,11 +335,21 @@ "env": [ { "name": "POSTGRESQL_USER", - "value": "${DATABASE_USER}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "databaseUser" + } + } }, { "name": "POSTGRESQL_PASSWORD", - "value": "${DATABASE_PASSWORD}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "databasePassword" + } + } }, { "name": "POSTGRESQL_DATABASE", diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/jenkins-ephemeral-template.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/jenkins-ephemeral-template.json index fc7423840..62ccc5b7f 100644 --- a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/jenkins-ephemeral-template.json +++ b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/jenkins-ephemeral-template.json @@ -89,7 +89,7 @@ }, "livenessProbe": { "timeoutSeconds": 3, - "initialDelaySeconds": 120, + "initialDelaySeconds": 420, "failureThreshold" : 30, "httpGet": { "path": "/login", diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/jenkins-persistent-template.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/jenkins-persistent-template.json index acf59ee94..50c4ad566 100644 --- a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/jenkins-persistent-template.json +++ b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/jenkins-persistent-template.json @@ -106,7 +106,7 @@ }, "livenessProbe": { "timeoutSeconds": 3, - "initialDelaySeconds": 120, + "initialDelaySeconds": 420, "failureThreshold" : 30, "httpGet": { "path": "/login", diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/nodejs-mongodb.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/nodejs-mongodb.json index d4b4add18..91f9ec7b3 100644 --- a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/nodejs-mongodb.json +++ b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/nodejs-mongodb.json @@ -15,6 +15,18 @@ "template": "nodejs-mongodb-example" }, "objects": [ + { + "kind": "Secret", + "apiVersion": "v1", + "metadata": { + "name": "${NAME}" + }, + "stringData": { + "databaseUser": "${DATABASE_USER}", + "databasePassword": "${DATABASE_PASSWORD}", + "databaseAdminPassword" : "${DATABASE_ADMIN_PASSWORD}" + } + }, { "kind": "Service", "apiVersion": "v1", @@ -88,10 +100,10 @@ "namespace": "${NAMESPACE}", "name": "nodejs:4" }, - "env": [ + "env": [ { - "name": "NPM_MIRROR", - "value": "${NPM_MIRROR}" + "name": "NPM_MIRROR", + "value": "${NPM_MIRROR}" } ] } @@ -186,11 +198,21 @@ }, { "name": "MONGODB_USER", - "value": "${DATABASE_USER}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "databaseUser" + } + } }, { "name": "MONGODB_PASSWORD", - "value": "${DATABASE_PASSWORD}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "databasePassword" + } + } }, { "name": "MONGODB_DATABASE", @@ -198,7 +220,12 @@ }, { "name": "MONGODB_ADMIN_PASSWORD", - "value": "${DATABASE_ADMIN_PASSWORD}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "databaseAdminPassword" + } + } } ], "readinessProbe": { @@ -210,17 +237,17 @@ } }, "livenessProbe": { - "timeoutSeconds": 3, - "initialDelaySeconds": 30, - "httpGet": { - "path": "/pagecount", - "port": 8080 - } + "timeoutSeconds": 3, + "initialDelaySeconds": 30, + "httpGet": { + "path": "/pagecount", + "port": 8080 + } }, "resources": { - "limits": { - "memory": "${MEMORY_LIMIT}" - } + "limits": { + "memory": "${MEMORY_LIMIT}" + } } } ] @@ -306,11 +333,21 @@ "env": [ { "name": "MONGODB_USER", - "value": "${DATABASE_USER}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "databaseUser" + } + } }, { "name": "MONGODB_PASSWORD", - "value": "${DATABASE_PASSWORD}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "databasePassword" + } + } }, { "name": "MONGODB_DATABASE", @@ -318,14 +355,24 @@ }, { "name": "MONGODB_ADMIN_PASSWORD", - "value": "${DATABASE_ADMIN_PASSWORD}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "databaseAdminPassword" + } + } } ], "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()\""] + "command": [ + "/bin/sh", + "-i", + "-c", + "mongo 127.0.0.1:27017/$MONGODB_DATABASE -u $MONGODB_USER -p $MONGODB_PASSWORD --eval=\"quit()\"" + ] } }, "livenessProbe": { @@ -336,9 +383,9 @@ } }, "resources": { - "limits": { - "memory": "${MEMORY_MONGODB_LIMIT}" - } + "limits": { + "memory": "${MEMORY_MONGODB_LIMIT}" + } }, "volumeMounts": [ { diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/rails-postgresql.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/rails-postgresql.json index baed15d8a..6373562c4 100644 --- a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/rails-postgresql.json +++ b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/rails-postgresql.json @@ -15,6 +15,20 @@ "template": "rails-postgresql-example" }, "objects": [ + { + "kind": "Secret", + "apiVersion": "v1", + "metadata": { + "name": "${NAME}" + }, + "stringData" : { + "databaseUser" : "${DATABASE_USER}", + "databasePassword" : "${DATABASE_PASSWORD}", + "applicationUser" : "${APPLICATION_USER}", + "applicationPassword" : "${APPLICATION_PASSWORD}", + "keyBase" : "${SECRET_KEY_BASE}" + } + }, { "kind": "Service", "apiVersion": "v1", @@ -207,11 +221,21 @@ }, { "name": "POSTGRESQL_USER", - "value": "${DATABASE_USER}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "databaseUser" + } + } }, { "name": "POSTGRESQL_PASSWORD", - "value": "${DATABASE_PASSWORD}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "databasePassword" + } + } }, { "name": "POSTGRESQL_DATABASE", @@ -219,7 +243,12 @@ }, { "name": "SECRET_KEY_BASE", - "value": "${SECRET_KEY_BASE}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "keyBase" + } + } }, { "name": "POSTGRESQL_MAX_CONNECTIONS", @@ -235,11 +264,21 @@ }, { "name": "APPLICATION_USER", - "value": "${APPLICATION_USER}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "applicationUser" + } + } }, { "name": "APPLICATION_PASSWORD", - "value": "${APPLICATION_PASSWORD}" + "valueFrom": { + "secretKeyRef" : { + "name" : "${NAME}", + "key" : "applicationPassword" + } + } }, { "name": "RAILS_ENV", -- cgit v1.2.3