Created
November 17, 2018 04:29
-
-
Save mayorova/98b20cfbd3324682584c4b4ca1d1a514 to your computer and use it in GitHub Desktop.
3scale API Management v2.3 template with Security Context
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
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: MASTER_DOMAIN | |
value: "${MASTER_NAME}" | |
- name: MASTER_USER | |
value: "${MASTER_USER}" | |
- name: MASTER_PASSWORD | |
value: "${MASTER_PASSWORD}" | |
- 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: ZYNC_AUTHENTICATION_TOKEN | |
valueFrom: | |
secretKeyRef: | |
name: zync | |
key: ZYNC_AUTHENTICATION_TOKEN | |
- 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}" | |
- name: SSL_CERT_DIR | |
value: "/etc/pki/tls/certs" | |
- name: APICAST_REGISTRY_URL | |
value: "${APICAST_REGISTRY_URL}" | |
apiVersion: v1 | |
kind: Template | |
metadata: | |
name: 3scale-api-management | |
annotations: | |
openshift.io/display-name: 3scale API Management | |
openshift.io/provider-display-name: Red Hat, Inc. | |
iconClass: icon-3scale | |
description: >- | |
3scale API Management main system | |
tags: integration, api management, 3scale | |
message: "Login on https://${TENANT_NAME}-admin.${WILDCARD_DOMAIN} as ${ADMIN_USERNAME}/${ADMIN_PASSWORD}" | |
objects: | |
- kind: ImageStream | |
apiVersion: v1 | |
metadata: | |
name: amp-system | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
annotations: | |
openshift.io/display-name: AMP System | |
spec: | |
tags: | |
- name: latest | |
annotations: | |
openshift.io/display-name: AMP System (latest) | |
from: | |
kind: ImageStreamTag | |
name: "${AMP_RELEASE}" | |
- name: "${AMP_RELEASE}" | |
annotations: | |
openshift.io/display-name: AMP system ${AMP_RELEASE} | |
from: | |
kind: DockerImage | |
name: ${AMP_SYSTEM_IMAGE} | |
importPolicy: | |
insecure: "${{IMAGESTREAM_TAG_IMPORT_INSECURE}}" | |
- kind: ImageStream | |
apiVersion: v1 | |
metadata: | |
name: amp-backend | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: backend | |
annotations: | |
openshift.io/display-name: AMP backend | |
spec: | |
tags: | |
- name: latest | |
annotations: | |
openshift.io/display-name: amp-backend (latest) | |
from: | |
kind: ImageStreamTag | |
name: "${AMP_RELEASE}" | |
- name: "${AMP_RELEASE}" | |
annotations: | |
openshift.io/display-name: amp-backend ${AMP_RELEASE} | |
from: | |
kind: DockerImage | |
name: ${AMP_BACKEND_IMAGE} | |
importPolicy: | |
insecure: "${{IMAGESTREAM_TAG_IMPORT_INSECURE}}" | |
- kind: ImageStream | |
apiVersion: v1 | |
metadata: | |
name: amp-apicast | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: apicast | |
annotations: | |
openshift.io/display-name: AMP APIcast | |
spec: | |
tags: | |
- name: latest | |
annotations: | |
openshift.io/display-name: AMP APIcast (latest) | |
from: | |
kind: ImageStreamTag | |
name: "${AMP_RELEASE}" | |
- name: "${AMP_RELEASE}" | |
annotations: | |
openshift.io/display-name: AMP APIcast ${AMP_RELEASE} | |
from: | |
kind: DockerImage | |
name: ${AMP_APICAST_IMAGE} | |
importPolicy: | |
insecure: "${{IMAGESTREAM_TAG_IMPORT_INSECURE}}" | |
- kind: ImageStream | |
apiVersion: v1 | |
metadata: | |
name: amp-wildcard-router | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: wildcard-router | |
annotations: | |
openshift.io/display-name: AMP APIcast Wildcard Router | |
spec: | |
tags: | |
- name: latest | |
annotations: | |
openshift.io/display-name: AMP APIcast Wildcard Router (latest) | |
from: | |
kind: ImageStreamTag | |
name: "${AMP_RELEASE}" | |
- name: "${AMP_RELEASE}" | |
annotations: | |
openshift.io/display-name: AMP APIcast Wildcard Router ${AMP_RELEASE} | |
from: | |
kind: DockerImage | |
name: ${AMP_ROUTER_IMAGE} | |
importPolicy: | |
insecure: "${{IMAGESTREAM_TAG_IMPORT_INSECURE}}" | |
- apiVersion: v1 | |
kind: PersistentVolumeClaim | |
metadata: | |
name: system-storage | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: app | |
spec: | |
accessModes: | |
- ReadWriteMany | |
resources: | |
requests: | |
storage: 100Mi | |
- apiVersion: v1 | |
kind: PersistentVolumeClaim | |
metadata: | |
name: mysql-storage | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: mysql | |
spec: | |
accessModes: | |
- ReadWriteOnce | |
resources: | |
requests: | |
storage: 1Gi | |
- apiVersion: v1 | |
kind: PersistentVolumeClaim | |
metadata: | |
name: system-redis-storage | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: redis | |
spec: | |
accessModes: | |
- ReadWriteOnce | |
resources: | |
requests: | |
storage: 1Gi | |
- apiVersion: v1 | |
kind: PersistentVolumeClaim | |
metadata: | |
name: backend-redis-storage | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: backend | |
3scale.component-element: redis | |
spec: | |
accessModes: | |
- ReadWriteOnce | |
resources: | |
requests: | |
storage: 1Gi | |
- apiVersion: v1 | |
kind: DeploymentConfig | |
metadata: | |
name: backend-cron | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: backend | |
3scale.component-element: cron | |
spec: | |
replicas: 1 | |
selector: | |
deploymentConfig: backend-cron | |
strategy: | |
rollingParams: | |
intervalSeconds: 1 | |
maxSurge: 25% | |
maxUnavailable: 25% | |
timeoutSeconds: 1200 | |
updatePeriodSeconds: 1 | |
type: Rolling | |
template: | |
metadata: | |
labels: | |
deploymentConfig: backend-cron | |
app: ${APP_LABEL} | |
3scale.component: backend | |
3scale.component-element: cron | |
spec: | |
initContainers: | |
- name: backend-redis-svc | |
image: amp-backend:latest | |
command: ['sh', '-c', 'until $(echo -n > /dev/tcp/backend-redis/6379); do sleep $SLEEP_SECONDS; done'] | |
activeDeadlineSeconds: 1200 | |
env: | |
- name: SLEEP_SECONDS | |
value: "1" | |
containers: | |
- args: | |
- backend-cron | |
env: | |
- name: CONFIG_REDIS_PROXY | |
value: redis://backend-redis:6379/0 | |
- name: CONFIG_REDIS_SENTINEL_HOSTS | |
value: "" | |
- name: CONFIG_REDIS_SENTINEL_ROLE | |
value: "" | |
- name: CONFIG_QUEUES_MASTER_NAME | |
value: redis://backend-redis:6379/1 | |
- name: CONFIG_QUEUES_SENTINEL_HOSTS | |
value: "" | |
- name: CONFIG_QUEUES_SENTINEL_ROLE | |
value: "" | |
- name: RACK_ENV | |
value: "production" | |
image: amp-backend:latest | |
imagePullPolicy: IfNotPresent | |
name: backend-cron | |
resources: | |
limits: | |
cpu: 150m | |
memory: 80Mi | |
requests: | |
cpu: 50m | |
memory: 40Mi | |
triggers: | |
- type: ConfigChange | |
- type: ImageChange | |
imageChangeParams: | |
automatic: true | |
containerNames: | |
- backend-redis-svc | |
- backend-cron | |
from: | |
kind: ImageStreamTag | |
name: amp-backend:latest | |
- apiVersion: v1 | |
kind: DeploymentConfig | |
metadata: | |
name: backend-redis | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: backend | |
3scale.component-element: redis | |
spec: | |
replicas: 1 | |
selector: | |
deploymentConfig: backend-redis | |
strategy: | |
type: Recreate | |
template: | |
metadata: | |
labels: | |
deploymentConfig: backend-redis | |
app: ${APP_LABEL} | |
3scale.component: backend | |
3scale.component-element: redis | |
spec: | |
containers: | |
- image: ${REDIS_IMAGE} | |
imagePullPolicy: IfNotPresent | |
name: backend-redis | |
command: | |
- "/opt/rh/rh-redis32/root/usr/bin/redis-server" | |
args: | |
- "/etc/redis.d/redis.conf" | |
- "--daemonize" | |
- "no" | |
resources: | |
limits: | |
cpu: 2000m | |
memory: 32Gi | |
requests: | |
cpu: 1000m | |
memory: 1024Mi | |
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.d/ | |
volumes: | |
- name: backend-redis-storage | |
persistentVolumeClaim: | |
claimName: backend-redis-storage | |
- name: redis-config | |
configMap: | |
name: redis-config | |
items: | |
- key: redis.conf | |
path: redis.conf | |
securityContext: | |
supplementalGroups: [65534] | |
triggers: | |
- type: ConfigChange | |
- apiVersion: v1 | |
kind: DeploymentConfig | |
metadata: | |
name: backend-listener | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: backend | |
3scale.component-element: listener | |
spec: | |
replicas: 1 | |
selector: | |
deploymentConfig: backend-listener | |
strategy: | |
rollingParams: | |
intervalSeconds: 1 | |
maxSurge: 25% | |
maxUnavailable: 25% | |
timeoutSeconds: 600 | |
updatePeriodSeconds: 1 | |
type: Rolling | |
template: | |
metadata: | |
labels: | |
deploymentConfig: backend-listener | |
app: ${APP_LABEL} | |
3scale.component: backend | |
3scale.component-element: listener | |
spec: | |
containers: | |
- args: | |
- bin/3scale_backend | |
- start | |
- "-e" | |
- production | |
- "-p" | |
- '3000' | |
- "-x" | |
- "/dev/stdout" | |
env: | |
- name: CONFIG_REDIS_PROXY | |
value: redis://backend-redis:6379/0 | |
- name: CONFIG_REDIS_SENTINEL_HOSTS | |
value: "" | |
- name: CONFIG_REDIS_SENTINEL_ROLE | |
value: "" | |
- name: CONFIG_QUEUES_MASTER_NAME | |
value: redis://backend-redis:6379/1 | |
- name: CONFIG_QUEUES_SENTINEL_HOSTS | |
value: "" | |
- name: CONFIG_QUEUES_SENTINEL_ROLE | |
value: "" | |
- name: RACK_ENV | |
value: "production" | |
- name: CONFIG_INTERNAL_API_USER | |
value: "${SYSTEM_BACKEND_USERNAME}" | |
- name: CONFIG_INTERNAL_API_PASSWORD | |
value: "${SYSTEM_BACKEND_PASSWORD}" | |
- name: PUMA_WORKERS | |
value: "16" | |
image: amp-backend:latest | |
imagePullPolicy: IfNotPresent | |
name: backend-listener | |
resources: | |
limits: | |
cpu: 1000m | |
memory: 700Mi | |
requests: | |
cpu: 500m | |
memory: 550Mi | |
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 | |
- type: ImageChange | |
imageChangeParams: | |
automatic: true | |
containerNames: | |
- backend-listener | |
from: | |
kind: ImageStreamTag | |
name: amp-backend:latest | |
- apiVersion: v1 | |
kind: Service | |
metadata: | |
name: backend-redis | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: backend | |
3scale.component-element: redis | |
spec: | |
ports: | |
- port: 6379 | |
protocol: TCP | |
targetPort: 6379 | |
selector: | |
deploymentConfig: backend-redis | |
- apiVersion: v1 | |
kind: Service | |
metadata: | |
name: backend-listener | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: backend | |
3scale.component-element: listener | |
spec: | |
ports: | |
- port: 3000 | |
protocol: TCP | |
targetPort: 3000 | |
name: http | |
selector: | |
deploymentConfig: backend-listener | |
- apiVersion: v1 | |
kind: Service | |
metadata: | |
name: system-provider | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: provider-ui | |
spec: | |
ports: | |
- port: 3000 | |
protocol: TCP | |
targetPort: provider | |
name: http | |
selector: | |
deploymentConfig: system-app | |
- apiVersion: v1 | |
kind: Service | |
metadata: | |
name: system-master | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: master-ui | |
spec: | |
ports: | |
- port: 3000 | |
protocol: TCP | |
targetPort: master | |
name: http | |
selector: | |
deploymentConfig: system-app | |
- apiVersion: v1 | |
kind: Service | |
metadata: | |
name: system-developer | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: developer-ui | |
spec: | |
ports: | |
- port: 3000 | |
protocol: TCP | |
targetPort: developer | |
name: http | |
selector: | |
deploymentConfig: system-app | |
- apiVersion: v1 | |
kind: DeploymentConfig | |
metadata: | |
name: backend-worker | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: backend | |
3scale.component-element: worker | |
spec: | |
replicas: 1 | |
selector: | |
deploymentConfig: backend-worker | |
strategy: | |
rollingParams: | |
intervalSeconds: 1 | |
maxSurge: 25% | |
maxUnavailable: 25% | |
timeoutSeconds: 1200 | |
updatePeriodSeconds: 1 | |
type: Rolling | |
template: | |
metadata: | |
labels: | |
deploymentConfig: backend-worker | |
app: ${APP_LABEL} | |
3scale.component: backend | |
3scale.component-element: worker | |
spec: | |
initContainers: | |
- name: backend-redis-svc | |
image: amp-backend:latest | |
command: ['sh', '-c', 'until $(echo -n > /dev/tcp/backend-redis/6379); do sleep $SLEEP_SECONDS; done'] | |
activeDeadlineSeconds: 1200 | |
env: | |
- name: SLEEP_SECONDS | |
value: "1" | |
containers: | |
- args: | |
- bin/3scale_backend_worker | |
- run | |
env: | |
- name: CONFIG_REDIS_PROXY | |
value: redis://backend-redis:6379/0 | |
- name: CONFIG_REDIS_SENTINEL_HOSTS | |
value: "" | |
- name: CONFIG_REDIS_SENTINEL_ROLE | |
value: "" | |
- name: CONFIG_QUEUES_MASTER_NAME | |
value: redis://backend-redis:6379/1 | |
- name: CONFIG_QUEUES_SENTINEL_HOSTS | |
value: "" | |
- name: CONFIG_QUEUES_SENTINEL_ROLE | |
value: "" | |
- name: RACK_ENV | |
value: "production" | |
- name: CONFIG_EVENTS_HOOK | |
value: http://system-master:3000/master/events/import | |
- name: CONFIG_EVENTS_HOOK_SHARED_SECRET | |
value: ${SYSTEM_BACKEND_SHARED_SECRET} | |
image: amp-backend:latest | |
imagePullPolicy: IfNotPresent | |
name: backend-worker | |
resources: | |
limits: | |
cpu: 1000m | |
memory: 300Mi | |
requests: | |
cpu: 150m | |
memory: 50Mi | |
triggers: | |
- type: ConfigChange | |
- type: ImageChange | |
imageChangeParams: | |
automatic: true | |
containerNames: | |
- backend-redis-svc | |
- backend-worker | |
from: | |
kind: ImageStreamTag | |
name: amp-backend:latest | |
- kind: Service | |
apiVersion: v1 | |
metadata: | |
name: system-mysql | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: mysql | |
spec: | |
ports: | |
- name: system-mysql | |
protocol: TCP | |
port: 3306 | |
targetPort: 3306 | |
nodePort: 0 | |
selector: | |
deploymentConfig: system-mysql | |
- apiVersion: v1 | |
kind: Service | |
metadata: | |
name: system-redis | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: redis | |
spec: | |
ports: | |
- port: 6379 | |
protocol: TCP | |
targetPort: 6379 | |
name: redis | |
selector: | |
deploymentConfig: system-redis | |
- apiVersion: v1 | |
kind: DeploymentConfig | |
metadata: | |
name: system-redis | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: redis | |
spec: | |
replicas: 1 | |
selector: | |
deploymentConfig: system-redis | |
strategy: | |
type: Recreate | |
template: | |
metadata: | |
labels: | |
deploymentConfig: system-redis | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: redis | |
spec: | |
containers: | |
- image: ${REDIS_IMAGE} | |
imagePullPolicy: IfNotPresent | |
name: system-redis | |
command: | |
- "/opt/rh/rh-redis32/root/usr/bin/redis-server" | |
args: | |
- "/etc/redis.d/redis.conf" | |
- "--daemonize" | |
- "no" | |
resources: | |
limits: | |
memory: 32Gi | |
cpu: 500m | |
requests: | |
cpu: 150m | |
memory: 256Mi | |
terminationMessagePath: /dev/termination-log | |
volumeMounts: | |
- name: system-redis-storage | |
mountPath: "/var/lib/redis/data" | |
- name: redis-config | |
mountPath: /etc/redis.d/ | |
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 | |
securityContext: | |
supplementalGroups: [65534] | |
triggers: | |
- type: ConfigChange | |
- apiVersion: v1 | |
kind: Service | |
metadata: | |
name: system-sphinx | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: sphinx | |
spec: | |
ports: | |
- port: 9306 | |
protocol: TCP | |
targetPort: 9306 | |
name: sphinx | |
selector: | |
deploymentConfig: system-sphinx | |
- apiVersion: v1 | |
kind: DeploymentConfig | |
metadata: | |
name: system-sphinx | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: sphinx | |
spec: | |
replicas: 1 | |
selector: | |
deploymentConfig: system-sphinx | |
strategy: | |
rollingParams: | |
intervalSeconds: 1 | |
maxSurge: 25% | |
maxUnavailable: 25% | |
timeoutSeconds: 1200 | |
updatePeriodSeconds: 1 | |
type: Rolling | |
template: | |
metadata: | |
labels: | |
deploymentConfig: system-sphinx | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: sphinx | |
spec: | |
volumes: | |
- name: system-sphinx-database | |
emptyDir: {} | |
initContainers: | |
- name: system-master-svc | |
image: amp-system:latest | |
command: ['sh', '-c', 'until $(curl --output /dev/null --silent --fail --head http://system-master:3000/status); do sleep $SLEEP_SECONDS; done'] | |
activeDeadlineSeconds: 1200 | |
env: | |
- name: SLEEP_SECONDS | |
value: "1" | |
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: amp-system:latest | |
imagePullPolicy: IfNotPresent | |
name: system-sphinx | |
resources: | |
limits: | |
cpu: 1000m | |
memory: 512Mi | |
requests: | |
cpu: 80m | |
memory: 250Mi | |
livenessProbe: | |
tcpSocket: | |
port: 9306 | |
initialDelaySeconds: 60 | |
periodSeconds: 10 | |
triggers: | |
- type: ConfigChange | |
- type: ImageChange | |
imageChangeParams: | |
automatic: true | |
containerNames: | |
- system-master-svc | |
- system-sphinx | |
from: | |
kind: ImageStreamTag | |
name: amp-system:latest | |
- apiVersion: v1 | |
kind: Service | |
metadata: | |
name: system-memcache | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: memcache | |
spec: | |
ports: | |
- port: 11211 | |
protocol: TCP | |
targetPort: 11211 | |
name: memcache | |
selector: | |
deploymentConfig: system-memcache | |
- apiVersion: v1 | |
kind: DeploymentConfig | |
metadata: | |
name: system-memcache | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: memcache | |
spec: | |
replicas: 1 | |
selector: | |
deploymentConfig: system-memcache | |
strategy: | |
rollingParams: | |
intervalSeconds: 1 | |
maxSurge: 25% | |
maxUnavailable: 25% | |
timeoutSeconds: 600 | |
updatePeriodSeconds: 1 | |
type: Rolling | |
template: | |
metadata: | |
labels: | |
deploymentConfig: system-memcache | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: memcache | |
spec: | |
containers: | |
- args: | |
env: | |
image: ${MEMCACHED_IMAGE} | |
imagePullPolicy: IfNotPresent | |
name: memcache | |
resources: | |
limits: | |
cpu: 250m | |
memory: 96Mi | |
requests: | |
cpu: 50m | |
memory: 64Mi | |
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 | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: provider-ui | |
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: system-master-admin | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: master-ui | |
spec: | |
host: ${MASTER_NAME}-admin.${WILDCARD_DOMAIN} | |
to: | |
kind: Service | |
name: system-master | |
port: | |
targetPort: http | |
tls: | |
termination: edge | |
insecureEdgeTerminationPolicy: Allow | |
- apiVersion: v1 | |
kind: Route | |
metadata: | |
name: system-developer | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: developer-ui | |
spec: | |
host: ${TENANT_NAME}.${WILDCARD_DOMAIN} | |
to: | |
kind: Service | |
name: system-developer | |
port: | |
targetPort: http | |
tls: | |
termination: edge | |
insecureEdgeTerminationPolicy: Allow | |
- apiVersion: v1 | |
kind: Route | |
metadata: | |
name: backend | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: backend | |
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: api-apicast-staging | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: apicast | |
3scale.component-element: 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: Service | |
metadata: | |
name: apicast-staging | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: apicast | |
3scale.component-element: 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-staging | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: apicast | |
3scale.component-element: 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 | |
app: ${APP_LABEL} | |
3scale.component: apicast | |
3scale.component-element: staging | |
annotations: | |
prometheus.io/scrape: 'true' | |
prometheus.io/port: '9421' | |
spec: | |
containers: | |
- env: | |
- name: THREESCALE_PORTAL_ENDPOINT | |
value: "http://${APICAST_ACCESS_TOKEN}@system-master:3000/master/api/proxy/configs" | |
- 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: amp-apicast:latest | |
imagePullPolicy: IfNotPresent | |
name: apicast-staging | |
resources: | |
limits: | |
cpu: 100m | |
memory: 128Mi | |
requests: | |
cpu: 50m | |
memory: 64Mi | |
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 | |
- name: metrics | |
containerPort: 9421 | |
protocol: TCP | |
triggers: | |
- type: ConfigChange | |
- type: ImageChange | |
imageChangeParams: | |
automatic: true | |
containerNames: | |
- apicast-staging | |
from: | |
kind: ImageStreamTag | |
name: amp-apicast:latest | |
- apiVersion: v1 | |
kind: Route | |
metadata: | |
name: api-apicast-production | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: apicast | |
3scale.component-element: 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: Service | |
metadata: | |
name: apicast-production | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: apicast | |
3scale.component-element: 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: DeploymentConfig | |
metadata: | |
name: apicast-production | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: apicast | |
3scale.component-element: 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 | |
app: ${APP_LABEL} | |
3scale.component: apicast | |
3scale.component-element: production | |
annotations: | |
prometheus.io/scrape: 'true' | |
prometheus.io/port: '9421' | |
spec: | |
initContainers: | |
- name: system-master-svc | |
image: amp-apicast:latest | |
command: ['sh', '-c', 'until $(curl --output /dev/null --silent --fail --head http://system-master:3000/status); do sleep $SLEEP_SECONDS; done'] | |
activeDeadlineSeconds: 1200 | |
env: | |
- name: SLEEP_SECONDS | |
value: "1" | |
containers: | |
- env: | |
- name: THREESCALE_PORTAL_ENDPOINT | |
value: "http://${APICAST_ACCESS_TOKEN}@system-master:3000/master/api/proxy/configs" | |
- 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: amp-apicast:latest | |
imagePullPolicy: IfNotPresent | |
name: apicast-production | |
resources: | |
limits: | |
cpu: 1000m | |
memory: 128Mi | |
requests: | |
cpu: 500m | |
memory: 64Mi | |
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 | |
- name: metrics | |
containerPort: 9421 | |
protocol: TCP | |
triggers: | |
- type: ConfigChange | |
- type: ImageChange | |
imageChangeParams: | |
automatic: true | |
containerNames: | |
- system-master-svc | |
- apicast-production | |
from: | |
kind: ImageStreamTag | |
name: amp-apicast:latest | |
- apiVersion: v1 | |
kind: DeploymentConfig | |
metadata: | |
name: apicast-wildcard-router | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: apicast | |
3scale.component-element: wildcard-router | |
spec: | |
replicas: 1 | |
selector: | |
deploymentConfig: apicast-wildcard-router | |
strategy: | |
rollingParams: | |
intervalSeconds: 1 | |
maxSurge: 25% | |
maxUnavailable: 25% | |
timeoutSeconds: 1800 | |
updatePeriodSeconds: 1 | |
type: Rolling | |
template: | |
metadata: | |
labels: | |
deploymentConfig: apicast-wildcard-router | |
app: ${APP_LABEL} | |
3scale.component: apicast | |
3scale.component-element: wildcard-router | |
spec: | |
containers: | |
- env: | |
- name: API_HOST | |
value: "http://${APICAST_ACCESS_TOKEN}@system-master:3000" | |
image: amp-wildcard-router:latest | |
imagePullPolicy: IfNotPresent | |
name: apicast-wildcard-router | |
resources: | |
limits: | |
cpu: 500m | |
memory: 64Mi | |
requests: | |
cpu: 120m | |
memory: 32Mi | |
ports: | |
- containerPort: 8080 | |
protocol: TCP | |
name: http | |
livenessProbe: | |
initialDelaySeconds: 30 | |
periodSeconds: 10 | |
tcpSocket: | |
port: http | |
triggers: | |
- type: ConfigChange | |
- type: ImageChange | |
imageChangeParams: | |
automatic: true | |
containerNames: | |
- apicast-wildcard-router | |
from: | |
kind: ImageStreamTag | |
name: amp-wildcard-router:latest | |
- apiVersion: v1 | |
kind: Service | |
metadata: | |
name: apicast-wildcard-router | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: apicast | |
3scale.component-element: wildcard-router | |
spec: | |
ports: | |
- port: 8080 | |
protocol: TCP | |
targetPort: http | |
name: http | |
selector: | |
deploymentConfig: apicast-wildcard-router | |
- apiVersion: v1 | |
kind: Route | |
metadata: | |
name: apicast-wildcard-router | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: apicast | |
3scale.component-element: wildcard-router | |
spec: | |
host: apicast-wildcard.${WILDCARD_DOMAIN} | |
to: | |
kind: Service | |
name: apicast-wildcard-router | |
port: | |
targetPort: http | |
wildcardPolicy: ${WILDCARD_POLICY} | |
tls: | |
termination: edge | |
insecureEdgeTerminationPolicy: Allow | |
- kind: ConfigMap | |
apiVersion: v1 | |
metadata: | |
name: system | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
data: | |
zync.yml: | | |
production: | |
endpoint: 'http://zync:8080' | |
authentication: | |
token: "<%= ENV.fetch('ZYNC_AUTHENTICATION_TOKEN') %>" | |
connect_timeout: 5 | |
send_timeout: 5 | |
receive_timeout: 10 | |
root_url: | |
rolling_updates.yml: | | |
production: | |
old_charts: false | |
new_provider_documentation: false | |
proxy_pro: false | |
instant_bill_plan_change: false | |
service_permissions: true | |
async_apicast_deploy: false | |
duplicate_application_id: true | |
duplicate_user_key: true | |
plan_changes_wizard: false | |
require_cc_on_signup: false | |
apicast_per_service: true | |
new_notification_system: true | |
cms_api: false | |
apicast_v2: true | |
forum: false | |
published_service_plan_signup: true | |
apicast_oidc: true | |
policies: true | |
- kind: ConfigMap | |
apiVersion: v1 | |
metadata: | |
name: mysql-extra-conf | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: mysql | |
data: | |
mysql-charset.cnf: | | |
[client] | |
default-character-set = utf8 | |
[mysql] | |
default-character-set = utf8 | |
[mysqld] | |
character-set-server = utf8 | |
collation-server = utf8_unicode_ci | |
- kind: ConfigMap | |
apiVersion: v1 | |
metadata: | |
name: mysql-main-conf | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: mysql | |
data: | |
my.cnf: | | |
!include /etc/my.cnf | |
!includedir /etc/my-extra.d | |
- apiVersion: v1 | |
kind: DeploymentConfig | |
metadata: | |
name: system-app | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: app | |
spec: | |
replicas: 1 | |
selector: | |
deploymentConfig: system-app | |
strategy: | |
rollingParams: | |
intervalSeconds: 1 | |
maxSurge: 25% | |
maxUnavailable: 25% | |
timeoutSeconds: 1200 | |
updatePeriodSeconds: 1 | |
pre: | |
failurePolicy: Retry | |
execNewPod: | |
containerName: system-master | |
command: | |
- bash | |
- -c | |
- bundle exec rake boot openshift:deploy MASTER_ACCESS_TOKEN="${MASTER_ACCESS_TOKEN}" | |
env: *base_env | |
volumes: | |
- system-storage | |
post: | |
failurePolicy: Abort | |
execNewPod: | |
containerName: system-master | |
command: | |
- bash | |
- -c | |
- bundle exec rake boot openshift:post_deploy | |
type: Rolling | |
template: | |
metadata: | |
labels: | |
deploymentConfig: system-app | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: app | |
spec: | |
containers: | |
- env: *base_env | |
image: amp-system:latest | |
imagePullPolicy: IfNotPresent | |
args: [ 'env', 'TENANT_MODE=master', 'PORT=3002', 'container-entrypoint', 'bundle', 'exec', 'unicorn', '-c', 'config/unicorn.rb' ] | |
name: system-master | |
resources: | |
limits: | |
cpu: 1000m | |
memory: 800Mi | |
requests: | |
cpu: 50m | |
memory: 600Mi | |
livenessProbe: | |
tcpSocket: | |
port: master | |
initialDelaySeconds: 40 | |
failureThreshold: 40 | |
periodSeconds: 10 | |
timeoutSeconds: 10 | |
readinessProbe: | |
httpGet: | |
path: /check.txt | |
port: master | |
scheme: HTTP | |
httpHeaders: | |
- name: X-Forwarded-Proto | |
value: https | |
initialDelaySeconds: 60 | |
failureThreshold: 10 | |
periodSeconds: 30 | |
timeoutSeconds: 10 | |
ports: | |
- containerPort: 3002 | |
protocol: TCP | |
name: master | |
volumeMounts: | |
- name: system-storage | |
mountPath: /opt/system/public/system | |
- name: system-config | |
mountPath: /opt/system-extra-configs | |
- env: *base_env | |
image: amp-system:latest | |
imagePullPolicy: IfNotPresent | |
args: [ 'env', 'TENANT_MODE=provider', 'PORT=3000', 'container-entrypoint', 'bundle', 'exec', 'unicorn', '-c', 'config/unicorn.rb' ] | |
name: system-provider | |
resources: | |
limits: | |
cpu: 1000m | |
memory: 800Mi | |
requests: | |
cpu: 50m | |
memory: 600Mi | |
livenessProbe: | |
tcpSocket: | |
port: provider | |
initialDelaySeconds: 40 | |
failureThreshold: 40 | |
periodSeconds: 10 | |
timeoutSeconds: 10 | |
readinessProbe: | |
httpGet: | |
path: /check.txt | |
port: provider | |
scheme: HTTP | |
httpHeaders: | |
- name: X-Forwarded-Proto | |
value: https | |
initialDelaySeconds: 60 | |
failureThreshold: 10 | |
periodSeconds: 30 | |
timeoutSeconds: 10 | |
ports: | |
- containerPort: 3000 | |
protocol: TCP | |
name: provider | |
volumeMounts: | |
- name: system-storage | |
mountPath: /opt/system/public/system | |
- name: system-config | |
mountPath: /opt/system-extra-configs | |
- env: *base_env | |
image: amp-system:latest | |
args: [ 'env', 'PORT=3001', 'container-entrypoint', 'bundle', 'exec', 'unicorn', '-c', 'config/unicorn.rb' ] | |
imagePullPolicy: IfNotPresent | |
name: system-developer | |
resources: | |
limits: | |
cpu: 1000m | |
memory: 800Mi | |
requests: | |
cpu: 50m | |
memory: 600Mi | |
livenessProbe: | |
tcpSocket: | |
port: developer | |
initialDelaySeconds: 40 | |
failureThreshold: 40 | |
periodSeconds: 10 | |
timeoutSeconds: 10 | |
readinessProbe: | |
httpGet: | |
path: /check.txt | |
port: developer | |
scheme: HTTP | |
httpHeaders: | |
- name: X-Forwarded-Proto | |
value: https | |
initialDelaySeconds: 60 | |
failureThreshold: 10 | |
periodSeconds: 30 | |
timeoutSeconds: 10 | |
ports: | |
- containerPort: 3001 | |
protocol: TCP | |
name: developer | |
volumeMounts: | |
- name: system-storage | |
mountPath: /opt/system/public/system | |
readOnly: true | |
- name: system-config | |
mountPath: /opt/system-extra-configs | |
volumes: | |
- name: system-storage | |
persistentVolumeClaim: | |
claimName: system-storage | |
- name: system-config | |
configMap: | |
name: system | |
items: | |
- key: zync.yml | |
path: zync.yml | |
- key: rolling_updates.yml | |
path: rolling_updates.yml | |
securityContext: | |
supplementalGroups: [65534] | |
triggers: | |
- type: ConfigChange | |
- type: ImageChange | |
imageChangeParams: | |
automatic: true | |
containerNames: | |
- system-provider | |
- system-developer | |
- system-master | |
from: | |
kind: ImageStreamTag | |
name: amp-system:latest | |
- apiVersion: v1 | |
kind: DeploymentConfig | |
metadata: | |
name: system-resque | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: resque | |
spec: | |
replicas: 1 | |
selector: | |
deploymentConfig: system-resque | |
strategy: | |
rollingParams: | |
intervalSeconds: 1 | |
maxSurge: 25% | |
maxUnavailable: 25% | |
timeoutSeconds: 1200 | |
updatePeriodSeconds: 1 | |
type: Rolling | |
template: | |
metadata: | |
labels: | |
deploymentConfig: system-resque | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: resque | |
spec: | |
initContainers: | |
- name: system-master-svc | |
image: amp-system:latest | |
command: ['sh', '-c', 'until $(curl --output /dev/null --silent --fail --head http://system-master:3000/status); do sleep $SLEEP_SECONDS; done'] | |
activeDeadlineSeconds: 1200 | |
env: | |
- name: SLEEP_SECONDS | |
value: "1" | |
containers: | |
- args: | |
- 'rake' | |
- 'resque:work' | |
- 'QUEUE=*' | |
env: *base_env | |
image: amp-system:latest | |
imagePullPolicy: IfNotPresent | |
name: system-resque | |
resources: | |
limits: | |
cpu: 150m | |
memory: 450Mi | |
requests: | |
cpu: 100m | |
memory: 300Mi | |
volumeMounts: | |
- name: system-storage | |
mountPath: /opt/system/public/system | |
- args: | |
- 'rake' | |
- 'resque:scheduler' | |
- 'QUEUE=*' | |
env: *base_env | |
image: amp-system:latest | |
imagePullPolicy: IfNotPresent | |
name: system-scheduler | |
resources: | |
limits: | |
cpu: 150m | |
memory: 250Mi | |
requests: | |
cpu: 50m | |
memory: 200Mi | |
volumes: | |
- name: system-storage | |
persistentVolumeClaim: | |
claimName: system-storage | |
securityContext: | |
supplementalGroups: [65534] | |
triggers: | |
- type: ConfigChange | |
- type: ImageChange | |
imageChangeParams: | |
automatic: true | |
containerNames: | |
- system-master-svc | |
- system-scheduler | |
- system-resque | |
from: | |
kind: ImageStreamTag | |
name: amp-system:latest | |
- apiVersion: v1 | |
kind: DeploymentConfig | |
metadata: | |
name: system-sidekiq | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: sidekiq | |
spec: | |
replicas: 1 | |
selector: | |
deploymentConfig: system-sidekiq | |
strategy: | |
rollingParams: | |
intervalSeconds: 1 | |
maxSurge: 25% | |
maxUnavailable: 25% | |
timeoutSeconds: 1200 | |
updatePeriodSeconds: 1 | |
type: Rolling | |
template: | |
metadata: | |
labels: | |
deploymentConfig: system-sidekiq | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: sidekiq | |
spec: | |
initContainers: | |
- name: check-svc | |
image: amp-system:latest | |
command: ['sh', '-c', 'until $(echo -n > /dev/tcp/backend-redis/6379 && curl --output /dev/null --silent --fail --head http://system-master:3000/status && curl --output /dev/null --silent --head --fail http://zync:8080/status/ready); do sleep $SLEEP_SECONDS; done'] | |
activeDeadlineSeconds: 1200 | |
env: | |
- name: SLEEP_SECONDS | |
value: "1" | |
containers: | |
- args: | |
- rake | |
- sidekiq:worker | |
- RAILS_MAX_THREADS=25 | |
env: *base_env | |
image: amp-system:latest | |
imagePullPolicy: IfNotPresent | |
name: system-sidekiq | |
resources: | |
limits: | |
cpu: 1000m | |
memory: 2Gi | |
requests: | |
cpu: 100m | |
memory: 500Mi | |
volumeMounts: | |
- name: system-storage | |
mountPath: /opt/system/public/system | |
- name: system-tmp | |
mountPath: /tmp | |
- name: system-config | |
mountPath: /opt/system-extra-configs | |
volumes: | |
- name: system-tmp | |
emptyDir: | |
medium: Memory | |
- name: system-storage | |
persistentVolumeClaim: | |
claimName: system-storage | |
- name: system-config | |
configMap: | |
name: system | |
items: | |
- key: zync.yml | |
path: zync.yml | |
- key: rolling_updates.yml | |
path: rolling_updates.yml | |
securityContext: | |
supplementalGroups: [65534] | |
triggers: | |
- type: ConfigChange | |
- type: ImageChange | |
imageChangeParams: | |
automatic: true | |
containerNames: | |
- check-svc | |
- system-sidekiq | |
from: | |
kind: ImageStreamTag | |
name: amp-system:latest | |
- kind: DeploymentConfig | |
apiVersion: v1 | |
metadata: | |
name: system-mysql | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: mysql | |
spec: | |
strategy: | |
type: Recreate | |
triggers: | |
- type: ConfigChange | |
replicas: 1 | |
selector: | |
deploymentConfig: system-mysql | |
template: | |
metadata: | |
labels: | |
deploymentConfig: system-mysql | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: mysql | |
spec: | |
containers: | |
- name: system-mysql | |
image: ${MYSQL_IMAGE} | |
ports: | |
- containerPort: 3306 | |
protocol: TCP | |
resources: | |
limits: | |
memory: 2Gi | |
requests: | |
cpu: 250m | |
memory: 512Mi | |
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" | |
- name: MYSQL_DEFAULTS_FILE | |
value: /etc/my-extra/my.cnf | |
volumeMounts: | |
- name: mysql-storage | |
mountPath: /var/lib/mysql/data | |
- name: mysql-extra-conf | |
mountPath: /etc/my-extra.d | |
- name: mysql-main-conf | |
mountPath: /etc/my-extra | |
imagePullPolicy: IfNotPresent | |
volumes: | |
- name: mysql-storage | |
persistentVolumeClaim: | |
claimName: mysql-storage | |
- name: mysql-extra-conf | |
configMap: | |
name: mysql-extra-conf | |
- name: mysql-main-conf | |
configMap: | |
name: mysql-main-conf | |
securityContext: | |
supplementalGroups: [65534] | |
- kind: ConfigMap | |
apiVersion: v1 | |
metadata: | |
name: redis-config | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: redis | |
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 | |
- apiVersion: v1 | |
kind: ConfigMap | |
metadata: | |
name: smtp | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: smtp | |
data: | |
address: "" | |
username: "" | |
password: "" | |
domain: "" | |
port: "" | |
authentication: "" | |
openssl.verify.mode: "" | |
- apiVersion: v1 | |
kind: ImageStream | |
metadata: | |
name: postgresql | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: system | |
3scale.component-element: postgresql | |
spec: | |
tags: | |
- name: "9.5" | |
from: | |
kind: DockerImage | |
name: ${POSTGRESQL_IMAGE} | |
importPolicy: | |
insecure: "${{IMAGESTREAM_TAG_IMPORT_INSECURE}}" | |
- kind: ImageStream | |
apiVersion: v1 | |
metadata: | |
name: amp-zync | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: zync | |
annotations: | |
openshift.io/display-name: AMP Zync | |
spec: | |
tags: | |
- name: latest | |
annotations: | |
openshift.io/display-name: AMP Zync (latest) | |
from: | |
kind: ImageStreamTag | |
name: "${AMP_RELEASE}" | |
- name: "${AMP_RELEASE}" | |
annotations: | |
openshift.io/display-name: AMP Zync ${AMP_RELEASE} | |
from: | |
kind: DockerImage | |
name: ${AMP_ZYNC_IMAGE} | |
importPolicy: | |
insecure: "${{IMAGESTREAM_TAG_IMPORT_INSECURE}}" | |
- kind: Secret | |
apiVersion: v1 | |
stringData: | |
SECRET_KEY_BASE: "${ZYNC_SECRET_KEY_BASE}" | |
DATABASE_URL: "postgresql://zync:${ZYNC_DATABASE_PASSWORD}@zync-database:5432/zync_production" | |
ZYNC_DATABASE_PASSWORD: "${ZYNC_DATABASE_PASSWORD}" | |
ZYNC_AUTHENTICATION_TOKEN: "${ZYNC_AUTHENTICATION_TOKEN}" | |
metadata: | |
name: zync | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: zync | |
type: Opaque | |
- apiVersion: v1 | |
kind: DeploymentConfig | |
metadata: | |
annotations: | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: zync | |
name: zync | |
spec: | |
replicas: 1 | |
selector: | |
deploymentConfig: zync | |
template: | |
metadata: | |
labels: | |
deploymentConfig: zync | |
app: ${APP_LABEL} | |
3scale.component: zync | |
spec: | |
initContainers: | |
- name: zync-db-svc | |
image: amp-zync:latest | |
command: ['sh', '-c', 'until $(echo -n > /dev/tcp/zync-database/5432); do sleep $SLEEP_SECONDS; done'] | |
activeDeadlineSeconds: 1200 | |
env: | |
- name: SLEEP_SECONDS | |
value: "1" | |
containers: | |
- image: amp-zync:latest | |
name: zync | |
ports: | |
- containerPort: 8080 | |
protocol: TCP | |
resources: | |
limits: | |
cpu: 1 | |
memory: 512Mi | |
requests: | |
cpu: 150m | |
memory: 250M | |
env: | |
- name: RAILS_LOG_TO_STDOUT | |
value: 'true' | |
- name: RAILS_ENV | |
value: production | |
- name: DATABASE_URL | |
valueFrom: | |
secretKeyRef: | |
name: zync | |
key: DATABASE_URL | |
- name: SECRET_KEY_BASE | |
valueFrom: | |
secretKeyRef: | |
name: zync | |
key: SECRET_KEY_BASE | |
- name: ZYNC_AUTHENTICATION_TOKEN | |
valueFrom: | |
secretKeyRef: | |
name: zync | |
key: ZYNC_AUTHENTICATION_TOKEN | |
livenessProbe: | |
httpGet: | |
path: /status/live | |
port: 8080 | |
scheme: HTTP | |
initialDelaySeconds: 10 | |
timeoutSeconds: 60 | |
periodSeconds: 10 | |
successThreshold: 1 | |
failureThreshold: 10 | |
readinessProbe: | |
httpGet: | |
path: /status/ready | |
port: 8080 | |
scheme: HTTP | |
initialDelaySeconds: 100 | |
timeoutSeconds: 10 | |
periodSeconds: 10 | |
successThreshold: 1 | |
failureThreshold: 3 | |
triggers: | |
- type: ConfigChange | |
- imageChangeParams: | |
automatic: true | |
containerNames: | |
- zync-db-svc | |
- zync | |
from: | |
kind: ImageStreamTag | |
name: amp-zync:latest | |
type: ImageChange | |
- apiVersion: v1 | |
kind: Service | |
metadata: | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: zync | |
name: zync | |
spec: | |
ports: | |
- name: 8080-tcp | |
port: 8080 | |
protocol: TCP | |
targetPort: 8080 | |
selector: | |
deploymentConfig: zync | |
- kind: Service | |
apiVersion: v1 | |
metadata: | |
name: zync-database | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: zync | |
3scale.component-element: database | |
spec: | |
ports: | |
- name: postgresql | |
protocol: TCP | |
port: 5432 | |
targetPort: 5432 | |
nodePort: 0 | |
selector: | |
deploymentConfig: zync-database | |
- kind: DeploymentConfig | |
apiVersion: v1 | |
metadata: | |
name: zync-database | |
labels: | |
app: ${APP_LABEL} | |
3scale.component: zync | |
3scale.component-element: database | |
spec: | |
strategy: | |
type: Recreate | |
triggers: | |
- type: ImageChange | |
imageChangeParams: | |
automatic: true | |
containerNames: | |
- postgresql | |
from: | |
kind: ImageStreamTag | |
name: postgresql:9.5 | |
- type: ConfigChange | |
replicas: 1 | |
selector: | |
deploymentConfig: zync-database | |
template: | |
metadata: | |
labels: | |
deploymentConfig: zync-database | |
app: ${APP_LABEL} | |
3scale.component: zync | |
3scale.component-element: database | |
spec: | |
containers: | |
- name: postgresql | |
image: " " | |
ports: | |
- containerPort: 5432 | |
protocol: TCP | |
readinessProbe: | |
timeoutSeconds: 1 | |
initialDelaySeconds: 5 | |
exec: | |
command: | |
- "/bin/sh" | |
- "-i" | |
- "-c" | |
- psql -h 127.0.0.1 -U zync -q -d zync_production -c 'SELECT 1' | |
livenessProbe: | |
timeoutSeconds: 1 | |
initialDelaySeconds: 30 | |
tcpSocket: | |
port: 5432 | |
env: | |
- name: POSTGRESQL_USER | |
value: zync | |
- name: POSTGRESQL_PASSWORD | |
valueFrom: | |
secretKeyRef: | |
name: zync | |
key: ZYNC_DATABASE_PASSWORD | |
- name: POSTGRESQL_DATABASE | |
value: zync_production | |
resources: | |
limits: | |
memory: 2G | |
cpu: 250m | |
requests: | |
cpu: 50m | |
memory: 250M | |
volumeMounts: | |
- name: zync-database-data | |
mountPath: /var/lib/pgsql/data | |
imagePullPolicy: IfNotPresent | |
volumes: | |
- name: zync-database-data | |
emptyDir: | |
medium: '' | |
restartPolicy: Always | |
parameters: | |
- name: APP_LABEL | |
description: Used for object app labels | |
value: "3scale-api-management" | |
required: true | |
- name: ZYNC_DATABASE_PASSWORD | |
displayName: PostgreSQL Connection Password | |
description: Password for the PostgreSQL connection user. | |
generate: expression | |
from: "[a-zA-Z0-9]{16}" | |
required: true | |
- name: ZYNC_SECRET_KEY_BASE | |
generate: expression | |
from: "[a-zA-Z0-9]{16}" | |
required: true | |
- name: ZYNC_AUTHENTICATION_TOKEN | |
generate: expression | |
from: "[a-zA-Z0-9]{16}" | |
required: true | |
- name: AMP_RELEASE | |
description: "AMP release tag." | |
value: "2.3.0" | |
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: WILDCARD_POLICY | |
description: Use "Subdomain" to create a wildcard route for apicast wildcard router | |
required: true | |
value: "None" | |
- 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: "registry.access.redhat.com/rhscl/redis-32-rhel7:3.2" | |
- name: MYSQL_IMAGE | |
description: Mysql image to use | |
required: true | |
value: "registry.access.redhat.com/rhscl/mysql-57-rhel7:5.7" | |
- name: MEMCACHED_IMAGE | |
description: Memcached image to use | |
required: true | |
value: "registry.access.redhat.com/3scale-amp20/memcached:1.4.15" | |
- name: POSTGRESQL_IMAGE | |
description: Postgresql image to use | |
required: true | |
value: "registry.access.redhat.com/rhscl/postgresql-95-rhel7:9.5" | |
- name: AMP_SYSTEM_IMAGE | |
value: "registry.access.redhat.com/3scale-amp22/system" | |
required: true | |
- name: AMP_BACKEND_IMAGE | |
value: "registry.access.redhat.com/3scale-amp22/backend" | |
required: true | |
- name: AMP_APICAST_IMAGE | |
value: "registry.access.redhat.com/3scale-amp23/apicast-gateway" | |
required: true | |
- name: AMP_ROUTER_IMAGE | |
value: "registry.access.redhat.com/3scale-amp22/wildcard-router" | |
required: true | |
- name: AMP_ZYNC_IMAGE | |
value: "registry.access.redhat.com/3scale-amp22/zync" | |
required: true | |
- 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 | |
- name: MASTER_NAME | |
description: "The root name which Admin UI will be available with -admin suffix." | |
value: "master" | |
required: true | |
- name: MASTER_USER | |
value: master | |
required: true | |
- name: MASTER_PASSWORD | |
required: true | |
generate: expression | |
from: "[a-z0-9]{8}" | |
- name: MASTER_ACCESS_TOKEN | |
required: true | |
generate: expression | |
from: "[a-z0-9]{8}" | |
- name: APICAST_REGISTRY_URL | |
description: "The URL to point to APIcast policies registry management" | |
value: "http://apicast-staging:8090/policies" | |
required: true | |
- name: IMAGESTREAM_TAG_IMPORT_INSECURE | |
description: "Set to true if the server may bypass certificate verification or connect directly over HTTP during image import." | |
required: true | |
value: 'false' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment