diff options
14 files changed, 1647 insertions, 162 deletions
| diff --git a/.tito/packages/openshift-ansible b/.tito/packages/openshift-ansible index 2282a53ba..c4302af24 100644 --- a/.tito/packages/openshift-ansible +++ b/.tito/packages/openshift-ansible @@ -1 +1 @@ -3.6.89-1 ./ +3.6.89.0-1 ./ diff --git a/openshift-ansible.spec b/openshift-ansible.spec index ca98bdaa3..06c0d2cba 100644 --- a/openshift-ansible.spec +++ b/openshift-ansible.spec @@ -9,7 +9,7 @@  %global __requires_exclude ^/usr/bin/ansible-playbook$  Name:           openshift-ansible -Version:        3.6.89 +Version:        3.6.89.0  Release:        1%{?dist}  Summary:        Openshift and Atomic Enterprise Ansible  License:        ASL 2.0 @@ -280,6 +280,12 @@ Atomic OpenShift Utilities includes  %changelog +* Wed May 31 2017 Scott Dodson <sdodson@redhat.com> 3.6.89.0-1 +- AMP 2.0 (sdodson@redhat.com) +- add support for oc_service for labels, externalIPs (rmeggins@redhat.com) +- [JMAN4-161] Add templates and pv example for cloudforms jboss middleware +  manager (pgier@redhat.com) +  * Wed May 31 2017 Scott Dodson <sdodson@redhat.com> 3.6.89-1  - Adding default value for openshift_hosted_logging_storage_kind    (ewolinet@redhat.com) diff --git a/roles/openshift_examples/examples-sync.sh b/roles/openshift_examples/examples-sync.sh index c7e51bbfc..f3f270c40 100755 --- a/roles/openshift_examples/examples-sync.sh +++ b/roles/openshift_examples/examples-sync.sh @@ -7,8 +7,7 @@  XPAAS_VERSION=ose-v1.3.6  ORIGIN_VERSION=${1:-v3.6} -RHAMP_TAG=1.0.0.GA -RHAMP_TEMPLATE=https://raw.githubusercontent.com/3scale/rhamp-openshift-templates/${RHAMP_TAG}/apicast-gateway/apicast-gateway-template.yml +RHAMP_TAG=2.0.0.GA  EXAMPLES_BASE=$(pwd)/files/examples/${ORIGIN_VERSION}  find ${EXAMPLES_BASE} -name '*.json' -delete  TEMP=`mktemp -d` @@ -17,9 +16,11 @@ pushd $TEMP  wget https://github.com/openshift/origin/archive/master.zip -O origin-master.zip  wget https://github.com/jboss-fuse/application-templates/archive/GA.zip -O fis-GA.zip  wget https://github.com/jboss-openshift/application-templates/archive/${XPAAS_VERSION}.zip -O application-templates-master.zip +wget https://github.com/3scale/rhamp-openshift-templates/archive/${RHAMP_TAG}.zip -O amp.zip  unzip origin-master.zip  unzip application-templates-master.zip  unzip fis-GA.zip +unzip amp.zip  mv origin-master/examples/db-templates/* ${EXAMPLES_BASE}/db-templates/  mv origin-master/examples/quickstarts/* ${EXAMPLES_BASE}/quickstart-templates/  mv origin-master/examples/jenkins/jenkins-*template.json ${EXAMPLES_BASE}/quickstart-templates/ @@ -30,15 +31,11 @@ mv application-templates-${XPAAS_VERSION}/jboss-image-streams.json ${EXAMPLES_BA  mv application-templates-GA/fis-image-streams.json ${EXAMPLES_BASE}/xpaas-streams/fis-image-streams.json  mv application-templates-GA/quickstarts/* ${EXAMPLES_BASE}/xpaas-templates/  find application-templates-${XPAAS_VERSION}/ -name '*.json' ! -wholename '*secret*' ! -wholename '*demo*' -exec mv {} ${EXAMPLES_BASE}/xpaas-templates/ \; +find 3scale-amp-openshift-templates-${RHAMP_TAG}/ -name '*.yml' -exec mv {} ${EXAMPLES_BASE}/quickstart-templates/ \;  popd  wget https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/dotnet_imagestreams.json         -O ${EXAMPLES_BASE}/image-streams/dotnet_imagestreams.json  wget https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/templates/dotnet-example.json           -O ${EXAMPLES_BASE}/quickstart-templates/dotnet-example.json  wget https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/templates/dotnet-pgsql-persistent.json    -O ${EXAMPLES_BASE}/quickstart-templates/dotnet-pgsql-persistent.json -wget ${RHAMP_TEMPLATE} -O ${EXAMPLES_BASE}/quickstart-templates/apicast-gateway-template.yml -wget https://raw.githubusercontent.com/openshift/origin-metrics/master/metrics.yaml                            -O ../openshift_hosted_templates/files/${ORIGIN_VERSION}/origin/metrics-deployer.yaml -wget https://raw.githubusercontent.com/openshift/origin-metrics/enterprise/metrics.yaml                        -O ../openshift_hosted_templates/files/${ORIGIN_VERSION}/enterprise/metrics-deployer.yaml -wget https://raw.githubusercontent.com/openshift/origin-aggregated-logging/master/deployer/deployer.yaml       -O ../openshift_hosted_templates/files/${ORIGIN_VERSION}/origin/logging-deployer.yaml -wget https://raw.githubusercontent.com/openshift/origin-aggregated-logging/enterprise/deployment/deployer.yaml -O ../openshift_hosted_templates/files/${ORIGIN_VERSION}/enterprise/logging-deployer.yaml  git diff files/examples diff --git a/roles/openshift_examples/files/examples/v3.6/quickstart-templates/amp.yml b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/amp.yml new file mode 100644 index 000000000..4e469f6e8 --- /dev/null +++ b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/amp.yml @@ -0,0 +1,1261 @@ +base_env: &base_env +- name: RAILS_ENV +  value: "production" +- name: DATABASE_URL +  value: "mysql2://root:${MYSQL_ROOT_PASSWORD}@system-mysql/${MYSQL_DATABASE}" +- name: FORCE_SSL +  value: "true" +- name: THREESCALE_SUPERDOMAIN +  value: "${WILDCARD_DOMAIN}" +- name: TENANT_NAME +  value: "${TENANT_NAME}" +- name: APICAST_ACCESS_TOKEN +  value: "${APICAST_ACCESS_TOKEN}" +- name: ADMIN_ACCESS_TOKEN +  value: "${ADMIN_ACCESS_TOKEN}" +- name: PROVIDER_PLAN +  value: 'enterprise' +- name: USER_LOGIN +  value: "${ADMIN_USERNAME}" +- name: USER_PASSWORD +  value: "${ADMIN_PASSWORD}" +- name: RAILS_LOG_TO_STDOUT +  value: "true" +- name: RAILS_LOG_LEVEL +  value: "info" +- name: THINKING_SPHINX_ADDRESS +  value: "system-sphinx" +- name: THINKING_SPHINX_PORT +  value: "9306" +- name: THINKING_SPHINX_CONFIGURATION_FILE +  value: "/tmp/sphinx.conf" +- name: EVENTS_SHARED_SECRET +  value: "${SYSTEM_BACKEND_SHARED_SECRET}" +- name: THREESCALE_SANDBOX_PROXY_OPENSSL_VERIFY_MODE +  value: "VERIFY_NONE" +- name: APICAST_BACKEND_ROOT_ENDPOINT +  value: "https://backend-${TENANT_NAME}.${WILDCARD_DOMAIN}" +- name: CONFIG_INTERNAL_API_USER +  value: "${SYSTEM_BACKEND_USERNAME}" +- name: CONFIG_INTERNAL_API_PASSWORD +  value: "${SYSTEM_BACKEND_PASSWORD}" +- name: SECRET_KEY_BASE +  value: "${SYSTEM_APP_SECRET_KEY_BASE}" +- name: AMP_RELEASE +  value: "${AMP_RELEASE}" +- name: SMTP_ADDRESS +  valueFrom: +    configMapKeyRef: +      name: smtp +      key: address +- name: SMTP_USER_NAME +  valueFrom: +    configMapKeyRef: +      name: smtp +      key: username +- name: SMTP_PASSWORD +  valueFrom: +    configMapKeyRef: +      name: smtp +      key: password +- name: SMTP_DOMAIN +  valueFrom: +    configMapKeyRef: +      name: smtp +      key: domain +- name: SMTP_PORT +  valueFrom: +    configMapKeyRef: +      name: smtp +      key: port +- name: SMTP_AUTHENTICATION +  valueFrom: +    configMapKeyRef: +      name: smtp +      key: authentication +- name: SMTP_OPENSSL_VERIFY_MODE +  valueFrom: +    configMapKeyRef: +      name: smtp +      key: openssl.verify.mode +- name: BACKEND_ROUTE +  value: "https://backend-${TENANT_NAME}.${WILDCARD_DOMAIN}" + +apiVersion: v1 +kind: Template +metadata: +  name: "system" +message: "Login on https://${TENANT_NAME}-admin.${WILDCARD_DOMAIN} as ${ADMIN_USERNAME}/${ADMIN_PASSWORD}" +objects: + +- apiVersion: "v1" +  kind: "PersistentVolumeClaim" +  metadata: +    name: "system-storage" +  spec: +    accessModes: +    - "ReadWriteMany" +    resources: +      requests: +        storage: "100Mi" + +- apiVersion: "v1" +  kind: "PersistentVolumeClaim" +  metadata: +    name: "mysql-storage" +  spec: +    accessModes: +    - "ReadWriteOnce" +    resources: +      requests: +        storage: "1Gi" + +- apiVersion: "v1" +  kind: "PersistentVolumeClaim" +  metadata: +    name: "system-redis-storage" +  spec: +    accessModes: +    - "ReadWriteOnce" +    resources: +      requests: +        storage: "1Gi" + +- apiVersion: "v1" +  kind: "PersistentVolumeClaim" +  metadata: +    name: "backend-redis-storage" +  spec: +    accessModes: +    - "ReadWriteOnce" +    resources: +      requests: +        storage: "1Gi" + +- apiVersion: v1 +  kind: DeploymentConfig +  metadata: +    name: backend-cron +  spec: +    replicas: 1 +    selector: +      name: backend-cron +    strategy: +      rollingParams: +        intervalSeconds: 1 +        maxSurge: 25% +        maxUnavailable: 25% +        timeoutSeconds: 600 +        updatePeriodSeconds: 1 +      type: Rolling +    template: +      metadata: +        labels: +          name: backend-cron +      spec: +        containers: +        - args: +          - backend-cron +          env: +          - name: CONFIG_REDIS_PROXY +            value: "backend-redis:6379" +          - name: CONFIG_QUEUES_MASTER_NAME +            value: "backend-redis:6379/1" +          - name: RACK_ENV +            value: "production" +          image: 3scale-amp20/backend:1.0-2 +          imagePullPolicy: IfNotPresent +          name: backend-cron +    triggers: +    - type: ConfigChange + +- apiVersion: v1 +  kind: DeploymentConfig +  metadata: +    name: backend-redis +  spec: +    replicas: 1 +    selector: +      name: backend-redis +    strategy: +      type: Recreate +    template: +      metadata: +        labels: +          name: backend-redis +      spec: +        containers: +        - image: ${REDIS_IMAGE} +          imagePullPolicy: IfNotPresent +          name: backend-redis +          readinessProbe: +            exec: +              command: +              - "container-entrypoint" +              - "bash" +              - "-c" +              - "redis-cli set liveness-probe \"`date`\" | grep OK" +            initialDelaySeconds: 10 +            periodSeconds: 30 +            timeoutSeconds: 1 +          livenessProbe: +            tcpSocket: +              port: 6379 +            initialDelaySeconds: 10 +            periodSeconds: 10 +          volumeMounts: +          - name: backend-redis-storage +            mountPath: "/var/lib/redis/data" +          - name: redis-config +            mountPath: /etc/redis.conf +            subPath: redis.conf +        volumes: +        - name: backend-redis-storage +          persistentVolumeClaim: +            claimName: backend-redis-storage +        - name: redis-config +          configMap: +            name: redis-config +            items: +            - key: redis.conf +              path: redis.conf +    triggers: +    - type: ConfigChange + +- apiVersion: v1 +  kind: DeploymentConfig +  metadata: +    name: backend-listener +  spec: +    replicas: 1 +    selector: +      name: backend-listener +    strategy: +      rollingParams: +        intervalSeconds: 1 +        maxSurge: 25% +        maxUnavailable: 25% +        timeoutSeconds: 600 +        updatePeriodSeconds: 1 +      type: Rolling +    template: +      metadata: +        labels: +          name: backend-listener +      spec: +        containers: +        - args: +          - 3scale_backend +          - start +          - "-e" +          - production +          - "-p" +          - '3000' +          - "-x" +          - "/dev/stdout" +          env: +          - name: CONFIG_REDIS_PROXY +            value: "backend-redis:6379" +          - name: CONFIG_QUEUES_MASTER_NAME +            value: "backend-redis:6379/1" +          - name: RACK_ENV +            value: "production" +          - name: CONFIG_INTERNAL_API_USER +            value: "${SYSTEM_BACKEND_USERNAME}" +          - name: CONFIG_INTERNAL_API_PASSWORD +            value: "${SYSTEM_BACKEND_PASSWORD}" +          image: 3scale-amp20/backend:1.0-2 +          imagePullPolicy: IfNotPresent +          name: backend-listener +          livenessProbe: +            initialDelaySeconds: 30 +            periodSeconds: 10 +            tcpSocket: +              port: 3000 +          readinessProbe: +            httpGet: +              path: "/status" +              port: 3000 +            initialDelaySeconds: 30 +            timeoutSeconds: 5 +          ports: +          - containerPort: 3000 +            protocol: TCP +    triggers: +    - type: ConfigChange + +- apiVersion: v1 +  kind: Service +  metadata: +    name: backend-redis +  spec: +    ports: +    - port: 6379 +      protocol: TCP +      targetPort: 6379 +    selector: +      name: backend-redis + +- apiVersion: v1 +  kind: Service +  metadata: +    name: backend-listener +  spec: +    ports: +    - port: 3000 +      protocol: TCP +      targetPort: 3000 +      name: http +    selector: +      name: backend-listener + +- apiVersion: v1 +  kind: Service +  metadata: +    name: system-provider +  spec: +    ports: +    - port: 3000 +      protocol: TCP +      targetPort: provider +      name: http +    selector: +      name: system-app + +- apiVersion: v1 +  kind: Service +  metadata: +    name: system-developer +  spec: +    ports: +    - port: 3000 +      protocol: TCP +      targetPort: developer +      name: http +    selector: +      name: system-app + +- apiVersion: v1 +  kind: DeploymentConfig +  metadata: +    name: backend-worker +  spec: +    replicas: 1 +    selector: +      name: backend-worker +    strategy: +      rollingParams: +        intervalSeconds: 1 +        maxSurge: 25% +        maxUnavailable: 25% +        timeoutSeconds: 600 +        updatePeriodSeconds: 1 +      type: Rolling +    template: +      metadata: +        labels: +          name: backend-worker +      spec: +        containers: +        - args: +          - 3scale_backend_worker +          - run +          env: +          - name: CONFIG_REDIS_PROXY +            value: "backend-redis:6379" +          - name: CONFIG_QUEUES_MASTER_NAME +            value: "backend-redis:6379/1" +          - name: RACK_ENV +            value: "production" +          - name: CONFIG_EVENTS_HOOK +            value: http://system-provider:3000/master/events/import +          - name: CONFIG_EVENTS_HOOK_SHARED_SECRET +            value: ${SYSTEM_BACKEND_SHARED_SECRET} +          image: 3scale-amp20/backend:1.0-2 +          imagePullPolicy: IfNotPresent +          name: backend-worker +    triggers: +    - type: ConfigChange + +- kind: Service +  apiVersion: v1 +  metadata: +    name: 'system-mysql' +  spec: +    ports: +    - name: system-mysql +      protocol: TCP +      port: 3306 +      targetPort: 3306 +      nodePort: 0 +    selector: +      name: 'system-mysql' +- apiVersion: v1 +  kind: Service +  metadata: +    name: system-redis +  spec: +    ports: +    - port: 6379 +      protocol: TCP +      targetPort: 6379 +      name: redis +    selector: +      name: system-redis + + +- apiVersion: v1 +  kind: DeploymentConfig +  metadata: +    name: system-redis +  spec: +    replicas: 1 +    selector: +      name: system-redis +    strategy: +      type: Recreate +    template: +      metadata: +        labels: +          name: system-redis +      spec: +        containers: +        - args: +          image: ${REDIS_IMAGE} +          imagePullPolicy: IfNotPresent +          name: system-redis +          terminationMessagePath: /dev/termination-log +          volumeMounts: +          - name: system-redis-storage +            mountPath: "/var/lib/redis/data" +          - name: redis-config +            mountPath: /etc/redis.conf +            subPath: redis.conf +          readinessProbe: +            exec: +              command: +              - "container-entrypoint" +              - "bash" +              - "-c" +              - "redis-cli set liveness-probe \"`date`\" | grep OK" +            initialDelaySeconds: 30 +            periodSeconds: 10 +            timeoutSeconds: 5 +          livenessProbe: +            tcpSocket: +              port: 6379 +            initialDelaySeconds: 10 +            periodSeconds: 5 +        volumes: +        - name: system-redis-storage +          persistentVolumeClaim: +            claimName: system-redis-storage +        - name: redis-config +          configMap: +            name: redis-config +            items: +            - key: redis.conf +              path: redis.conf +    triggers: +    - type: ConfigChange + +- apiVersion: v1 +  kind: Service +  metadata: +    name: system-sphinx +  spec: +    ports: +    - port: 9306 +      protocol: TCP +      targetPort: 9306 +      name: sphinx +    selector: +      name: system-sphinx + +- apiVersion: v1 +  kind: DeploymentConfig +  metadata: +    name: system-sphinx +  spec: +    replicas: 1 +    selector: +      name: system-sphinx +    strategy: +      rollingParams: +        intervalSeconds: 1 +        maxSurge: 25% +        maxUnavailable: 25% +        timeoutSeconds: 600 +        updatePeriodSeconds: 1 +      type: Rolling +    template: +      metadata: +        labels: +          name: system-sphinx +      spec: +        volumes: +        - name: system-sphinx-database +          emptyDir: {} +        containers: +        - args: +          - rake +          - 'openshift:thinking_sphinx:start' +          volumeMounts: +          - name: system-sphinx-database +            mountPath: "/opt/system/db/sphinx" +          env: +          - name: RAILS_ENV +            value: production +          - name: DATABASE_URL +            value: "mysql2://root:${MYSQL_ROOT_PASSWORD}@system-mysql/${MYSQL_DATABASE}" +          - name: THINKING_SPHINX_ADDRESS +            value: 0.0.0.0 +          - name: THINKING_SPHINX_CONFIGURATION_FILE +            value: "db/sphinx/production.conf" +          - name: THINKING_SPHINX_PID_FILE +            value: db/sphinx/searchd.pid +          - name: DELTA_INDEX_INTERVAL +            value: '5' +          - name: FULL_REINDEX_INTERVAL +            value: '60' +          image: 3scale-amp20/system:1.0-2 +          imagePullPolicy: IfNotPresent +          name: system-sphinx +          livenessProbe: +            tcpSocket: +              port: 9306 +            initialDelaySeconds: 60 +            periodSeconds: 10 +    triggers: +    - type: ConfigChange + +- apiVersion: v1 +  kind: Service +  metadata: +    name: system-memcache +  spec: +    ports: +    - port: 11211 +      protocol: TCP +      targetPort: 11211 +      name: memcache +    selector: +      name: system-memcache +- apiVersion: v1 +  kind: DeploymentConfig +  metadata: +    name: system-memcache +  spec: +    replicas: 1 +    selector: +      name: system-memcache +    strategy: +      rollingParams: +        intervalSeconds: 1 +        maxSurge: 25% +        maxUnavailable: 25% +        timeoutSeconds: 600 +        updatePeriodSeconds: 1 +      type: Rolling +    template: +      metadata: +        labels: +          name: system-memcache +      spec: +        containers: +        - args: +          env: +          image: 3scale-amp20/memcached:1.4.15-7 +          imagePullPolicy: IfNotPresent +          name: memcache +          readinessProbe: +            exec: +              command: +              - "sh" +              - "-c" +              - "echo version | nc $HOSTNAME 11211 | grep VERSION" +            initialDelaySeconds: 10 +            periodSeconds: 30 +            timeoutSeconds: 5 +          livenessProbe: +            tcpSocket: +              port: 11211 +            initialDelaySeconds: 10 +            periodSeconds: 10 +          command: +          - "memcached" +          - "-m" +          - "64" +        ports: +        - containerPort: 6379 +          protocol: TCP +    triggers: +    - type: ConfigChange + +- apiVersion: v1 +  kind: Route +  metadata: +    name: system-provider-admin-route +    labels: +      app: system-route +  spec: +    host: ${TENANT_NAME}-admin.${WILDCARD_DOMAIN} +    to: +      kind: Service +      name: system-provider +    port: +      targetPort: http +    tls: +      termination: edge +      insecureEdgeTerminationPolicy: Allow + +- apiVersion: v1 +  kind: Route +  metadata: +    name: backend-route +    labels: +      app: system-route +  spec: +    host: backend-${TENANT_NAME}.${WILDCARD_DOMAIN} +    to: +      kind: Service +      name: backend-listener +    port: +      targetPort: http +    tls: +      termination: edge +      insecureEdgeTerminationPolicy: Allow + +- apiVersion: v1 +  kind: Route +  metadata: +    name: system-developer-route +    labels: +      app: system-route +  spec: +    host: ${TENANT_NAME}.${WILDCARD_DOMAIN} +    to: +      kind: Service +      name: system-developer +    port: +      targetPort: http +    tls: +      termination: edge +      insecureEdgeTerminationPolicy: Allow + +- apiVersion: v1 +  kind: DeploymentConfig +  metadata: +    name: apicast-staging +  spec: +    replicas: 1 +    selector: +      deploymentconfig: apicast-staging +    strategy: +      rollingParams: +        intervalSeconds: 1 +        maxSurge: 25% +        maxUnavailable: 25% +        timeoutSeconds: 1800 +        updatePeriodSeconds: 1 +      type: Rolling +    template: +      metadata: +        labels: +          deploymentconfig: apicast-staging +      spec: +        containers: +        - env: +          - name: THREESCALE_PORTAL_ENDPOINT +            value: http://${APICAST_ACCESS_TOKEN}@system-provider:3000 +          - name: APICAST_CONFIGURATION_LOADER +            value: "lazy" +          - name: APICAST_CONFIGURATION_CACHE +            value: "0" +          - name: THREESCALE_DEPLOYMENT_ENV +            value: "sandbox" +          - name: APICAST_MANAGEMENT_API +            value: "${APICAST_MANAGEMENT_API}" +          - name: BACKEND_ENDPOINT_OVERRIDE +            value: http://backend-listener:3000 +          - name: OPENSSL_VERIFY +            value: '${APICAST_OPENSSL_VERIFY}' +          - name: APICAST_RESPONSE_CODES +            value: '${APICAST_RESPONSE_CODES}' +          - name: REDIS_URL +            value: "redis://system-redis:6379/2" +          image: 3scale-amp20/apicast-gateway:1.0-3 +          imagePullPolicy: IfNotPresent +          name: apicast-staging +          livenessProbe: +            httpGet: +              path: /status/live +              port: 8090 +            initialDelaySeconds: 10 +            timeoutSeconds: 5 +            periodSeconds: 10 +          readinessProbe: +            httpGet: +              path: /status/ready +              port: 8090 +            initialDelaySeconds: 15 +            timeoutSeconds: 5 +            periodSeconds: 30 +          ports: +          - containerPort: 8080 +            protocol: TCP +          - containerPort: 8090 +            protocol: TCP +    triggers: +    - type: ConfigChange + +- apiVersion: v1 +  kind: Service +  metadata: +    name: apicast-staging +  spec: +    ports: +    - name: gateway +      port: 8080 +      protocol: TCP +      targetPort: 8080 +    - name: management +      port: 8090 +      protocol: TCP +      targetPort: 8090 +    selector: +      deploymentconfig: apicast-staging + +- apiVersion: v1 +  kind: DeploymentConfig +  metadata: +    name: apicast-production +  spec: +    replicas: 1 +    selector: +      deploymentconfig: apicast-production +    strategy: +      rollingParams: +        intervalSeconds: 1 +        maxSurge: 25% +        maxUnavailable: 25% +        timeoutSeconds: 1800 +        updatePeriodSeconds: 1 +      type: Rolling +    template: +      metadata: +        labels: +          deploymentconfig: apicast-production +      spec: +        containers: +        - env: +          - name: THREESCALE_PORTAL_ENDPOINT +            value: "http://${APICAST_ACCESS_TOKEN}@system-provider:3000" +          - name: APICAST_CONFIGURATION_LOADER +            value: "boot" +          - name: APICAST_CONFIGURATION_CACHE +            value: "300" +          - name: THREESCALE_DEPLOYMENT_ENV +            value: "production" +          - name: APICAST_MANAGEMENT_API +            value: "${APICAST_MANAGEMENT_API}" +          - name: BACKEND_ENDPOINT_OVERRIDE +            value: http://backend-listener:3000 +          - name: OPENSSL_VERIFY +            value: '${APICAST_OPENSSL_VERIFY}' +          - name: APICAST_RESPONSE_CODES +            value: '${APICAST_RESPONSE_CODES}' +          - name: REDIS_URL +            value: "redis://system-redis:6379/1" +          image: 3scale-amp20/apicast-gateway:1.0-3 +          imagePullPolicy: IfNotPresent +          name: apicast-production +          livenessProbe: +            httpGet: +              path: /status/live +              port: 8090 +            initialDelaySeconds: 10 +            timeoutSeconds: 5 +            periodSeconds: 10 +          readinessProbe: +            httpGet: +              path: /status/ready +              port: 8090 +            initialDelaySeconds: 15 +            timeoutSeconds: 5 +            periodSeconds: 30 +          ports: +          - containerPort: 8080 +            protocol: TCP +          - containerPort: 8090 +            protocol: TCP +    triggers: +    - type: ConfigChange + +- apiVersion: v1 +  kind: Service +  metadata: +    name: apicast-production +  spec: +    ports: +    - name: gateway +      port: 8080 +      protocol: TCP +      targetPort: 8080 +    - name: management +      port: 8090 +      protocol: TCP +      targetPort: 8090 +    selector: +      deploymentconfig: apicast-production + +- apiVersion: v1 +  kind: Route +  metadata: +    name: api-apicast-staging-route +    labels: +      app: apicast-staging +  spec: +    host: api-${TENANT_NAME}-apicast-staging.${WILDCARD_DOMAIN} +    to: +      kind: Service +      name: apicast-staging +    port: +      targetPort: gateway +    tls: +      termination: edge +      insecureEdgeTerminationPolicy: Allow + +- apiVersion: v1 +  kind: Route +  metadata: +    name: api-apicast-production-route +    labels: +      app: apicast-production +  spec: +    host: api-${TENANT_NAME}-apicast-production.${WILDCARD_DOMAIN} +    to: +      kind: Service +      name: apicast-production +    port: +      targetPort: gateway +    tls: +      termination: edge +      insecureEdgeTerminationPolicy: Allow + +- apiVersion: v1 +  kind: DeploymentConfig +  metadata: +    name: system-app +  spec: +    replicas: 1 +    selector: +      name: system-app +    strategy: +      rollingParams: +        intervalSeconds: 1 +        maxSurge: 25% +        maxUnavailable: 25% +        timeoutSeconds: 600 +        updatePeriodSeconds: 1 +        pre: +          failurePolicy: Retry +          execNewPod: +            containerName: system-provider +            command: +            - bash +            - -c +            - bundle exec rake boot openshift:deploy +            env: *base_env +            volumes: +            - system-storage +        post: +          failurePolicy: Abort +          execNewPod: +            containerName: system-provider +            command: +            - bash +            - -c +            - bundle exec rake boot openshift:post_deploy +      type: Rolling +    template: +      metadata: +        labels: +          name: system-app +      spec: +        containers: +        - args: +          env: *base_env +          image: 3scale-amp20/system:1.0-2 +          imagePullPolicy: IfNotPresent +          command: ['env', 'TENANT_MODE=provider', 'PORT=3000', 'container-entrypoint', 'bundle', 'exec', 'unicorn', '-c', 'config/unicorn.rb'] +          name: system-provider +          livenessProbe: +            timeoutSeconds: 10 +            initialDelaySeconds: 20 +            tcpSocket: +              port: provider +            periodSeconds: 10 +          readinessProbe: +            httpGet: +              path: /check.txt +              port: provider +              scheme: HTTP +              httpHeaders: +              - name: X-Forwarded-Proto +                value: https +            initialDelaySeconds: 30 +            timeoutSeconds: 10 +            periodSeconds: 30 +          ports: +          - containerPort: 3000 +            protocol: TCP +            name: provider +          volumeMounts: +          - name: system-storage +            mountPath: /opt/system/public/system +        - args: +          env: *base_env +          image: 3scale-amp20/system:1.0-2 +          command: ['env', 'TENANT_MODE=developer', 'PORT=3001', 'container-entrypoint', 'bundle', 'exec', 'unicorn', '-c', 'config/unicorn.rb'] +          imagePullPolicy: IfNotPresent +          name: system-developer +          livenessProbe: +            timeoutSeconds: 10 +            initialDelaySeconds: 20 +            tcpSocket: +              port: developer +            periodSeconds: 10 +          readinessProbe: +            httpGet: +              path: /check.txt +              port: developer +              scheme: HTTP +              httpHeaders: +              - name: X-Forwarded-Proto +                value: https +            initialDelaySeconds: 30 +            timeoutSeconds: 10 +            periodSeconds: 30 +          ports: +          - containerPort: 3001 +            protocol: TCP +            name: developer +          volumeMounts: +          - name: system-storage +            mountPath: /opt/system/public/system +            readOnly: true +        volumes: +        - name: system-storage +          persistentVolumeClaim: +            claimName: system-storage +    triggers: +    - type: ConfigChange + +- apiVersion: v1 +  kind: DeploymentConfig +  metadata: +    name: system-resque +  spec: +    replicas: 1 +    selector: +      name: system-resque +    strategy: +      rollingParams: +        intervalSeconds: 1 +        maxSurge: 25% +        maxUnavailable: 25% +        timeoutSeconds: 600 +        updatePeriodSeconds: 1 +      type: Rolling +    template: +      metadata: +        labels: +          name: system-resque +      spec: +        containers: +        - args: +          - 'rake' +          - 'resque:work' +          - 'QUEUE=*' +          env: *base_env +          image: 3scale-amp20/system:1.0-2 +          imagePullPolicy: IfNotPresent +          name: system-resque +          volumeMounts: +          - name: system-storage +            mountPath: /opt/system/public/system +        - args: +          - 'rake' +          - 'resque:scheduler' +          - 'QUEUE=*' +          env: *base_env +          image: 3scale-amp20/system:1.0-2 +          imagePullPolicy: IfNotPresent +          name: system-scheduler +        volumes: +        - name: system-storage +          persistentVolumeClaim: +            claimName: system-storage +    triggers: +    - type: ConfigChange + +- apiVersion: v1 +  kind: DeploymentConfig +  metadata: +    name: system-sidekiq +  spec: +    replicas: 1 +    selector: +      name: system-sidekiq +    strategy: +      rollingParams: +        intervalSeconds: 1 +        maxSurge: 25% +        maxUnavailable: 25% +        timeoutSeconds: 600 +        updatePeriodSeconds: 1 +      type: Rolling +    template: +      metadata: +        labels: +          name: system-sidekiq +      spec: +        containers: +        - args: +          - rake +          - sidekiq:worker +          env: *base_env +          image: 3scale-amp20/system:1.0-2 +          imagePullPolicy: IfNotPresent +          name: system-sidekiq +          volumeMounts: +          - name: system-storage +            mountPath: /opt/system/public/system +        volumes: +        - name: system-storage +          persistentVolumeClaim: +            claimName: system-storage +    triggers: +    - type: ConfigChange + + +- kind: DeploymentConfig +  apiVersion: v1 +  metadata: +    name: 'system-mysql' +  spec: +    strategy: +      type: Recreate +    triggers: +    - type: ConfigChange +    replicas: 1 +    selector: +      name: 'system-mysql' +    template: +      metadata: +        labels: +          name: 'system-mysql' +      spec: +        containers: +        - name: system-mysql +          image: ${MYSQL_IMAGE} +          ports: +          - containerPort: 3306 +            protocol: TCP +          resources: +            limits: +              memory: 2Gi +            requests: +              cpu: '1' +              memory: 1Gi +          readinessProbe: +            timeoutSeconds: 5 +            initialDelaySeconds: 10 +            periodSeconds: 30 +            exec: +              command: +              - /bin/sh +              - '-i' +              - '-c' +              - MYSQL_PWD="$MYSQL_PASSWORD" mysql -h 127.0.0.1 -u $MYSQL_USER -D $MYSQL_DATABASE -e 'SELECT 1' +          livenessProbe: +            initialDelaySeconds: 30 +            periodSeconds: 10 +            tcpSocket: +              port: 3306 +          env: +          - name: MYSQL_USER +            value: ${MYSQL_USER} +          - name: MYSQL_PASSWORD +            value: ${MYSQL_PASSWORD} +          - name: MYSQL_DATABASE +            value: ${MYSQL_DATABASE} +          - name: MYSQL_ROOT_PASSWORD +            value: ${MYSQL_ROOT_PASSWORD} +          - name: MYSQL_LOWER_CASE_TABLE_NAMES +            value: "1" +          volumeMounts: +          - name: 'mysql-storage' +            mountPath: /var/lib/mysql/data +          imagePullPolicy: IfNotPresent +        volumes: +        - name: 'mysql-storage' +          persistentVolumeClaim: +            claimName: 'mysql-storage' +- kind: ConfigMap +  apiVersion: v1 +  metadata: +    name: redis-config +  data: +    redis.conf: | +      protected-mode no + +      port 6379 + +      timeout 0 +      tcp-keepalive 300 + +      daemonize no +      supervised no + +      loglevel notice + +      databases 16 + +      save 900 1 +      save 300 10 +      save 60 10000 + +      stop-writes-on-bgsave-error yes + +      rdbcompression yes +      rdbchecksum yes + +      dbfilename dump.rdb + +      slave-serve-stale-data yes +      slave-read-only yes + +      repl-diskless-sync no +      repl-disable-tcp-nodelay no + +      appendonly yes +      appendfilename "appendonly.aof" +      appendfsync everysec +      no-appendfsync-on-rewrite no +      auto-aof-rewrite-percentage 100 +      auto-aof-rewrite-min-size 64mb +      aof-load-truncated yes + +      lua-time-limit 5000 + +      activerehashing no + +      aof-rewrite-incremental-fsync yes +      dir /var/lib/redis/data + +- kind: ConfigMap + +  apiVersion: v1 +  metadata: +    name: smtp +  data: +    address: "" +    username: "" +    password: "" +    domain: "" +    port: "" +    authentication: "" +    openssl.verify.mode: "" + +parameters: +- name: AMP_RELEASE +  description: "AMP release tag." +  value: 2.0.0-CR2-redhat-1 +  required: true +- name: ADMIN_PASSWORD +  required: true +  generate: expression +  from: "[a-z0-9]{8}" +- name: ADMIN_USERNAME +  value: admin +  required: true +- name: APICAST_ACCESS_TOKEN +  required: true +  generate: expression +  from: "[a-z0-9]{8}" +  description: "Read Only Access Token that is APIcast going to use to download its configuration." +- name: ADMIN_ACCESS_TOKEN +  required: false +  generate: expression +  from: "[a-z0-9]{16}" +  description: "Admin Access Token with all scopes and write permissions for API access." +- name: WILDCARD_DOMAIN +  description: Root domain for the wildcard routes. Eg. example.com will generate 3scale-admin.example.com. +  required: true +- name: TENANT_NAME +  description: "Tenant name under the root that Admin UI will be available with -admin suffix." +  required: true +  value: "3scale" +- name: MYSQL_USER +  displayName: MySQL User +  description: Username for MySQL user that will be used for accessing the database. +  value: "mysql" +  required: true +- name: MYSQL_PASSWORD +  displayName: MySQL Password +  description: Password for the MySQL user. +  generate: expression +  from: "[a-z0-9]{8}" +  required: true +- name: MYSQL_DATABASE +  displayName: MySQL Database Name +  description: Name of the MySQL database accessed. +  value: "system" +  required: true +- name: MYSQL_ROOT_PASSWORD +  displayName: MySQL Root password. +  description: Password for Root user. +  generate: expression +  from: "[a-z0-9]{8}" +  required: true +- name: SYSTEM_BACKEND_USERNAME +  description: Internal 3scale API username for internal 3scale api auth. +  value: "3scale_api_user" +  required: true +- name: SYSTEM_BACKEND_PASSWORD +  description: Internal 3scale API password for internal 3scale api auth. +  generate: expression +  from: "[a-z0-9]{8}" +  required: true +- name: REDIS_IMAGE +  description: Redis image to use +  required: true +  value: rhscl/redis-32-rhel7:3.2-5.7 +- name: MYSQL_IMAGE +  description: Mysql image to use +  required: true +  value: rhscl/mysql-56-rhel7:5.6-13.14 +- name: SYSTEM_BACKEND_SHARED_SECRET +  description: Shared secret to import events from backend to system. +  generate: expression +  from: "[a-z0-9]{8}" +  required: true +- name: SYSTEM_APP_SECRET_KEY_BASE +  description: System application secret key base +  generate: expression +  from: "[a-f0-9]{128}" +  required: true +- name: APICAST_MANAGEMENT_API +  description: "Scope of the APIcast Management API. Can be disabled, status or debug. At least status required for health checks." +  required: false +  value: "status" +- name: APICAST_OPENSSL_VERIFY +  description: "Turn on/off the OpenSSL peer verification when downloading the configuration. Can be set to true/false." +  required: false +  value: "false" +- name: APICAST_RESPONSE_CODES +  description: "Enable logging response codes in APIcast." +  value: "true" +  required: false diff --git a/roles/openshift_examples/files/examples/v3.6/quickstart-templates/apicast-gateway-template.yml b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/apicast-gateway-template.yml index 34f5fcbcc..e69de29bb 100644 --- a/roles/openshift_examples/files/examples/v3.6/quickstart-templates/apicast-gateway-template.yml +++ b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/apicast-gateway-template.yml @@ -1,149 +0,0 @@ -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/v3.6/quickstart-templates/apicast.yml b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/apicast.yml new file mode 100644 index 000000000..8e8051c0b --- /dev/null +++ b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/apicast.yml @@ -0,0 +1,157 @@ +apiVersion: v1 +kind: Template +metadata: +  name: 3scale-gateway +  annotations: +    description: "3scale API Gateway" +    iconClass: "icon-load-balancer" +    tags: "api,gateway,3scale" +objects: + +- apiVersion: v1 +  kind: DeploymentConfig +  metadata: +    name: "${APICAST_NAME}" +  spec: +    replicas: 2 +    selector: +      deploymentconfig: "${APICAST_NAME}" +    strategy: +      type: Rolling +    template: +      metadata: +        labels: +          deploymentconfig: "${APICAST_NAME}" +      spec: +        containers: +        - env: +          - name: THREESCALE_PORTAL_ENDPOINT +            valueFrom: +              secretKeyRef: +                name: "${CONFIGURATION_URL_SECRET}" +                key: password +          - name: THREESCALE_CONFIG_FILE +            value: "${CONFIGURATION_FILE_PATH}" +          - name: THREESCALE_DEPLOYMENT_ENV +            value: "${DEPLOYMENT_ENVIRONMENT}" +          - name: RESOLVER +            value: "${RESOLVER}" +          - name: APICAST_SERVICES +            value: "${SERVICES_LIST}" +          - name: APICAST_CONFIGURATION_LOADER +            value: "${CONFIGURATION_LOADER}" +          - name: APICAST_LOG_LEVEL +            value: "${LOG_LEVEL}" +          - name: APICAST_PATH_ROUTING_ENABLED +            value: "${PATH_ROUTING}" +          - name: APICAST_RESPONSE_CODES +            value: "${RESPONSE_CODES}" +          - name: APICAST_CONFIGURATION_CACHE +            value: "${CONFIGURATION_CACHE}" +          - name: REDIS_URL +            value: "${REDIS_URL}" +          - name: APICAST_MANAGEMENT_API +            value: "${MANAGEMENT_API}" +          - name: OPENSSL_VERIFY +            value: "${OPENSSL_VERIFY}" +          image: 3scale-amp20/apicast-gateway:1.0-3 +          imagePullPolicy: IfNotPresent +          name: "${APICAST_NAME}" +          livenessProbe: +            httpGet: +              path: /status/live +              port: management +            initialDelaySeconds: 10 +            timeoutSeconds: 1 +          readinessProbe: +            httpGet: +              path: /status/ready +              port: management +            initialDelaySeconds: 15 +            timeoutSeconds: 1 +          ports: +          - name: proxy +            containerPort: 8080 +            protocol: TCP +          - name: management +            containerPort: 8090 +            protocol: TCP +    triggers: +    - type: ConfigChange + +- apiVersion: v1 +  kind: Service +  metadata: +    name: "${APICAST_NAME}" +  spec: +    ports: +    - name: proxy +      port: 8080 +      protocol: TCP +      targetPort: 8080 +    - name: management +      port: 8090 +      protocol: TCP +      targetPort: 8090 +    selector: +      deploymentconfig: "${APICAST_NAME}" + +parameters: +- name: AMP_RELEASE +  description: "AMP release tag." +  value: 2.0.0-CR2-redhat-1 +  required: true +- description: "Name of the secret containing the THREESCALE_PORTAL_ENDPOINT with the access-token or provider key" +  value: apicast-configuration-url-secret +  name: CONFIGURATION_URL_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: CONFIGURATION_FILE_PATH +  required: false +- description: "Deployment environment. Can be sandbox or production." +  value: production +  name: DEPLOYMENT_ENVIRONMENT +  required: true +- description: "Name for the 3scale API Gateway" +  value: apicast +  name: APICAST_NAME +  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: SERVICES_LIST +  required: false +- name: CONFIGURATION_LOADER +  description: "When to load configuration. If on gateway start or incoming request. Allowed values are: lazy, boot." +  value: boot +  required: false +- description: "Log level. One of the following: debug, info, notice, warn, error, crit, alert, or emerg." +  name: LOG_LEVEL +  required: false +- description: "Enable path routing. Experimental feature." +  name: PATH_ROUTING +  required: false +  value: "false" +- description: "Enable logging response codes to 3scale." +  value: "false" +  name: RESPONSE_CODES +  required: false +- name: CONFIGURATION_CACHE +  description: "For how long to cache the downloaded configuration in seconds. Can be left empty, 0 or greater than 60." +  value: "" +  required: false +- description: "Redis URL. Required for OAuth2 integration. ex: redis://PASSWORD@127.0.0.1:6379/0" +  name: REDIS_URL +  required: false +- name: MANAGEMENT_API +  description: "Scope of the Management API. Can be disabled, status or debug. At least status required for health checks." +  required: false +  value: "status" +- name: OPENSSL_VERIFY +  description: "Turn on/off the OpenSSL peer verification. Can be set to true/false." +  required: true +  value: "false" diff --git a/roles/openshift_examples/files/examples/v3.6/quickstart-templates/dancer-mysql-persistent.json b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/dancer-mysql-persistent.json index 81ae63416..ec335daa0 100644 --- a/roles/openshift_examples/files/examples/v3.6/quickstart-templates/dancer-mysql-persistent.json +++ b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/dancer-mysql-persistent.json @@ -147,6 +147,9 @@          }        },        "spec": { +        "strategy": { +          "type": "Recreate" +        },          "triggers": [            {              "type": "ImageChange", diff --git a/roles/openshift_examples/files/examples/v3.6/quickstart-templates/dancer-mysql.json b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/dancer-mysql.json index 7a285dba8..6304586dd 100644 --- a/roles/openshift_examples/files/examples/v3.6/quickstart-templates/dancer-mysql.json +++ b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/dancer-mysql.json @@ -147,6 +147,9 @@          }        },        "spec": { +        "strategy": { +          "type": "Recreate" +        },          "triggers": [            {              "type": "ImageChange", diff --git a/roles/openshift_examples/files/examples/v3.6/quickstart-templates/django-postgresql-persistent.json b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/django-postgresql-persistent.json index 9f982c286..152bf1c7c 100644 --- a/roles/openshift_examples/files/examples/v3.6/quickstart-templates/django-postgresql-persistent.json +++ b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/django-postgresql-persistent.json @@ -148,7 +148,7 @@        },        "spec": {          "strategy": { -          "type": "Rolling" +          "type": "Recreate"          },          "triggers": [            { diff --git a/roles/openshift_examples/files/examples/v3.6/quickstart-templates/django-postgresql.json b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/django-postgresql.json index 7bee85ddd..f3b5f97f3 100644 --- a/roles/openshift_examples/files/examples/v3.6/quickstart-templates/django-postgresql.json +++ b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/django-postgresql.json @@ -148,7 +148,7 @@        },        "spec": {          "strategy": { -          "type": "Rolling" +          "type": "Recreate"          },          "triggers": [            { diff --git a/roles/openshift_examples/files/examples/v3.6/quickstart-templates/nodejs-mongodb-persistent.json b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/nodejs-mongodb-persistent.json index 6ee999cb1..c570ca5d5 100644 --- a/roles/openshift_examples/files/examples/v3.6/quickstart-templates/nodejs-mongodb-persistent.json +++ b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/nodejs-mongodb-persistent.json @@ -154,7 +154,7 @@        },        "spec": {          "strategy": { -          "type": "Rolling" +          "type": "Recreate"          },          "triggers": [            { diff --git a/roles/openshift_examples/files/examples/v3.6/quickstart-templates/nodejs-mongodb.json b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/nodejs-mongodb.json index 5c177a7e0..161f1582e 100644 --- a/roles/openshift_examples/files/examples/v3.6/quickstart-templates/nodejs-mongodb.json +++ b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/nodejs-mongodb.json @@ -154,7 +154,7 @@        },        "spec": {          "strategy": { -          "type": "Rolling" +          "type": "Recreate"          },          "triggers": [            { diff --git a/roles/openshift_examples/files/examples/v3.6/quickstart-templates/pvc.yml b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/pvc.yml new file mode 100644 index 000000000..0bbb8e625 --- /dev/null +++ b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/pvc.yml @@ -0,0 +1,49 @@ +apiVersion: v1 +kind: Template +metadata: +  name: "amp-pvc" +objects: + +- apiVersion: "v1" +  kind: "PersistentVolumeClaim" +  metadata: +    name: "system-storage" +  spec: +    accessModes: +      - "ReadWriteMany" +    resources: +      requests: +        storage: "100Mi" + +- apiVersion: "v1" +  kind: "PersistentVolumeClaim" +  metadata: +    name: "mysql-storage" +  spec: +    accessModes: +      - "ReadWriteOnce" +    resources: +      requests: +        storage: "1Gi" + +- apiVersion: "v1" +  kind: "PersistentVolumeClaim" +  metadata: +    name: "system-redis-storage" +  spec: +    accessModes: +      - "ReadWriteOnce" +    resources: +      requests: +        storage: "1Gi" + +- apiVersion: "v1" +  kind: "PersistentVolumeClaim" +  metadata: +    name: "backend-redis-storage" +  spec: +    accessModes: +      - "ReadWriteOnce" +    resources: +      requests: +        storage: "1Gi" diff --git a/roles/openshift_examples/files/examples/v3.6/quickstart-templates/wildcard.yml b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/wildcard.yml new file mode 100644 index 000000000..00dedecd5 --- /dev/null +++ b/roles/openshift_examples/files/examples/v3.6/quickstart-templates/wildcard.yml @@ -0,0 +1,158 @@ +apiVersion: v1 +kind: Template +metadata: +  name: "amp-apicast-wildcard-router" +objects: + +- apiVersion: v1 +  kind: DeploymentConfig +  metadata: +    name: apicast-router +  spec: +    replicas: 1 +    selector: +      deploymentconfig: apicast-router +    strategy: +      type: Rolling +    template: +      metadata: +        labels: +          deploymentconfig: apicast-router +      spec: +        volumes: +        - name: apicast-router-config +          configMap: +            name: apicast-router-config +            items: +            - key: router.conf +              path: router.conf +        containers: +        - env: +          - name: APICAST_CONFIGURATION_LOADER +            value: "lazy" +          - name: APICAST_CONFIGURATION_CACHE +            value: "0" +          image: 3scale-amp20/apicast-gateway:1.0-3 +          imagePullPolicy: IfNotPresent +          name: apicast-router +          command: ['bin/apicast'] +          livenessProbe: +            tcpSocket: +              port: router +            initialDelaySeconds: 5 +            timeoutSeconds: 5 +            periodSeconds: 10 +          readinessProbe: +            httpGet: +              path: /status/ready +              port: management +            initialDelaySeconds: 5 +            timeoutSeconds: 5 +            periodSeconds: 30 +          volumeMounts: +          - name: apicast-router-config +            mountPath: /opt/app-root/src/sites.d/ +            readOnly: true +          ports: +          - containerPort: 8082 +            name: router +            protocol: TCP +          - containerPort: 8090 +            name: management +            protocol: TCP +    triggers: +    - type: ConfigChange + +- apiVersion: v1 +  kind: Service +  metadata: +    name: apicast-router +  spec: +    ports: +    - name: router +      port: 80 +      protocol: TCP +      targetPort: router +    selector: +      deploymentconfig: apicast-router + +- apiVersion: v1 +  kind: ConfigMap +  metadata: +    name: apicast-router-config +  data: +    router.conf: |- +      upstream wildcard { +        server 0.0.0.1:1; + +        balancer_by_lua_block { +          local round_robin = require 'resty.balancer.round_robin' +          local balancer = round_robin.new() +          local peers = balancer:peers(ngx.ctx.apicast) + +          local peer, err = balancer:set_peer(peers) + +          if not peer then +            ngx.status = ngx.HTTP_SERVICE_UNAVAILABLE +            ngx.log(ngx.ERR, "failed to set current backend peer: ", err) +            ngx.exit(ngx.status) +          end +        } + +        keepalive 1024; +      } + +      server { +        listen 8082; +        server_name ~-(?<apicast>apicast-(staging|production))\.; +        access_log /dev/stdout combined; + +        location / { +          access_by_lua_block { +            local resolver = require('resty.resolver'):instance() +            local servers = resolver:get_servers(ngx.var.apicast, { port = 8080 }) + +            if #servers == 0 then +              ngx.status = ngx.HTTP_BAD_GATEWAY +              ngx.exit(ngx.HTTP_OK) +            end + +            ngx.ctx.apicast = servers +          } +          proxy_http_version 1.1; +          proxy_pass $scheme://wildcard; +          proxy_set_header Host $host; +          proxy_set_header Connection ""; +        } +      } + +- apiVersion: v1 +  kind: Route +  metadata: +    name: apicast-wildcard-router +    labels: +      app: apicast-wildcard-router +  spec: +    host: apicast-${TENANT_NAME}.${WILDCARD_DOMAIN} +    to: +      kind: Service +      name: apicast-router +    port: +      targetPort: router +    wildcardPolicy: Subdomain +    tls: +      termination: edge +      insecureEdgeTerminationPolicy: Allow + +parameters: +- name: AMP_RELEASE +  description: "AMP release tag." +  value: 2.0.0-CR2-redhat-1 +  required: true +- name: WILDCARD_DOMAIN +  description: Root domain for the wildcard routes. Eg. example.com will generate 3scale-admin.example.com. +  required: true +- name: TENANT_NAME +  description: "Domain name under the root that Admin UI will be available with -admin suffix." +  required: true +  value: "3scale" | 
