From aa8747a984eaf27baac976e71d999d972931a9ad Mon Sep 17 00:00:00 2001 From: Ilkka Tengvall Date: Wed, 1 Apr 2020 10:22:50 +0300 Subject: [PATCH] add ocp production config --- ocp/README.md | 54 +- ocp/production/dc-prod-fevermap-api.yaml | 109 ++++ ocp/production/dc-prod-fevermap-db.yaml | 124 ++++ ocp/production/dc-prod-fevermap-front.yaml | 124 ++++ ocp/production/hpa-prod-api.yaml | 26 + ocp/production/hpa-prod-front.yaml | 26 + ocp/production/job-prod-db-backup.yaml | 81 +++ .../project-prod-fevermap-prod.yaml | 21 + ocp/production/pull-prod-config.sh | 21 + ocp/production/pvc-prod-mariadb.yaml | 26 + ocp/production/route-prod-fevermap-api.yaml | 429 ++++++++++++++ ocp/production/route-prod-fevermap-front.yaml | 429 ++++++++++++++ ocp/production/secret-prod-aws-db-backup.yaml | 23 + ocp/production/secret-prod-fevermap-db.yaml | 46 ++ ocp/production/svc-prod-fevermap-api.yaml | 27 + ocp/production/svc-prod-fevermap-db.yaml | 29 + ocp/production/svc-prod-fevermap-front.yaml | 28 + ocp/production/template-fevermap-runtime.yaml | 546 ++++++++++++++++++ 18 files changed, 2166 insertions(+), 3 deletions(-) create mode 100644 ocp/production/dc-prod-fevermap-api.yaml create mode 100644 ocp/production/dc-prod-fevermap-db.yaml create mode 100644 ocp/production/dc-prod-fevermap-front.yaml create mode 100644 ocp/production/hpa-prod-api.yaml create mode 100644 ocp/production/hpa-prod-front.yaml create mode 100644 ocp/production/job-prod-db-backup.yaml create mode 100644 ocp/production/project-prod-fevermap-prod.yaml create mode 100755 ocp/production/pull-prod-config.sh create mode 100644 ocp/production/pvc-prod-mariadb.yaml create mode 100644 ocp/production/route-prod-fevermap-api.yaml create mode 100644 ocp/production/route-prod-fevermap-front.yaml create mode 100644 ocp/production/secret-prod-aws-db-backup.yaml create mode 100644 ocp/production/secret-prod-fevermap-db.yaml create mode 100644 ocp/production/svc-prod-fevermap-api.yaml create mode 100644 ocp/production/svc-prod-fevermap-db.yaml create mode 100644 ocp/production/svc-prod-fevermap-front.yaml create mode 100644 ocp/production/template-fevermap-runtime.yaml diff --git a/ocp/README.md b/ocp/README.md index d9407fe..0cf18d5 100644 --- a/ocp/README.md +++ b/ocp/README.md @@ -127,6 +127,54 @@ sets the address at boot time of container. # Self healing -It's still to do that we set up limits and monitors for the components for -memory/cpu usage. It would then autoscale application according to set rules. At -any case, if container dies, it will be respawn by kubernetes. +We have set up limits and monitors for the components for memory/cpu usage. It +autoscale application according to set rules. If +container dies, it will be respawn by kubernetes. + +# OpenShift settings + +All OpenShift settings are stored in /ocp directory of this repository. +under OCP we have the following directories: + +## production + +Directory ocp/production contains + +* all yamls from production +* script pull-prod-config.sh to update it from OCP Online +* utility script to patch the production +* template for example + +## staging + +Directory ocp/staging contains + +* all yamls from staging +* script pull-staging-config.sh to update it from OCP Online. +* utility script to patch the production +* template for example + +## containers + +* buildah/docker -files for building the utility containers like the backup one. + +## Security + +Secrets like quay.io push, web certs, backup bucket key are stored encrypted. +Encryption is done by using ansible-vault. There are always more than one person +who holds the ansible vault key. Make sure you **never check in the secrets into +git as plain text!**. An example to encrypt/decrypt a secret, e.g. when SSL certs +are changed: + +``` +ansible-vault decrypt --vault-password-file .vault-pw secret-prod-aws-db-backup.yaml +ansible-vault encrypt --vault-password-file .vault-pw secret-prod-aws-db-backup.yaml +``` + +The following files are encrypted: + +* route-prod-fevermap-api.yaml +* route-prod-fevermap-front.yaml +* secret-prod-aws-db-backup.yaml +* secret-prod-fevermap-db.yaml + diff --git a/ocp/production/dc-prod-fevermap-api.yaml b/ocp/production/dc-prod-fevermap-api.yaml new file mode 100644 index 0000000..b0f44a7 --- /dev/null +++ b/ocp/production/dc-prod-fevermap-api.yaml @@ -0,0 +1,109 @@ +apiVersion: apps.openshift.io/v1 +kind: DeploymentConfig +metadata: + annotations: + app.openshift.io/connects-to: fevermap-db + openshift.io/generated-by: OpenShiftNewApp + creationTimestamp: null + generation: 1 + labels: + app: fevermap + app.kubernetes.io/component: api + app.kubernetes.io/instance: fevermap-api + app.kubernetes.io/name: python + app.kubernetes.io/part-of: fevermap + app.openshift.io/runtime: python + app.openshift.io/runtime-version: "3.6" + application: fevermap + name: fevermap-api + selfLink: /apis/apps.openshift.io/v1/namespaces/fevermap-prod/deploymentconfigs/fevermap-api +spec: + replicas: 2 + revisionHistoryLimit: 5 + selector: + deploymentconfig: fevermap-api + strategy: + activeDeadlineSeconds: 21600 + resources: {} + rollingParams: + intervalSeconds: 1 + maxSurge: 25% + maxUnavailable: 25% + timeoutSeconds: 600 + updatePeriodSeconds: 1 + type: Rolling + template: + metadata: + annotations: + openshift.io/generated-by: OpenShiftNewApp + creationTimestamp: null + labels: + deploymentconfig: fevermap-api + name: ${name}-api + spec: + containers: + - env: + - name: FEVERMAP_API_DATABASE_URI + value: mysql://fevermap:7jKHCnIb3rvhBWuc@fevermap-db/fevermap?charset=utf8mb4 + - name: FLASK_ENV + value: kube + - name: APP_SCRIPT + value: entrypoint.sh + - name: APPDIR + value: /opt/app-root/src + - name: UWSGIPLUGINLINE + image: docker-registry.default.svc:5000/fevermap-staging/fevermap-api@sha256:638f1429eadcc97576a552969e51637238acf932abb2eb5c846a735b620247ea + imagePullPolicy: IfNotPresent + livenessProbe: + failureThreshold: 3 + httpGet: + path: /api/v0/stats + port: 9000 + scheme: HTTP + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 3 + name: fevermap-api + ports: + - containerPort: 9000 + protocol: TCP + readinessProbe: + failureThreshold: 3 + httpGet: + path: /api/v0/stats + port: 9000 + scheme: HTTP + initialDelaySeconds: 5 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 2 + resources: + limits: + memory: 1Gi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 + test: false + triggers: + - imageChangeParams: + automatic: true + containerNames: + - fevermap-api + from: + kind: ImageStreamTag + name: fevermap-api:release + namespace: fevermap-staging + type: ImageChange + - type: ConfigChange +status: + availableReplicas: 0 + latestVersion: 0 + observedGeneration: 0 + replicas: 0 + unavailableReplicas: 0 + updatedReplicas: 0 diff --git a/ocp/production/dc-prod-fevermap-db.yaml b/ocp/production/dc-prod-fevermap-db.yaml new file mode 100644 index 0000000..f58693e --- /dev/null +++ b/ocp/production/dc-prod-fevermap-db.yaml @@ -0,0 +1,124 @@ +apiVersion: apps.openshift.io/v1 +kind: DeploymentConfig +metadata: + annotations: + openshift.io/generated-by: OpenShiftNewApp + template.alpha.openshift.io/wait-for-ready: "true" + creationTimestamp: null + generation: 1 + labels: + app: fevermap + app.kubernetes.io/component: database + app.kubernetes.io/instance: fevermap-db + app.kubernetes.io/name: mariadb + app.kubernetes.io/part-of: fevermap + app.openshift.io/runtime: mariadb + application: fevermap + template: fevermap-mysql-persistent + name: fevermap-db + selfLink: /apis/apps.openshift.io/v1/namespaces/fevermap-prod/deploymentconfigs/fevermap-db +spec: + replicas: 1 + revisionHistoryLimit: 5 + selector: + deploymentconfig: fevermap-db + strategy: + activeDeadlineSeconds: 21600 + recreateParams: + timeoutSeconds: 600 + resources: {} + type: Recreate + template: + metadata: + annotations: + openshift.io/generated-by: OpenShiftNewApp + creationTimestamp: null + labels: + deploymentconfig: fevermap-db + name: fevermap-db + spec: + containers: + - env: + - name: MYSQL_USER + valueFrom: + secretKeyRef: + key: database-user + name: fevermap-db + - name: MYSQL_PASSWORD + valueFrom: + secretKeyRef: + key: database-password + name: fevermap-db + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + key: database-root-password + name: fevermap-db + - name: MYSQL_DATABASE + valueFrom: + secretKeyRef: + key: database-name + name: fevermap-db + image: docker-registry.default.svc:5000/openshift/mariadb@sha256:9b68994d8629ef34cfd68affbc4a7a3122d376cc364035d4a1d1e529b8c661c8 + imagePullPolicy: IfNotPresent + livenessProbe: + failureThreshold: 3 + initialDelaySeconds: 30 + periodSeconds: 10 + successThreshold: 1 + tcpSocket: + port: 3306 + timeoutSeconds: 1 + name: mariadb + ports: + - containerPort: 3306 + protocol: TCP + readinessProbe: + 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' + failureThreshold: 3 + initialDelaySeconds: 5 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + resources: + limits: + memory: 2Gi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /var/lib/mysql/data + name: fevermap-data + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 + volumes: + - name: fevermap-data + persistentVolumeClaim: + claimName: fevermap-mariadb-storage + test: false + triggers: + - imageChangeParams: + automatic: true + containerNames: + - mariadb + from: + kind: ImageStreamTag + name: mariadb:10.2 + namespace: openshift + type: ImageChange + - type: ConfigChange +status: + availableReplicas: 0 + latestVersion: 0 + observedGeneration: 0 + replicas: 0 + unavailableReplicas: 0 + updatedReplicas: 0 diff --git a/ocp/production/dc-prod-fevermap-front.yaml b/ocp/production/dc-prod-fevermap-front.yaml new file mode 100644 index 0000000..f138880 --- /dev/null +++ b/ocp/production/dc-prod-fevermap-front.yaml @@ -0,0 +1,124 @@ +apiVersion: apps.openshift.io/v1 +kind: DeploymentConfig +metadata: + annotations: + openshift.io/generated-by: OpenShiftNewApp + creationTimestamp: null + generation: 1 + labels: + app: fevermap + app.kubernetes.io/component: front + app.kubernetes.io/instance: fevermap-front + app.kubernetes.io/name: nginx + app.kubernetes.io/part-of: fevermap + app.openshift.io/runtime: nginx + app.openshift.io/runtime-version: "1.12" + application: fevermap + name: fevermap-front + selfLink: /apis/apps.openshift.io/v1/namespaces/fevermap-prod/deploymentconfigs/fevermap-front +spec: + replicas: 2 + revisionHistoryLimit: 10 + selector: + deploymentconfig: fevermap-front + strategy: + activeDeadlineSeconds: 21600 + resources: {} + rollingParams: + intervalSeconds: 1 + maxSurge: 25% + maxUnavailable: 25% + timeoutSeconds: 600 + updatePeriodSeconds: 1 + type: Rolling + template: + metadata: + annotations: + openshift.io/generated-by: OpenShiftNewApp + creationTimestamp: null + labels: + deploymentconfig: fevermap-front + spec: + containers: + - image: docker-registry.default.svc:5000/fevermap-staging/fevermap@sha256:75f65757111c352e144bbf0340110f2589e024ee60e84b22e5def698c83d10ed + imagePullPolicy: Always + livenessProbe: + failureThreshold: 3 + httpGet: + path: /window-settings.js + port: 8080 + scheme: HTTP + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 2 + name: fevermap + ports: + - containerPort: 8080 + protocol: TCP + - containerPort: 8443 + protocol: TCP + readinessProbe: + failureThreshold: 3 + httpGet: + path: /window-settings.js + port: 8080 + scheme: HTTP + initialDelaySeconds: 5 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 2 + resources: + limits: + memory: 1Gi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /opt/app-root/src/window-settings.js + name: fevermap-window-settings + readOnly: true + subPath: window-settings.js + - mountPath: /opt/app-root/src/.well-known/acme-challenge/Nxm-iKVCGXj7fzEtykKs2-AhOyZ_L6WUWdPxyM9OYNE + name: challenge-api + readOnly: true + subPath: Nxm-iKVCGXj7fzEtykKs2-AhOyZ_L6WUWdPxyM9OYNE + - mountPath: /opt/app-root/src/.well-known/acme-challenge/EVp7eMI4DrFvFGlo8iqbqyyqXTsCngBoJziGRmbxRiY + name: challenge-app + readOnly: true + subPath: EVp7eMI4DrFvFGlo8iqbqyyqXTsCngBoJziGRmbxRiY + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 + volumes: + - configMap: + defaultMode: 420 + name: fevermap-window-settings + name: fevermap-window-settings + - configMap: + defaultMode: 420 + name: challenge-api + name: challenge-api + - configMap: + defaultMode: 420 + name: challenge-api + name: challenge-app + test: false + triggers: + - imageChangeParams: + automatic: true + containerNames: + - fevermap + from: + kind: ImageStreamTag + name: fevermap:release + namespace: fevermap-staging + type: ImageChange +status: + availableReplicas: 0 + latestVersion: 0 + observedGeneration: 0 + replicas: 0 + unavailableReplicas: 0 + updatedReplicas: 0 diff --git a/ocp/production/hpa-prod-api.yaml b/ocp/production/hpa-prod-api.yaml new file mode 100644 index 0000000..4cf76b0 --- /dev/null +++ b/ocp/production/hpa-prod-api.yaml @@ -0,0 +1,26 @@ +apiVersion: autoscaling/v1 +kind: HorizontalPodAutoscaler +metadata: + creationTimestamp: null + labels: + app: fevermap + app.kubernetes.io/component: api + app.kubernetes.io/instance: fevermap-api + app.kubernetes.io/name: python + app.kubernetes.io/part-of: fevermap + app.openshift.io/runtime: python + app.openshift.io/runtime-version: "3.6" + application: fevermap + name: fevermap-api + selfLink: /apis/autoscaling/v1/namespaces/fevermap-prod/horizontalpodautoscalers/fevermap-api +spec: + maxReplicas: 6 + minReplicas: 2 + scaleTargetRef: + apiVersion: v1 + kind: DeploymentConfig + name: fevermap-api + targetCPUUtilizationPercentage: 50 +status: + currentReplicas: 0 + desiredReplicas: 0 diff --git a/ocp/production/hpa-prod-front.yaml b/ocp/production/hpa-prod-front.yaml new file mode 100644 index 0000000..5bd81da --- /dev/null +++ b/ocp/production/hpa-prod-front.yaml @@ -0,0 +1,26 @@ +apiVersion: autoscaling/v1 +kind: HorizontalPodAutoscaler +metadata: + creationTimestamp: null + labels: + app: fevermap + app.kubernetes.io/component: front + app.kubernetes.io/instance: fevermap-front + app.kubernetes.io/name: nginx + app.kubernetes.io/part-of: fevermap + app.openshift.io/runtime: nginx + app.openshift.io/runtime-version: "1.12" + application: fevermap + name: fevermap-front + selfLink: /apis/autoscaling/v1/namespaces/fevermap-prod/horizontalpodautoscalers/fevermap-front +spec: + maxReplicas: 4 + minReplicas: 2 + scaleTargetRef: + apiVersion: v1 + kind: DeploymentConfig + name: fevermap-front + targetCPUUtilizationPercentage: 50 +status: + currentReplicas: 0 + desiredReplicas: 0 diff --git a/ocp/production/job-prod-db-backup.yaml b/ocp/production/job-prod-db-backup.yaml new file mode 100644 index 0000000..ea7a67f --- /dev/null +++ b/ocp/production/job-prod-db-backup.yaml @@ -0,0 +1,81 @@ +apiVersion: batch/v1 +kind: Job +metadata: + creationTimestamp: null + labels: + controller-uid: 05ce38b1-73de-11ea-bf7a-0645a759894e + job-name: db-backup-1585720800 + parent: db-backup + name: db-backup-1585720800 + ownerReferences: + - apiVersion: batch/v1beta1 + blockOwnerDeletion: true + controller: true + kind: CronJob + name: db-backup + uid: 6262ce50-73dd-11ea-bf7a-0645a759894e + selfLink: /apis/batch/v1/namespaces/fevermap-prod/jobs/db-backup-1585720800 +spec: + backoffLimit: 6 + completions: 1 + parallelism: 1 + selector: + matchLabels: + controller-uid: 05ce38b1-73de-11ea-bf7a-0645a759894e + template: + metadata: + creationTimestamp: null + labels: + controller-uid: 05ce38b1-73de-11ea-bf7a-0645a759894e + job-name: db-backup-1585720800 + parent: db-backup + spec: + containers: + - env: + - name: MYSQL_DATABASE + valueFrom: + secretKeyRef: + key: database-name + name: fevermap-db + - name: MYSQL_USER + valueFrom: + secretKeyRef: + key: database-user + name: fevermap-db + - name: MYSQL_PASSWORD + valueFrom: + secretKeyRef: + key: database-password + name: fevermap-db + - name: AWS_ACCESS_KEY_ID + valueFrom: + secretKeyRef: + key: AWS_ACCESS_KEY + name: aws-db-backup + - name: AWS_SECRET_ACCESS_KEY + valueFrom: + secretKeyRef: + key: AWS_SECRET + name: aws-db-backup + - name: AWS_S3_BUCKET + valueFrom: + secretKeyRef: + key: AWS_S3_BUCKET + name: aws-db-backup + - name: AWS_S3_REGION + valueFrom: + secretKeyRef: + key: AWS_S3_REGION + name: aws-db-backup + image: quay.io/fevermap/db-backup-job:latest + imagePullPolicy: Always + name: db-backup + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: Never + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 +status: {} diff --git a/ocp/production/project-prod-fevermap-prod.yaml b/ocp/production/project-prod-fevermap-prod.yaml new file mode 100644 index 0000000..77a57d9 --- /dev/null +++ b/ocp/production/project-prod-fevermap-prod.yaml @@ -0,0 +1,21 @@ +apiVersion: project.openshift.io/v1 +kind: Project +metadata: + annotations: + openshift.io/description: "" + openshift.io/display-name: Fevermap Production + openshift.io/plan-type: OpenshiftOnlinePaid + openshift.io/requester: tahonen@redhat.com + openshift.io/sa.scc.mcs: s0:c352,c84 + openshift.io/sa.scc.supplemental-groups: 1123720000/10000 + openshift.io/sa.scc.uid-range: 1123720000/10000 + creationTimestamp: "2020-03-25T07:31:00Z" + name: fevermap-prod + resourceVersion: "627928535" + selfLink: /apis/project.openshift.io/v1/projects/fevermap-prod + uid: 932c5d3f-6e6a-11ea-bf7a-0645a759894e +spec: + finalizers: + - kubernetes +status: + phase: Active diff --git a/ocp/production/pull-prod-config.sh b/ocp/production/pull-prod-config.sh new file mode 100755 index 0000000..2dea3a0 --- /dev/null +++ b/ocp/production/pull-prod-config.sh @@ -0,0 +1,21 @@ +# Before running this script, ensure you have done: +# oc login +# oc project fevermap-prod +# and make sure you DON'T EVER PUSH THE SECRETS IN PLAINTEXT into git! + +backup_job_name=$(oc get jobs |awk '/^db-backup/{print $1}') +oc get dc -o yaml --export fevermap-front > dc-prod-fevermap-front.yaml +oc get dc -o yaml --export fevermap-api > dc-prod-fevermap-api.yaml +oc get dc -o yaml --export fevermap-db > dc-prod-fevermap-db.yaml +oc get hpa -o yaml --export fevermap-api > hpa-prod-api.yaml +oc get hpa -o yaml --export fevermap-front > hpa-prod-front.yaml +oc get job -o yaml --export ${backup_job_name} > job-prod-db-backup.yaml +oc get project -o yaml fevermap-prod > project-prod-fevermap-prod.yaml +oc get pvc -o yaml --export fevermap-mariadb-storage > pvc-prod-mariadb.yaml +oc get route -o yaml --export fevermap-api > route-prod-fevermap-api.yaml +oc get route -o yaml --export fevermap-app > route-prod-fevermap-front.yaml +oc get secret -o yaml --export aws-db-backup > secret-prod-aws-db-backup.yaml +oc get secret -o yaml --export fevermap-db > secret-prod-fevermap-db.yaml +oc get svc -o yaml --export fevermap-front > svc-prod-fevermap-front.yaml +oc get svc -o yaml --export fevermap-api > svc-prod-fevermap-api.yaml +oc get svc -o yaml --export fevermap-db > svc-prod-fevermap-db.yaml diff --git a/ocp/production/pvc-prod-mariadb.yaml b/ocp/production/pvc-prod-mariadb.yaml new file mode 100644 index 0000000..ad0c9a5 --- /dev/null +++ b/ocp/production/pvc-prod-mariadb.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + annotations: + openshift.io/generated-by: OpenShiftNewApp + pv.kubernetes.io/bind-completed: "yes" + pv.kubernetes.io/bound-by-controller: "yes" + volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/aws-ebs + creationTimestamp: null + finalizers: + - kubernetes.io/pvc-protection + labels: + app: fevermap-mysql-runtime + application: fevermap + template: fevermap-mysql-persistent + name: fevermap-mariadb-storage + selfLink: /api/v1/namespaces/fevermap-prod/persistentvolumeclaims/fevermap-mariadb-storage +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: gp2-encrypted + volumeName: pvc-e002f680-7276-11ea-bf7a-0645a759894e +status: {} diff --git a/ocp/production/route-prod-fevermap-api.yaml b/ocp/production/route-prod-fevermap-api.yaml new file mode 100644 index 0000000..238ee8f --- /dev/null +++ b/ocp/production/route-prod-fevermap-api.yaml @@ -0,0 +1,429 @@ +$ANSIBLE_VAULT;1.1;AES256 +64653732343432663361313035316631633363336164643330346133326135333333343163663539 +6433613636646132623865613634616535323938346231310a366630656231383139386562316166 +64353833353633366633373934646365666663353432633830623538366638396231303938643964 +6539663037333931350a633132363833326563623330633738393933303731643833303961653132 +35383838316262333163393138633866376663653933656239326332633932653731653933366537 +62353866636437636164636562636163623166376663303531616439366637326537353039373930 +64623561326132663130356332396136343762666166333931396135393532623563323534623435 +37346333626537663738343038393861303737393639646266343833323862396262656334626435 +38633237333037393863623435656133336333316166333762663635333234373562386664656138 +63333963653230616531666265346134343463633038663265346463373331396436373339666631 +37666663343331383233616437303130626537353335653838326561346337303463353130636539 +65613864366664376162623539316462363932663532336133303965636461383936396161646365 +37336661353832643730613737626232353664356539326332346266653934313331343230646236 +32396630356566663234653939393637633566353666303330636235373639363166336538346437 +39303866623066393537306235333536323732333666326665376362633134346232646235353733 +39373835373730316238323639313335313338323463616139343336633964666165383262626136 +66316130363064646639366361373339666630313531363932396637356362356135363766633262 +35383234363162336232323263353139396130663032363834623063626133316133616631666534 +62373539613038343261366232666532626133313831666165663433326165343535633833633333 +63373438626232346538363361363131303664396136663138656165333734353534353762623039 +38363830613737666330313536656630656635343766363832633565326430313939313834613736 +30326534366132326335656236366233613931376361313161626636373965623663653066333964 +64383331663630333262306539623931663733636264613666396262666132373533366631326337 +38376430313566373733336565643638616339666465393266383937656361646136313939376239 +38623338666462623435613431333033333233313663313033383766373862663737306632346639 +33343030313461366464663865616439353339353231616566306261643639653761363738353962 +37336530376564646635353561393336643937616532363534326139633131393235363835393335 +64643234333561396663306135306433333336626466633962323762326138623335643435386162 +62633539663061326266643261333138393837663865626265333235633231376234336661646162 +33383233383261633132633762353339623735636138353130356266353064633333643438616533 +31636663356362393465313435636431303339396639646532363130363931306434633234343062 +39383432353838626362386231313332623338343434326462326530643166396462623039306563 +35303863633232636430613437366461626461333034353134393431653337386433353464626434 +64323232653430333737303566616361623338306635643261313138666235363039383030316266 +33623861613334323038343962316233336162393362636331633734623738353064383137633635 +33373930613935653966373666323335363234666636343632396530393133666362346330666537 +37333363353162356633316232373365383834666364383431303663613030386166343637626337 +31656230356165646130663134313132623465623230333531303964303237326630633931396461 +37613964643965386337653837353062616566393232336336386432333363346265643263626230 +36383734353139316165636565636438656461373461336631663530643534643639323861356263 +63383334636161313564323966613434383761643963646334353361396462396162626337393266 +61616466346233313135626636363736636666663566666138646339323138613565346534373437 +63663335303165303463323336643163343765353565323037363134616439393134336639363535 +61373963393731613565643035653131623332363764616538373930613962333530646234366533 +36313233633034313130633334303236623231356262616565316235366364343137376536303062 +32646165383662303464646639366531653939626633366134333533303333666633663561633034 +30376365356334366366326438306635316466623433363032653632373965323639393332353737 +37663332306135303234393763646232396335333439316661303733616130323866616531313531 +65366133353739646234613036626565323337623063353630363263313666346130316262303863 +62376536323836336337393531373839303935396537316536666439353539346664653237373538 +39393034363566656231326463323638636438363436376565373931303839393062626535613436 +32316530616132653837666230363835373533393236623131623536666663353830626237653536 +37393539313036626263336536303231313363383838313839386361346466306138376262333861 +62306666616465613331663432643735323632633036313536326638366531363939313435313763 +38633364613664373838363433363961353530636232396364306363376132623433653536613033 +64383765623762663431633462363439383537353930363537383339393733623032373234643334 +33326533663035646436366333316632366161336534383438323130353730626164616333306265 +36373137306136376538343639356634653361393863663437306431366332323838653238336464 +39373230656162666264316364346137616337343936326262346161313331353566333333633437 +34306533356536643466336236336136336663626163313761353732353966333166343537303235 +65343761343135383637326235623731306135616135383734623934623636306363313032646665 +64653338616532633962333963343866323564333431636363316230333839633762363465323765 +62373463663765306135653061646437656635653535613238373064316433353931633064313835 +32616332323531646365333365383437326238303439326634323636313365653834663261653462 +38333032333363623239386437396635373436316365343935646430616637613432343038626362 +66646663626438356539323935363664623136643865346666363134303062393263333939363435 +30333538626664623465656335396232623535623034326263366139306133666631633466303134 +33386337383762383462663565383663626465356631363932353232353062656538666262306465 +63316130343034336663336533386561323463323839656362666665623330323364313938636534 +62666135643761376531333133333733386636356663343630373261663265626162376561346262 +31623936343737333937346438333165373631383762646333646532353236353365613036363131 +36613431656638363761373534323339323230636331393065376434373462383933656333656538 +64616239333931663331333232313032313565643933323665343162313561343536366337636236 +37346333363231636433636161396436376361626236646430353162343036376530343937636236 +37666136303132333434666630373236316466383032333037366238363330373331386237306462 +30383532306538333465393364656463633138313436663866646135366234313835396466313734 +38303962616434613765656439306664313135653833643035353166616330653065326566623133 +61323135643761336531366230656138666331663539653537373335323436623537383134336466 +39666662396534653162383431303539376666383939363139646631376633626231366366383833 +32653131366161353862643537643531313639386235316638653736626436633531366535323962 +64306630343761343463383630393535383234343732306261393466656539623631373763643561 +30383337646434613765323533303834343434653335326564363135643533323933333765353035 +63366332346561346536333139663236623736383836326237313364646230616439396532373336 +39373530356232636165326531326563363564666631616237323338633363393336306137626564 +32623738393461643763313733313165333165626431663532323432666430356465663734373664 +34363230366663613032396463343262383033643031616565336266333030616234373265373361 +66643033653363643032313866366661343330363034396165363539366237616431666632383830 +63306163336361623865333062616338633866363063313339623932613366396635613636616365 +36313239396666366164616636633962633339383834326662373332616464653939616639653239 +62393834323433366562303664373130316464313061356239383637323066376439373365373761 +66656462363962616434353134376665646233333331303666656131663736363039613430366639 +63323433366235333230623336653139373063386430366261356666323331656237306632323136 +35643134373161373138633865663335666666313834643632336438353938646433383966643863 +32623331643931303862383535643562396636613362626461326564623065623039393838313861 +64363538356235346161343033613535646332613661323066333232386236613264623163373062 +32333866646562663833633930343162353034616532383530666636616134393465396535666531 +36643165376330303337303262313263393165376532613965303065326262336131373131666436 +63396339373564646462313738643035623061656566653233383462613462326562323939366665 +65343562336533363030636462383937356264396365356165643562633331623864373566383465 +37393034653932303937626436623363323637306435633833356366333864643234363438336263 +31303530643535663266333631353839656566356635333137636331393935386266643966363434 +36326532373965623933643864313133386537343564373333663638313734333631333066666238 +31383935663437663537316338353832653533643333383166386436343939626366343134646130 +39363761643561666335386431363235306635653036376231633939323562653436396566336533 +65396235643830623665656137363765326661623862383630333632363933633338633033316561 +61316230313633326635363939623332663837633964376431343834346165663333646565353065 +38363334313238363861313961363338306361386266386561656333626638653363643637616133 +64633438623032383836316339623436363536623363656134333265353465336164653165333937 +30353934343835626233303962313363316662666163653966376438616532656139376531346466 +65656561643865303765383332383432313332666462396365363564646366616163363530393335 +62656132663762313163653330316164366561373265333530366163333035313464353862623035 +63316436363463346335376133643630613865336266333264666262353737616438353864323363 +61386536633861666136646439333431666166656465316536306531616465356363383537306536 +38616431316163323164663963376164626663326436643065643463653737393836393765616663 +30333637633361316338353438356237313530383962623932306266333539383830326235326336 +30633039303734623132323364356431613362336138326364353939646162613631633137373161 +66353335633330366564393561656338306561393832373562323832623336343466343430323963 +30303138666166323763646265356234663263386332656436643036373161366236663832323638 +63303663653432653137353635616635356439666334653936616436633432663130363332343636 +33636231656438306465353635653162373864653537333963616636616364376561336530313866 +38646437643438653631643663366163663964373737613766623365353461326331373533386161 +39343765373065333339326338653132636162373938633239316234666239613231653963323635 +36656436356636323234393562356430336339343030363036616162656662356233336661316432 +34633261616439343536346564333435303839353130303933633630306463636339373363316266 +36353865393239613066643135633934653533306563303266346131306362396333313465386132 +62623638346535393465353362623133366264396138623734326334643738613331386466323636 +66393061363634626338366565623138386632653461303863623264666165303464656635373138 +36376337316663633331323437306635646665616363376535353739633531356335613866316231 +34333539636266396536393861366136323261363963646363353931633164323438323665356232 +64636235356532363530663039366466326233303330643730663665303530326561663239373563 +30366132663466613438623063373633656137383134366635373935313537326433353166643936 +30653539326536343062666361376139343564313132663461376135336431396630336634663137 +39363862383464383466383037373865373537636361623663656238356561656166373932333535 +30663063656366653564346164336565386632316366643136346138316331363562376138343239 +65636236316636303437623534613631313831336236623639346339626436393661393866386361 +31626361646565663666396532383638623435633063393735373438373237363532356563316466 +64333561313066326666633839306638343132613837656165616336626563663666356330373935 +61306437653132666334343437323265653439326665616233363934663065663361653165386531 +66613536633562613931633766666162383162396266353335396264393731643664663432303930 +65646133636466633661613131366633633738383034623839343163396135333866633534303834 +62616131613139306430313538363630313666653462336165356561656164386163613164613762 +38353632626461323665636637383461363832356237353262306564636632333538663939643732 +32356563383762383835666237393366633533663062613165633835306133313431663861373734 +65393461346661333932643261666665373362666439326230636138303034366233376231373763 +63616332343639353562323761616537396666663938636164643133306437393734393530313063 +36326236646565623731313238303061376466646331373835666632346464653736366330323436 +37336339636466613035373765383366336634373835613035336565623234656663393232646361 +36636361353061326565303865393235623935326436396230386466313737643565306135663836 +32386632393139396161616138336136383865616663393436393937303233396532313065666635 +34623736343964633939353662643463306661396464643730353533383334646439663933313464 +66346235396463653438646361343236376461666635333131353063633335343465323265393732 +62633732383336326666643761616562616234373537323162653232306332633035306337316534 +34646466323962356630386363396534366437333932396334363530326138376636386338663036 +35303535313463626637316237626561343766313462383338303030313130303735323638393338 +65643365383561323263323231613730366664633931383334636536353864326335663730383865 +65623765313365353631373033666661396664623032393634363434313333303265326236313633 +38336235323235633366666237346135383036393933353966306239316330356462346566356639 +30343436343465386237313430633930653663646165366530383663666538353263613237396633 +61616136303730316535326130643036656437613565393838363865613061383963383131333932 +65383764313130353037653631313732356433383233386663343365623963653230303133643634 +66666336666561373631373531396631386130376638313133646563343735326434663265393232 +34373133373835306535633233653937653139663861613133336236373066383934326164346664 +32313739613435666164653266323762343065316634616261643637333965386434616166663338 +34333938613266626466303836303132643837633838353339363934323830336332313530373637 +34303539393461373931373839656431396437363034616337346634343665343132393032613261 +38623331623839343934343232303765333962636362386564613263386662626130333065623364 +35316336653263653161646236663538346564313936616262656639633834613035643962326435 +32343035643331343566323762623461626133366565633231623931386536633739633537633261 +37626237353939366535386665346631353433666238633931643932303362363537656439633231 +30326630303335373561383133656230353434303630336638323534653764663837303865353763 +63323864333231336266666232346633343532313839623938336666333763636435303135636539 +64653639323839366464623462313638393931386362323031376663616565353038633038373961 +39646561353563613739343337646466353737643664393234666235656331613965343563663464 +31633330623964356530653130393761646632646333363131643036646531653863363465636337 +39313837353162303461653165383764373931363138353933313265333638373033313166383633 +30383031336436643236363038396435333739633631383231316663376531363135316261346537 +32653339323130633834666333336535383661313962326537386132376634393564316439326565 +38666666323232626434653063386133643666313031326363623863616161333936303262363135 +32373662623866386663613431373238353931383865653837653031373865336336653639656565 +66346337363535383138366432666161343561343433666161666261396635613162383266623835 +35393539666239666664643565363936666632363663363461366361396637343534366465666565 +34626430336666633539663761343339393534376362366538616466353036333532316431326231 +65633766663035653863353063323838623533353135333963656162626365353231373335633962 +37666532393639376430353735386163376438356362376232383632366330323565353737386362 +39323035636365613636626134333231656466353830643264366166313663633165616463616238 +64306330373235363532636237343230393762666633363861366665316137383664656137626464 +39313061313761626232613366616566346539643136363463663137626634663938326662356566 +66386632646533613665653332376437663836323463363638616531333031626136393331323732 +31643466306437623562306462383634616363643863336333616663376634646232376637363937 +64613436376239363234313536656465613130643964656666363435333735393435623334616266 +30633463356437303431633262316263313261643164356564383432376533386338363536613561 +35373863653438393335666538373165633637366430386637633066316439633733326337393136 +30313264343236303030633664613036383734356164363637643532663264613965663138376235 +65626530326431633637346438383362363632363138313538343332666363333037316137393039 +38363333326561343764316264353933316233323832643562386635393630623665653534623836 +61626636626433643061333562366266653532363766363233383762353761623030623232373738 +38333338343639313433396537386238316638336637353363313539386239663132316335623532 +31343639386133373333366665613339643662346335303165393837336539623639393231303636 +35626465316237396664376238383533353938343337613261333631363663336536383036313135 +30373331363666376334623664653566333030613131666465303135393930623934373235636264 +33666237663331633633653833623234636335666563333437323332346338386637653261633365 +38623339356632393364303566633732356463336234373339356631653664356532616436623439 +34386365363433663631623234633738633465616262306233383736343464306265373366393831 +62313962623135363565626335666233656164363064393964613237323331313531623763356536 +63646264373237373739373232666663353766313564393061313633666336376563323137663765 +62353062386133383632663439326333343632326235643761323538313431366361326130623038 +36333339613330316438623536366438363762366439343436653130363437353464303939653039 +66666234383734393862376664316238303035356135396434613237383335616261656265353261 +63656563663232356332653931633535303437383331313538363238306262623034633462643136 +34653063336230643436383930383233666665656466376638643532376232313030376239646162 +38373035313633326664376464303964363563353032323661656433623366323036666161616335 +30316237313530363661316232343135336434343262303736373732373862326335313937386166 +39643934613330316437393339663730623464633636613865323066333461393938363437303861 +30313230313337323537383736383961396230386333363064663164353334353131373835353763 +31376333303735393163353835396333346132373338333265333061653438326130663236346631 +33623438333334353363306437353432363237303035376564353265653631656431353461613535 +34613736396434633864323263366138356565346537613135343635663165623639393666323633 +39626364616463643065646662656131396233386131393839633031333065363330373165393364 +39313735633232333966383861623838303166356435636632383532663337386637363434383937 +35306663643633343735623939353431323237633338633630663861303530653766306432326364 +61666461643262363536363137353931613733346332353634326562303039656332363063656264 +36323239653364393130313436616234626465623263636232373937386635303136663765336363 +62303263326365626335306335336365616533313363626364333535363634643735313536343638 +62656639663233653939613430396332333138353736373530643731303864346430653066366464 +63656438373261376230313139396531306536386366303937323737653537623937383965366238 +62366466326165346136623630323738653638306665396433663132366536393230346532666634 +32613461323130346430653266383633363665616538623132653031313836306161323430393331 +31363030326438383663366337383766363030356363393265333062376230363231386638636530 +64663033356266656438393466633639393731643163346332666365663964633037663530386336 +37346362326237363965636161336664333533396333666232626537346138373531393462306663 +62623166393863303963343638376562353262623639333965306231623532616437636433643936 +34306161656266653966333266653032393266363735393461336332356231303461306335373234 +39333266373663333939363165636433623166643437623833346537633763626162363432383037 +32646366346631323330616531373864623563646535323135313830616531613037623239373336 +36396638633065653738353038656437623066653334636566363063623864323630643764323736 +36636363623962393633393465333533633832343262653038393534383331373839393266643439 +34363832343131343433343066333538346130633630326362316636313965643531336464303130 +64643330373137656664386266363062303738663164336139633036656439303735383537633133 +32636431316631353562613266626130303563383861313666613263383532663764383663383039 +66613737666132346566353263383638626239656436633138373037343265386563626539346233 +30633361613839373230356634356534343131636264333439323031636438306539306265666639 +62636363346539386536393235393939616635323965363839626533333266623966623838383832 +39386236343738386336363665326536306338666238386536353832666164383938356264373364 +61643461323630373735383137363034646163323031326339346466666462333464646535343936 +62623736336532383039613030643934633061333062353166633339383962613766323336353864 +63316562633463366532313833306237363965623365613030653633366635316465336133306130 +38643832383566343935613035373666363163353133626536396663303438353539663866363331 +32636631356234326466396636653665636333363664353736623736646364373732323132306538 +30343131333966666130333664333039366564323665343230303164643430613935643166646139 +66316433306562353639636537653365636134646138613766383065636230643265656634333166 +61666636393330663464396663303839663962653536383839343665383236393436366536643435 +65626138373330363365373162653262653236646563333439336665623764393635616138663733 +34663265346439396436383462316535313434383665343839346561383864386633353562636436 +33383032356562333739303361613633303130393866626539326635666430663233313361303434 +38643066373063653131393763393066383131653236393130393937356430303762653938666665 +35346534636161313037626639306231306163643466643137663432656162313631393434623630 +34366632646131613233343962353766353562356364373661633736366434333832326665626561 +64643063363235323663323633306635383834393563353830633564383165653539343763643938 +32366364386238353662626263323137666230363732343235386436363335633730366333383039 +61623265653135313264316164613130376338626562373535316437653264363535623733366636 +65663038376133386663333033343965363039316139366235313562636466373066323866333237 +62656466613931333861383231623337356132353764646463306136666639323835633932623737 +62616137633962373430396138653237363738346261396364333566393766376237353338613635 +66616163633634633639353938396366643866333539353562386334336533353432646234306263 +36646661353839656530636338356630363139306132613139623134393834646264383966393966 +36306536333963306161353437633637383632643162366162373434393730353935646365373962 +33626632303065643661393430643034353866346662313166373961346236616437333339323234 +35316137373533616638373432623464386365316661356363333534353632356635336464656236 +39316133373432303736623631383564643232336237366234353330633531303133646463326661 +39363662333665663163623533363062323338653161333466373465393162373138306265653230 +32356637386432373739633935646333383937613333656130646164343939393239653336346461 +63363034326163613132616163313265373434626131653634633436636636356431643165393134 +36383161396335303032373661633032346165643030613338636233396331656161313836643466 +66343062343862306631376565643966333563366138363930396232653537626464386565643132 +32363064366635633233633931313363383130633731653130643733653239336339303839313165 +37643934316131656664613762386338636532653162626262373234356639313562303261626234 +34663835373864393866316462383438643332333434356237346332306264653934626463366163 +34646234326164326238326236616430346666346435633863656239623433323065623430643966 +32353830316532306330633765636231653464666331316435353437636464666638653566343364 +64343364643461333832393832303635336435363536646639316139616334346631393937333132 +31373332353836623431623664363862396166626332633535323134643836386265653536636132 +35343134363366326162303765636638326166383330343933393836363334363865323039353533 +61383131313562653639323037663265656138623266313039386534353737636430373330353861 +62623830346436653030626137633261633632393737363535353036306432623634643130373238 +61653033343037636433316130376566666331323835303939666262663437346261333166633433 +35663964343763636633373361656264656166633038306538336662376463386365363531303062 +66313636303261636133346533663533346430343138343163633039343737323565633333623933 +61653061393438666563363937353637316262633064616334663462373433623231336636613439 +30313434633730393839616539343165646237643666333037306231346633356530656638363962 +31366262316330653730353664333637373634353739613737333336353233653565303431316532 +38376362376139323963326434396632356636363532306631653139633561623135616133393861 +65653139626163303630616635353562343863346262613737643533323036346165643064333036 +32653430303438333039316265633662313331303031313539643030316234313330333737363363 +62616162333835373234653164303563643866383232663762366164346439643065353539636666 +32313038636334636663366338303964373334363237353630373732373233303933646162663736 +39303361613130316365643535366237353764373465333832616131616462623136363238383438 +38376232663564343965373230373339303564623936656437313563656533623735343834376238 +34313132316338336166346266313533393832386430393263343761653262653336633866323735 +39363531656661376136636530313130666664303065303664383865393263663463326538666266 +64393335336639363739373331336631666437336665663837646638666232316231373466313661 +66633832303434383632303737346133333561356565313633323230373632356431623937393764 +36633232643661336539306463633633633837633563636631623661363933636164663662396238 +35303131646136666433376539386465363738616230636530616535363866653439643739303238 +32646135376561356264376533353636393333666162383264623435613438613366636535636531 +65396435346338353236383834343336666466333230613865666131393935643136373336633762 +33336363316266653363323965393862383838336532663237333339653130373836363935343931 +38626133303861653737303839616565343164373536643134623833336365313337313237346534 +63366636646431633232656661393835343936323733333930623832316465356138383464363662 +36613736383630353839646461353031343437653139353162653130393130616161366431313138 +63346161373034656366383230353965303036663436623862643962373964663230663564666464 +39396633316131333562376233316465383761373535663661376533646130666261343734353665 +31316438613361643338333663643537326133333333626166376130663663393062353563393231 +35303533646663623439616164316632356333646333316135323339396433336165386631613339 +66656561343538613863613664373238323836623433333031323232306565666662663736646463 +34623730663766636636633636383032346162326661623362346235666234336230663636353830 +33643038306563313231356632383839303039303665333665616437626265653063386437636238 +38656332356532613331316533383633383239626335386531613336343435383063343463336465 +38343034353566386432363335393134656335316637346530613136386466646436376665393834 +36326132366362653630346462396430373234373935353137383030613230363865333937343139 +32393435363666353330366565373539383766343439643765316538633535373964323661623566 +63336466663365613634373030316134613831373231346135383433336635663834666233363533 +61633833626161353466323433666632666662386639373634346438343666313331343664343133 +65306331376332636436656634643934623833323834313431623362636530353433373166353066 +38373965653638333336633865313338376139653731386364393833653032323636323665396134 +66656264373464386163306239343738313938363734333265303163666266326530316330363232 +64343066383664663830336261366532323137626231613330386362666561336262356439656261 +30356630386561366233373434363032363434313262656162313163373230666161613538626331 +37363737656137663633653566346161666463363337616635366530666262303962653066656339 +31616434613538326330383966356335663265346630356362623237376635396333306162383965 +37376138666266653136326439343535356265333966316135636461316637653532613133653831 +66633762363965303464646365363964373562616435356363346436353364646538333334653361 +37306366356432393232613337613633396233623831353733383637653333646263373363616433 +64353366343264633534333462633066613334626635626431633038663433396133316530343861 +30666161623134373930613738323230343861386263616330626262333366363135316532653334 +64653732333732343231336163393538663766636236643761323336303430356539663134376366 +65356435313631646463343362343665316132353362393835333134343237633339346464393032 +35346131373931386338303735363637393465353232613230623435613461336537376538396463 +64663162653036383362653732616166336631646130646566376636376364306363333035376465 +30636234386538636231303765353935363438316631656631383630613238643837353738393963 +33663539383061633032623966356362373834393361333261633833626536646434303136336434 +64643234653432656330353337323565336433316238303365626434383264373765363939613261 +31653261636263623336633361663363616336333835333730656438376566326431373537653464 +35623336663939353036623030643634613437313162343464653666633439393832333637626462 +30626232393333353935316438376263393163643465383038396636313835643861613536313833 +33663738326634316336303663653135656534633164613737303034623034653766643565623962 +33313663333238653039303239643166313732353334646536646130626234376561613565373962 +30346532323830653061613261653131666166353730316332383437303431643237346438643937 +39346639333230363264383965306434363836383735383637386662626665653933333663343739 +37323534326239373930383261613735613362656238303939383032323739333235656337396439 +61646565653661346164373933383865323336356166343962623136313131376437653865323033 +62613830346462323663636461303035666234373636386431643132393166343635656630646564 +33313832353639656265633035333066653435613835393961323236353133353733656134323433 +32653532636130653735356662373134356535343537366431646239373839353261396330396430 +33326161386632653437656633373261356330616639313962623964613065373062376338663532 +65623461326531396162376664623164366332643563383464363762633337376334393261653563 +61633332623130353036303932663236656630613461663765663535393835376430613063313363 +65663864376666383839313134643863353732396236656634626539616665333937643836393666 +37393665373434386130393831613537356433633565353965663961363032636339626436626433 +36623439613234666538646635373739353864633561643961366232306435313662383061323332 +31666437653261643439623962316162623130363436346166376338333762356636333265656163 +32306534643036363231643062653663636532656130376636383134643837373534363633633636 +31646438303032363263363161343336633864353931313532613934363630613739613263343465 +66383065353965393731643064373161346135663034373535323765353164633061353164393362 +30373139663737316438313566323230623365386536623662653730383432376337396532623536 +66666463623266643962356262623066623739366630663936666132303831616238653335363630 +34356135613064656132363162326463366465396464376563663062363463666137303661343866 +65333231306232666161383162663036376130626335353932643839383339343262333839353163 +32653332363339393962383461333930353761366638653832633434353931326139633562636632 +61356164353136353561633431666266633838353463396330636132633031316261323130646232 +30643431633264653462393532313632636433323336343139306462666636626263376232303162 +33633930356266326163383261666566663333363163333962343133376263353436396232623564 +64613663366331336364376335666435663565313534366564656639373461336137613637623837 +62366361616239343033333034353237313239316632326438326663636237613531303937326232 +62343065623830303533396333326466623666386235636634386532323834383439346566356165 +34303334626236313366363731633931633363306230623062306133613936373263346534306632 +31613164306634633336393533396566316263306437356131626139373732333131363964313531 +30643365303463663266633265373266623134393030616530316136346437373637333633323835 +30633435396135303036343063343465643132653430643066333434376562323831633961643932 +62323236646639313637313362656537396662353431363238626233326463333638366333393264 +66666639343862666536346533373666336636323532613734643239363665646634336339343934 +31353337613039343138323165336631613136306563303638326534366238356564633535313265 +37643761376339383135356437336530326566626331643237323862366565343937336330363062 +63666666323137333430623538386632633433366265633764616564333835336363613064363837 +35626236326235306238316665626463363730653539353731653964313331363264373336323465 +61396638313565343265366232613332353537383661616334643836316139626165636161393563 +31386638323261346535646139383534313664353565346630333731306634623961373336313930 +62336366663361633466386239383962643061333066333565656430626662393037313935393437 +38616639313763366361313834613966376662363466363133666138636134393165663863666230 +66346138386333323266623634336534336462346631633862663532383062663736393434373062 +33333930303332663232386438616666316262633037643932636261643431383264616434663764 +35333435616337363138656665303864613863356532373863376632626338623066653731613461 +32343263363863353763626233393362313038616362643664303163313338356330656263336266 +65666338313465646264626133303361353765633630333764643635303361373934336666353838 +30323466373835666130613530376566656234356130356332626136613337663631376339653161 +35643133356135343937353866393933356231623239663136373937393535303237613136346466 +39623963323539356537333761653934643735636666356562376335363837616235303533663366 +32316531623666356637653939313535623836353662643861633338336465306561343733343436 +32653363336437663538333366363634393363656131653563343438613466663630353738623135 +63326137633434316332666239383637323432373438663931633937663065366439376462343466 +32633830626464363535393562656436396535316131653561633030633462303533613139613834 +38646534303134383736396639363338643735393761303438633262346561323164393632383761 +39663135663062616237393738336362303431643339613237653265316433623661326438633865 +62356462343334623764653136643966333439346535316631353337346464313138633161303362 +37346439316438343363343032386464356637353137376130343139643764373536383661646661 +34336238306361636364623230343461316430386530666531353065653030303836623735653262 +64366432393835616432306133356664646534616637326166383065336537663062653631653839 +63626639653465306365613738653037633661383936373238343565356332306131653539333563 +34346563333237636264666237353831386265316336636235303938623634386633383739343665 +31333736353032373039303865313334366432663830656363633337366132383934623233656530 +62373538353631333132363634313738396133613630336237656439343765653338666361333831 +36363461316130373365353262373162303431373437663732343164323737396336356330316532 +63313239393566626430393031336138643264336331333136343864386236393535323064646232 +36613862623938396133363634626638636666363836376432383830666338653831353831383762 +31623130306431386434386436356233303939363864336239383835653135316464376663356631 +35623235336261353564616166656662613132393862353432666133353661663135363235343865 +33636135366136346232393430316636653136613065663730313432663538616563326638343635 +35646264393863346133643439346432343336316330653134343863346139376131623566646333 +32363530356235353464323031353264633161666363346562623132393962646332393239663638 +38383561363634333530366238353239643635393539316338333839363032653138616362666664 +64363333373663336133643233353031656461333462663339616536306134396632643366313437 +34333135633639303363353061376462626631366361333135363130383066653062353434636239 +63356136306464643138396633643264393031616466623264343032653063373165653264323538 +65383131663034313430353663666364616133383637376338633630306133633762623635383438 +32383964626535383635333932643632663961393330633237656162356239316334653561373465 +30653262626562376335336332376666323630373736616139333165373437653935363834383363 +34336233663466323665343632643263626235653739323165343733663165306365316133306431 +38646663333337646465666537633139323033626438373731363239306363643339346334306132 +34333333333861663762 diff --git a/ocp/production/route-prod-fevermap-front.yaml b/ocp/production/route-prod-fevermap-front.yaml new file mode 100644 index 0000000..1fbe8e0 --- /dev/null +++ b/ocp/production/route-prod-fevermap-front.yaml @@ -0,0 +1,429 @@ +$ANSIBLE_VAULT;1.1;AES256 +33343738393835373538626433393632653535656536363064303261303431366661616139333730 +6331316532613832336363343737656465313132303932300a643935656435396461383066613432 +39326638633164643239613561353230313335353632616239363437663461663432356463353135 +3030313164623234320a303537323961303032363565313761663664366364646466653966633637 +30643138636265353536646231313339633835363939316165316433653835386433323132646566 +39376332383537386336346237616565623534633961623830643937383561313037346265363135 +63366566613338616463653134653739356630393039316666356232323931613434363337373962 +30626639386564363463643033323261643162366131383161343462633665663438356361313461 +32396561363834626666623032363031353963396337616463333034366664306232363061653663 +33393334336237346462613061386463326338313361653661333935343266376530326639313832 +32653437643736663437356565336366383339323539363534356334616232666337663536306136 +62646261313362303664353533383931643232353933303834376164656532633464613135623133 +33343839356139393038383834363634303431366334393032373932613534656138666262663931 +62616666656538363438653865663564313633313362343761366663393063623766323865326338 +39396235646632663831346634633232363462613133376262346365306536386631666636386363 +32306637646533613961626235316130306363636235616164363731323664326564643936333263 +66343135636630343461363030623231636431356231333863653737373135643831373436626165 +37383536643937613130323863343132653734666532383738623966373737393136336662323033 +36363938306236613365653838333735366137663531666262326363356165336234613461383339 +63646361333738663137346434373633656334343264323462613938363262626365346534646336 +31366261633732643761323465353363666264356639353732343438373965373963353263386635 +66306431666363643531643135613663623064346534636165613166636435643436666230633063 +64346437343832363734623636376432386566336631376364363762666462306438313636663532 +63366162343036333364386233383763383266336566626663303064383835653039353538663432 +35636362323037643462393465353931323535336233316262616162326535643631336337383539 +38666532363635656238626332343236323566333132613263313238663733633536623731303962 +34653630653034343336333162383235633165383064393563653438313837363336373232383265 +64393732626165613530373837666239653436303230633037653365326333663261353232366439 +34323534333262376561646130633564353135623766633932306336386534626361656633343635 +34633937373261393338643833373832376165623133393435336235323463363032376461636336 +39373062636636396136656235383861346633656633666339376133656466323931613437333564 +39613663663165303131333937356439643238353962313736396338626539373164613431336231 +32366230343534323861333839616339613239313363376533373161336236323163343939353261 +37636664343433303738616637336366306236353734393661633961366332353733653335316264 +66303462356464323564313539636266616539653562636364323935353564333733383533643636 +63373565306634656332353537656666316536646334626166326263663965393631343863643133 +34303563393537346633376135656265646437613866343231656233666162616261356138663139 +39333264623530346666313965303464366662626265636566383036636336363336313534316431 +63656165333533376339373737323962636233336633653038636561656138666231653833306536 +64396263306565353034626566663363396161383733323161343234363562333231393862333132 +64653265366138333465313263323162653464356332636535356432383164653033323030343264 +39376663373532653834306264666339313135643134396665383861623238363838646531323238 +35306635366230386231333361666362653431616236633233386631316261623937333938366139 +65636661356431346231623164646138366437336535303239363066343763376265613836303234 +61623331353730383266303461653634306661306239373363646663646533383632366332663566 +66623963333738366435663738633261316531373165366465336335303931333439346530383461 +37323136356239633639643333653934663862383566393561636639343535386537643935343663 +39653966656539613530333465656339386464353464663234333365656631323438393739663534 +64306430373366333234303133393237386466386361306464373731353863323238666664366437 +64653834303137636438626635643635383332346564343034363036623631343866326338656638 +36643464663863636338383437663562343964326162303433623634333863333136666235323465 +61616165623932346337323432666639653535653430306363643731656261313030633264343833 +66366533623639336433383266396563623066646334656239353539316230343735663564613531 +38326537646530396531373037396562623432633737386561623233646534393461323665333534 +63643833653732353138313762396633333230623166303530636462323065366666353463363835 +36626461616632343539316537646236626631393561656333356532313266396634363331646663 +36623531343765343766376262346434663363653135633733646563656336653630386533316135 +61666661653833326634363732316133383735383666636636636539343263376463393261343231 +32386338666637396361626535333136396262366634373834613461633164653238373933346365 +31613135326264666639626362343364306461363035616639323439626563303933343230323136 +34666631646530326565353361656331633035326333313031653837383334323561376334363134 +36333332626132306535663231636363656364376237386337393465626633343737323166626662 +39653830383734393335343762643833353832313236643339656131656138396337626633383134 +66393661316136303364663832626361386564626264393830386532363734626635303730346661 +30383865643463336639356638326562366364333034386165623439303161323232363066303533 +35626634623934363530303865333035323536306131383639623339306464393461396463356337 +31383738363137316332646433343061303662343162663239303464623763353039646135343535 +62633336323962613065663939393636653336373737336564386336613862613935636230336638 +35393738353064306364653839383234623132376139613064363431663364653933643964363263 +63616437336166336238633133356163333365626164393061653037623735666330363331636230 +63633330383133616465626131373364323134393632636437646364626633623439336165376139 +66613431623338313765633865663431333038643533663931646631396638376233633036353539 +33653661356436303865383634313531353731306237623263386533363832333765356436346533 +62646335363636306263366265336662636335313137366630663862666339313637316637383466 +36663832393962626232656238346230376466386336343464303836366439306631323538663463 +63626438373136663337626130643565623837643365363432353163326261666664333731333333 +38336363656566616136666235353636353336653965316532323534653861666663343334343232 +30663965656165336635386464656334616666663432383232376263346164393931363731373264 +34653836373238396638663962343533636232366566663365373664633938353661343637376463 +61656365303264663964393837343466333838386162623932366466633530353532333731376162 +39343265393332643332383534383064363865363161373763363565656238313531373739326537 +32393661626263363031616537373832626136343563316230356535326263326533336536376430 +32626139616365336635666164343834656239666130656437623634363239333130333233356433 +65623261316166356530313766653730616262313164653734643666346338306331646365376463 +63656139303330383564636566666465646536613862306662616663363839386136613834653030 +66633736366665656131343836363761363733353430626436366239363461663933316439646264 +30653238323535396337333639316265383162323637623565626437633431376638366161363734 +34343633356633333637623531313137306335353237346533383835633139313433373164323731 +61393365363533646334356365323061613534666333333966363831653233633866616234653632 +66333266633133623936303535373230666632376438613162636163353839373461316137393532 +64346430316637363364643234663532633339363632626434353865363133366430343632306239 +61306639303530643063653335393664343063396231356163306532383938333830393039626266 +32343138643666663464326430313134616334666435323534616231323865353034326564303539 +61303465656562353039646466336238303330363935646262653139623831636235353262363861 +62303663623762613965303362663137373137666262633662666238396566303539643333643731 +35313865653265356163303634396664646333343636326337323034393533643362366230643732 +31333164623331353537316434323561356364373062663430333962653939646633363935646339 +38353836636262653730653037373530383330333638653263666430313633346266633031613263 +37333330393339643762343331623464346333316264663335393335303736623039366662623935 +66653162616365633139643539376664393730373238636434343839366135363032633565326630 +66306165333735333563663963313230346562396135366364343065313935343738373736323630 +32626436336431373865323438633166616139363437393631373532346463663964386633323866 +33316330333865636234336662663631313231623134353435346362303838643834363563646231 +34623136643665316366376166376339666438323465363662393936323766393465626135353937 +64366666396165363465306634363662616136346439316334366465653334396235323337373766 +30306637303836643861653130616139343262333532646366363534303138353962643165666333 +39396136363232366164656134633764323432623166343138396131613366343435383761663238 +37396239356263336466666636323335393739396338656462363763313164663265616236656532 +38376433353662353030313533663835386264373861316464613164393166336666626464323233 +31366434646639373436393831323435303039343632373938356631336264323634623137633363 +64623438666135323739663230616463636138383437303064383539346236323632346662613231 +34626439313362336634323933356433313033313831303338626136336466663532323063613466 +63363564326239663662363965376639343262616130663538626235653833383733313065373862 +65613932653434343438633831306132353237353933643930333935396434646562663132663535 +62613865366230356534316263346261346263333831313339393435316332353962666233373862 +34663730623638393939346631353262396663666339666435613137366437333031643633613164 +39343032623438323131633761343565323733626531623261373333373161623736393962393234 +61336339306132306433616265376130663336636664336431303138626139393262616230666338 +63313763353565386330663436313032613939353134383034393765323036613566333837613732 +36616365663532363833343335633963613461353138393830343133363965646138333763353936 +35623435326539613061613064653764636435383535386331663937383062306336373936306562 +63363165316637626539316561323862386232333139346264333632393662343965366361636638 +66353738396233333966643061303463626230363365613465313932633938393465343130336233 +63663133333231653966366165343863346332663531663764363464613531303333363230393030 +35313737396232663666396332316131386532303631303639303662383063653363396266656538 +39373335386366633461326161636635616438336636613266353236626536646538386630383531 +37663438613532646536323836336531393037303033313833666536313135653166666437346430 +30343362343231373530376135313133653834393439313433326363663264356138373435613037 +61663838643261356164353336373937326639623930326233393662303332343331393734363231 +38323531353666323961366164356435376335313365636332373166393239353234616239633034 +34633935613234396133303264616235333233383566343939633936366339636237383230393166 +38303537663563323539373735613962653132613364333363373264633562356331633130326665 +35633237613537333832333330363232303430326334396639636534353833636432306161626366 +36613466353036623538636263616435363139333366663234303633396266663433393135323632 +34643035396634313165623163383565323065343930323133396661383439653736343539643737 +63316533386465613337666266383665336531666534323935333264313935393563653761386638 +62333330363139613137313432393364656334616637376231643565313530343535353739333833 +38653165623538346537633735393962323039613064656539623737343933306137373363386531 +36383062396632323537373432306134303936373930396662326363353364666533616336613966 +63313638636137356162353939653265663131373533343635373632343364323962363663343063 +64353534333132323566323936363064396337653231636464356233343031636163303133623738 +62653232353439303365346337633238613464613666623230643733373839636532653735613432 +65336633373939613864343764626237363865323433386232623032666666663165393437353066 +35663631653065383231643133613765343965633338613863306237386436613564646238353966 +64343034636536393564393163616464633637323561653139653465333234343333626636656562 +65306139393838656639316439353161623562356661666131366239393032326433316438636133 +61316633353935613539623434643438303731656135633639373063643262616335313832356361 +37613764613438313363353562663264366564643062643933303764393839306232376263613665 +65356336393764303462353362626564636134653435383637313766666238633166643662396463 +32613765623432346263323838323335616134306562383565643263643362333334376537616132 +61346134333231306665396139633563316235653534626138346363386265663062353538626332 +65656464343238366533663933343335333539633466306261326539383661366532646236633465 +31626662326464643837343136653661623239326238623462646632363231326266313761313434 +63623866633335313039646533623066313161366235326564633931336665643938313466616133 +32663639363734643035356264613734653365363861353666346335643036383162366662666464 +32356232333431376431643734393865616364636533346663653935333033656535633232383636 +62643536363963666234626361333335646338393637633835333165343562333133613934343735 +65383466623465656539373565636266363138323335346636393666363237323837383235333166 +32373664666336313163663261313733663963393832303930636665363964323562633566383763 +34366366643636333039626639626361356139316635343539316138353365373164373161363830 +37633966323234613862623734653062343931616635643961393262393030393037373364353262 +32636138313066366666393265333338613166326334616537623435323731333063363361336336 +37396161306331343631633036623861633035393032303031343839373962353832653064646333 +37323334663636393362363139353834643164356131383138363133306339373536396661383430 +34666539643161383735626330636466386132326330626239626439333734323366633835323833 +33383234336432316336646635316135633637643261373831353864616638636637373633613034 +34626539613065333565366465336264393166353032313136393335313661653938303935613565 +64376231613332313064623565643439663339363032346537353661663566363863643861336439 +38666138646532353935636537353936356232653431646664313662306664653436633939633830 +38363033343538616461363362623038363735313136353730643163346363636231323433616631 +61623639346630336466373430663964373139626337393932333635613938386564353832363631 +34656239623438616539643265353338343564653262633738303438396138353834343534646432 +37663064613237633136376563373135353661386533353935633462376534336631303831396230 +66656530646664626639333535306264663262393735353238646534366165623335656431363133 +64636163623461656163663339643731646464333932353064376464383130343863303530323238 +35613330373363373934613633623932663064373438623266386136336133383435383338663861 +31393131366532306336616138636338613665313030343365623735333961663938333536616631 +30623034633830323132633539383032646333326337653333316133613832636636313165633666 +63653565656531346364346261383531383934613832383235353132613334643930616334306235 +34363037303138323435303836333433333663336439653262396364333231366338393466393831 +62636465636131616334343663303931343039656336326435373164623531313666353562306538 +32373166363661343762373438633135366364363661356332336164383932363237343465383565 +63376466613664346131646336343633663532623638376232666637336661663033366261616231 +39386332333862656166343037363635643963626165323566646336393432656137303037393165 +62323636643237666439663965616136313264623165316435303739643063383365346432353763 +35353931613765396232393231376466666664636235316137336636623637336335396231623632 +65663636386236396635626261666631626163653034626131306335356439383734663035663136 +65633731326565613161343335663338396432383763356434653166313166313130356137313330 +30363638623736396638656435363830306337386464663230376336366664393833383637343333 +64303465316139656331636233613761303063633032373036333437353765353433316130313132 +36626565333962363261376239303832316237386664326562353138613234376337653433313963 +61663834626466636135663935663164363633306330613461353365363764646233653762653564 +32373364663932343863343437366436346665663834323065626433346534323239663837653466 +66646239313135346261333431643963306664653365623232623837303837366161653261646662 +37363337356363323162343439306263383733396666386635313037363733613839363666316333 +61646631653836356164373532333534333165613939326264653230323336316337333062623466 +37653537316663386339643734393433326463623965303763653765613466343936643238336139 +36326266393830353032656134326361333531366230333337633938653834316562613331386233 +31343765333562633264323065613563643163383633306435356634643063353635366661386637 +31663264656535646564613436666362646235303262343964383535393366343037376230303839 +30316134636335343932626533613961313336363038663761666234363239656530333761613836 +64376132303235323263383063303761393833306339396663326562333438653833323034336534 +36663437393536373133383431333866306463653435386237643532613636316331383537633164 +31616132623562656139346133363962356637376339376634366535366233613034363566306135 +39383637343534626232636230343139346131333765316163666633613466643935626163666537 +35373364303065366633653366346665303030323436373266626664663239383431656566616134 +35386639616333303339343230636162353862646136333131353935373039663864336165626336 +34626630663631303862343666396362316134343731316262373464383934353863663962616362 +63656562626562326436653738366631656331663366643032306463353866623766333938666235 +37643235633739323166636630376631316234663030343561363539623962633035623236303735 +34333265313963373935653436376531346533656537643631333830353138376666383232353862 +35386439623065636563323532643964323538383334353266646331343732343237656531373135 +34666634376239346131373937636464353536376435343766356332666130343235373666306633 +31633464656639336231376531373334626265333865363663316263326234353737336430656562 +65666166316165373936626330643936663963303962333135383139613365356634373866643030 +66373833626164306531663831393261666263306637353665633161663965356362376436353730 +33306666386135376532343733393365636331666535343766626638356532343639303563613037 +65393931393531633163613562313065636230313962343833373132346466346464313438353862 +66653363396231613365356633613563653962323364316334386665623061666133363435633330 +34353730383930656136616431393863656634336138653439303438643336643435633738656234 +34383230646534346234323662303336623933356137656532663731356630376433633364343637 +30646633666637656632633632373035366464643138646236633864653761646366633138636366 +66626461643438303636316139336164663435323132373232663966363733373032643537383931 +38343966386131323636663538323964313766383464303335313364343332633435383230633465 +30393566613561333135333062303737346563663838623437386162393165313936306133663364 +35366536656330376632366462363061346363333663663739363730626339313264313066316466 +63353431353063646430663839643066666462616238333064393932613138383163336135326334 +39613436663338613436396339373634393365636166383638353264663838386631613762376234 +66663566373831363430383364623335343831396430323462666637383438343437626265376539 +35356166656364353863383562383062396636663933336339333837326563393161383231343533 +31616132633764646365393533636266323039386537353435353139633737303631303464623933 +65393466393232343461326332633739383962636564663431393632346337366661633563383162 +61633238323738313336333461316261393439303837633830383862343033303132313634323337 +66623733313033393164643364336466323066316332346430626631613930383434346430363066 +61343932663966333533393561323630343232666135396263333035383565343438343231396634 +34363863396333643931666430666534633264613334346634633935656161626162313065613032 +32316633393062373261356335316463653037313238626233633535623635386337316331396262 +31333062326639623136663838633962623730633837323732363764393865613430656261663464 +65616639623162653336316139636265353730383461313935323162633332323930366366323338 +34356231353832666238313037613365316533643865663063373232643633353732303130313835 +39326163373965666239643631363736376333313863303162336531663735656335376630373561 +36613837366331653165393133316639633737363533363761343061643939633665626430373836 +62373335366564383330376461376464653735363131383462353761643739633834303665303932 +39326166393735343762316632656236313131386535663132353661316335306664643636633135 +35386466393336663433363662383764623436386535636364333738626236663037343262313162 +35373838306330316663336334303133373937626563396162346437613737373664333363363664 +35393662656363383937333931363732646236313164353336386639613934373163366637313561 +64386664303131383932643764306265363866353535663565363638356339353133336331316131 +38633431656362366437383335653964373337343537356365316264303938373063333738323031 +34343530393163303434353439316434626263376138663838666239323734653835633730316264 +35333164343866613131363866633435383131666235373364623231313366343064663634333063 +34303066616661363837613038363365363766356137316563323937313838376139613134303835 +62313562626139346532623165353239303133356433346364626536306134666266613638653230 +64646261373061333262386166343265303134633634616165623234323036303839376335303439 +66373330343532396435343765353934663161363661333865336564643734383530316465383035 +66326233386535636363653866653930613137383434366662333330326137383339376139393239 +61373432333765303938636137623836393239663533646331313765313836383134313036613064 +31303965383164306136303636343931376465643330313337333734396535396262656131316539 +31316134333164343935653239663566313163616562373564316663393433303035386637313731 +31376338356432653537313836626165323932393862663935616365333563316630396663643664 +31343039313134316336383735346661643333663862333662386361316561393961373933343334 +66393731323932356461396535663338343038353635393732653335393833373934343633633533 +66313134383963616337613132383836343431393262613666343063313232633865313230303464 +63366562633966663636643731663631663839633962326261643537383334333430626564643566 +38323136386262393561306437646263613436313139316531303434386139396562356438363336 +64613038396662613465636664316337643935646236313031653732396566323830636638383836 +30303435383737383330383636663130643539346435643330376535643666376338663965343963 +39616536326130623561376530616133396333656636353133316362306234363931363363376664 +65356364333264303366663365383238643765303034366162646338303236353462346436393066 +34383363303332626465633736343231316336353132356661393635373634363039396438373065 +66306362666464383765326564396231346433643732646435356630623635343037613836333033 +35323563656566373037613032613335663661306265303033306330613237666666646662616666 +36313162643236373064666131643062313630383638333837616264373037323034613439343764 +32613136613665333336333937643937333839633065363537613065663064623837636232333532 +37666136366637376338376539363431386532343233663531663030306533646363633863313635 +36306566343565313464623664656335646335346336626462626661303538306164356339303131 +66653461633365353138396165623638306635396138383466643737333937316165393539666261 +35616638663333393037373430316337366362653631643463343531366232666232366565663339 +34383433333732393639313630366634653066343637636236366230353932353065616130653630 +65326633356265386437323239363564326363616534313762626133343634656666343964636130 +31386165653261316162633635333530316536343632613262663437376266366166323463316666 +37363438353736396364316537393432376361623633383331323632383466326437363966383361 +65343633346434313661373931643862663231343463343061363966313465633637316462333963 +33386133336331363631356532626537346364313939646534303065313963383363336365303232 +38316230343761363831366464303962643731316263323534313763383565383335333964353861 +61393761653963383231386165343230613861633938633838363566346530623935303665346334 +31343966353939613532616236373934373364663864626264646239316335323030373039623632 +38326337353863623633356339613666623339326165383030356133636365653231353437393166 +65393937326631356238613263313065353031623761323164633539376239623035643935393431 +39353230653735633335303336323737383235653937396335323432613337386335626335643131 +65343832346136383265613532613136323832653039306631373732643131333362323862393466 +37356538306339366561636366626136613339393566393561396535643465653730633964383464 +36313833363836393435386462353935366361333266656361333230353639303035663161313662 +32633837376636363732623738613365613564336635663238373663323731376335333066366365 +36613136616636636130386164623837373435363534316235336661366537343435623262363033 +39366433393364323962666237316664383462653033333665323836643130386261306330393734 +30353436653363333666343233396261656439666534363939393963343363646466316635396430 +32666466333331313632393266376131313437383633653038313061396434336461666235643866 +62343337623132393665636138363333313739366563336536613063396661393466613765366239 +64656532373166383365663236633261336563623031323461343638336565353034613866663863 +35653237346434633636326230346664393134343961376435666539303763313637303363313564 +38613039616539313739626330613334666636366231353030666636653732393832363266663230 +39663231316339383939613963643634343037333333653230336264313832656430393765633336 +63336666623430316332666537393435346437623366643162646438333237633631633633613135 +32646235356132633934353833303031343038323937313935303032643935653166653732656631 +30393438306361636639396565363435613037383438346163616664643464333965323336616339 +37653839336263346161386633663063323162306566356533343133383562376535333434333666 +65326336636334333038353437643865343933313862346637656464636632616666313736393936 +31643731393034336263616236643230316165303663663062303565656633303365373637663562 +35353364323839636635643535336264383535366233323866323437393838633563323866383063 +35323038316563653433326630303062373762386264393232623064346239396165643562613238 +32363233623332356566623230353964656664643932613964386336636535306464333439376561 +64633436356331653962643636376262623835613830613961313339633630393632386335666435 +66346234316266306436616562623862383966393930366362633935353064633136306433653435 +63663761626165376534396531636230646337386239366335643861343261383037313935363765 +35393338343830663139663534373934336238333861616631376431633739626361356463353234 +64353061353930633664356339613636663135333132343139616264303839303262396137386637 +31373065623833393337383036393364386531333632323766663930396634646438653761333138 +32396539323235633061396461653837386236646139306430636264666336643338663764393738 +39396538363937363233373635643165643234353836366665343266336466623531303935363638 +34373736613765333636376433343738383261306337636562383932386534326333623030623635 +38393431623334333365616333363138333030343964666439326565393237616461643133633231 +36396265613334326261356135346632366463373635343032643062643261646533636138363536 +35643333386436623330386165633136396436313931636230363062353930643064373731373836 +31626232303438353030366339623531633432336430396663333835643933356435653933333936 +31316465333564396366633931663133313139646434343534613562623533306133653236393431 +35623333383361346532336135336337663032613834623162396135303534636461303033313730 +34393433393662373465306233393664326562633031653731626335393637383165393864623666 +37613866643232383935613735363231663639626234656361373231313734343739643664336530 +31303138643030393633343436303365353262343436656635393261313131383834616636343637 +62626163646361303266366233353035376565313034376135353832356630313935316166363139 +34313334363764646665653831336137306134613938396365376263356538313364376333373630 +62323739616165396333653235623764336432613239653130356239633761323263313432646563 +31386532326334316235633639306232323634316336333937633631663932653637636638353236 +63303661623737323436646266633365306661633131396565643834326462653436333861663431 +65343465363937373861373738326639336366613331356238633434386262393231373364316233 +30316532613836373861356361323538333434353531313630636533336236653635393933373237 +65663131633534626435643038663138376436343333373832653731633162623836663832633638 +66313139386538353534336462643933623961363362373565396234613062333264343134613835 +39626338386630633635393030633336343936623937323436363265616133346365343138333532 +34326264623438656130343731633233306532623161303138653231656130346439613234393432 +63373331336163633234376234303834613638653436636231383939323863316532396638306261 +66623538653738373237656564306635356138626336643435373537356335303464626538633730 +61366437646431353234333539313534333633383834343063336462316139363263346632316464 +35326162643234313866373863386264656333373031613633616335646634373761623562633663 +30646436396134303230623530383661366234616232643662613330373964653937323830643664 +63636236333437656238386337646539323932663733303337616163653766653530336136386662 +65353234383636353635623563386164643964323937366138666534356266653435636437333665 +37393364623064636335643665636438366530323764346233646466653839646534303334653964 +66353436636332353435653039373838643563363966363033386635363564663635623339626239 +64666338383561623836343733643862313339303664353232636462343264383230623336306664 +34303436643864373735393332323564373136353063663631323138333030313565613934383066 +33306131303330313265383837646564306162656633393766376536636239646133626564383137 +63646537656136373736306533303865353062333535336131336165323763623463643739656435 +65396266366332616131326232363131613234613861616239373661616262366465613363353337 +36316262393466316237306436613033376435633161373530313064373034313563636431373839 +35613063333134373232626531323133643361636635303839613865353830653634303137343737 +30633435346432336130616338666334633037613764323934353535386231316262616333313962 +34323836353135373066663731313231383561366261316236343234326135313636336132646663 +36343335386565363639363939646166666364626138373834303731353163346134616533646437 +61656333316566636535366332373438383437343164353364353837663665663833353037306431 +65303236613238376436306131323734626131636466643330366335633137663963373733653931 +30396235323835633561366538633035663561633635313766383164373364613163323533613066 +35366462363861376538643564613534343362363665346364373230323139663934636465366135 +61366137333037613935363466623064393463663331366162666162363163633238393937306535 +32613866616634666132613436326264626666376263366234653533343763343033626562376262 +63343864653231666133386236373933373139343737623862636162383632643561333630323066 +38613033366432633432323338353962393833633763623033393930646632303262643435316538 +36393862303434393331626637656163393438646561663934313633613031353937333466656532 +64666464646534363737646438316564393137333263393664656664396262376438613230366632 +35643536303261666465363237373963383030353137393963663662626136306163313464616435 +66396161663235313533346563383366303561633362623239663061656634303137616463353339 +35373833623433623231646361626566383037626434376235616435383836363539336638386535 +31636535323163303739646137336336373565333931303135616464313837353533326262386564 +37303435316431303665363234336164666336653731633537393338366466653733613935633938 +62376237323466323862303063613766666165643039383365653064323332613166653963643138 +37343562366231653464366137346361316630353739643436653439386439633838323432623930 +38616332643161643933666237373662646165373833396333343032663638636531373262343433 +38653464663663336635636563333464633230663966633937373830363961343536343063333566 +30633161613133323238666533633832393563323466613765303532653738306537393733393365 +31366338393862353439666532313339653261303366343239653433313532323631343938333466 +31386163333961633239653235656334653231643430316537366662396630646337623135306663 +65666164343431636133656361346464386163366262323230333938653464373561636438616536 +38366465656639323265663236363361353134396562646265336335343633303333623238353030 +32343235636564633834336534366430323738323462383165653932623634303361373666656632 +34343833643862343339313566633266313465393961333161646533306666316664323834633836 +61653762363434653864626231346234363634326633623563623031366664326633323033343532 +33366162383062636566376430376562346233643162633035613366643833366164616339353963 +38643934363636613931393362643664366566373265373066373733333233373835323937646233 +66633931343031326133346164643635646238613561623739313961353862643931613531626137 +33356133303561393261653265383739363337376261393232643432313566366431613331616637 +64396164626130663962623235396365633662356436663135393062383335393265636162333635 +32366633343035623064633131323165633861333661363336643932343937646531323235383930 +65306638386530393631643463383631313062343136333863376534336530663837623262353262 +30376330646133616639636465663466396437393238626363373639343964333531333531313266 +32336464616235323164616262663138346663333436656661346636373766386636316636393161 +61326436383038616335633334323962613039663062383366613335613734633865393164626563 +38613164366637376637313734326361333939626561306664306365336137326236313630376232 +62346236383332636538363235656461323834383833363130653636633961633165623535646431 +65636639333738363264656433343334316161376236333032396634633965343832646139333734 +61643639336238353136306466346436323932356161343363333866313066643062386336353233 +39356233636338643662373262656265323663306535356330303635643765316266333838643765 +30396663323935303063326534373231613137366365373137666461303466333834616336366163 +36356534333231363461386363353435386131323865623535663233626365393833623234376366 +61646461356138613062353839396138313865366263636662626233643966303534373230313437 +33636232643933653533333965376337373933643833643331633839666130626230396230306335 +33363132353730346232313334396564633166396632326439666531336362346634363230343163 +33323762386137356166613734303562303761313637303631666134386264626230393764646337 +39363764636365636161373330313762616433383631386161383066356334343533323534646661 +39393030386461653862393065376562623236303337303138616535363132653764373365616431 +36653434303035396439613635346432386533626233336634616133653437613865323130633230 +32383864363561333563613066653237666637333666396634313837383564303736356433663336 +39633961333230303235373638326566363430633761666636326132623566343033653734323865 +62376464373231663638376130356162613931393731636339313761663033656561626531383039 +37663632623061393361326630393662353062373438323764356636343334633231326332633430 +30353338326431626434316436656636363966396231373930623861313664653135623865333835 +38653035643133363564616166373832623439626263303437626232653962303837316130306639 +37643432626634336136393337656639633031393765643431663162636231623161353838303834 +34616461396336386363666233643138663231653766646335626332613165383436353537343161 +30303865373666663563316335373065313637356139376266383838353062656165666363373337 +63383239353336633533326361643537663038303830313266303364653934316263373835373765 +64326336336431303065333631333732313539663937313861353138313839666266313863373361 +36343163346235353834623037303064643238316161663862306435396665333266396235323730 +62363362383433343866353635316234363032616638396665336130373034653234616465653836 +32323336333930636165343630393935383032633438383130663963376661386439333334636361 +65313833393635653965373364336635636466646463646436313432353734306166316434336461 +34613061346566353161326132346364303737306565343234633939303665356537646337623131 +31383765643730343638 diff --git a/ocp/production/secret-prod-aws-db-backup.yaml b/ocp/production/secret-prod-aws-db-backup.yaml new file mode 100644 index 0000000..3e9a683 --- /dev/null +++ b/ocp/production/secret-prod-aws-db-backup.yaml @@ -0,0 +1,23 @@ +$ANSIBLE_VAULT;1.1;AES256 +30393937653135353063623830633131613736346232353633333832313133366632633833353533 +3939616131303261633930396436303032623566633733390a373533656461623637373761396161 +62663139656435303439653639396136313137316361373662323364323036366162326537386339 +6431303738366436340a663935316436643562393734353464633833363861343163656565383566 +38376534323130356365623734336638376631306633383137616163383134326665386566306336 +64623138313337376663353461313764303337616266313666653230303932366264653738333233 +35633763323539363762616236393864376162333837663832643636306263353832376636346361 +35303062323066626565356461353365323337616163323163306133313864646164353566396164 +32353339323437613838363038373233396439646438636336316636303662323562363663316533 +31343231623866376535346165646236646530336230353231663464613231663130653461323130 +62323834333935333361376339623930653238366464623138313833653030303063363864306233 +39643061343434333933363632666166633835636666373264386561393964643530396437323536 +33373539373030343033376637356366663434636666396435346236613561646534383331653436 +63383531333639633235386133323838323939626636393261663834343464636132353031346631 +65313963363661353765653835663666366634363762363132363865383737346435393136666664 +34306532306436343030653665356364393333616666373035393463656665613463656633333465 +37663164336435383936643036633433383932313336376332313562323439383161383035613037 +62386162616635356366323234396335656166323163313133346335666138376533343230333764 +38633135343165313462616465373066323737386635643934613563666638623430306431393130 +34373439653835313139616136653435323564386663393336393437323830343734303634373263 +36393931326539326166326263353533336131613935316566396663303763396631623235356134 +6465356331366131386234326562623836393365613436336463 diff --git a/ocp/production/secret-prod-fevermap-db.yaml b/ocp/production/secret-prod-fevermap-db.yaml new file mode 100644 index 0000000..e5b8a6f --- /dev/null +++ b/ocp/production/secret-prod-fevermap-db.yaml @@ -0,0 +1,46 @@ +$ANSIBLE_VAULT;1.1;AES256 +37356234326630653732383937346535353861313435646564316236356563313731323638356239 +3161353439613438363439393261353266353133383231650a636465633564636532623834396333 +31653137366666343937646464646235353764393230333864633664623937313030643834613832 +3966666265343833340a383230303665613830353964633032666138376134393339653633653866 +65366232336531306634326539386134323964323565313265393234333466383761353261623661 +32636138333661393363353561303034343261343039393339373230306430323266633239653835 +33343938363466343864323063633634353534333966626265343463616634653139626431663132 +61373266383339666330643163383535663431343637326163313662616165653463316132643561 +31633533333030393536303163646537623135326663653662306135393664353064646536356264 +32316364316638366166343038373530633734653232383630303966386337383062633237356166 +65666433316536366565633266356337323236623966366334323064343465306433373033313362 +37363462616536316164323364326239333266383636643764306632386233333962383963626166 +32386163313164613264373664626131396632326131633962333665363033396262646665323832 +37366533396565386232303432653666616334316630343830613036393432613135366231636635 +33353165363739616533333265356630616166356666326164656139656665343735643661396430 +61346630613837303636633937306564396239313362383736643939623536666632333965363766 +65356663666163386362633566353030326561363033306538383934613965666263363466613836 +38656233336230383463303239623665383132346531393765333164343335303663626566333336 +34356461356231366330613732346334383264333064643661633136396435656165376339383063 +36633038333037386333393761666333666566306239323664633435363839623634616330353631 +31663562316234326135343137616133323534633632306534303261653435376665323832623130 +33653632363138653066633566623362376264613234656566386561386661613838326662316132 +66323430393431643363643932366263633330303732613537383466386130386262363432623230 +32356662643863653930333432613736336431373030386365393038616634623637653534623634 +34636434353230613532366538633839613561326564663630376665653139353239383536346130 +38303030663237613635653266306531663237656334393330623032336133623639313537323861 +33313463633061313134326535626639323666343431303035636236323930346338663965386566 +32663533353032306366353232333935386136663866646565386663393438376531643333663533 +64633738646365323537656638616163666336396235666130356164383130303230306162616363 +62356535333136353561363231306532303330633663356463353966343536363266666533323632 +65323361626632376536643465383036633431303133366132663131623066616363653136666139 +30643639646266366434653338356362616239366661393139323762663139313261316565356166 +62643664646137376330653332663833636630316265643237633763313462393937636665373766 +37393135323934396535313665336338313261383238343331653732316661653530323462353339 +61653432336334633134326538326434366266383837346330336138386132613265373166363231 +39663765346137646130393861313434386534653734393232633636313735633161396465343935 +66636161663363333530386339343239303662663339336437353264323462386463383830623930 +63343638633762663863616330613832353765643730303735323934326131623364636364636465 +37326232303764303034643064303866326135643836326662383365393230303965646436373136 +36363439666136376435333166346462396232656539313766633538643063333832666462343835 +37623035313165613663636362323634383035316439666435383239316138623430343637653238 +66646535653036303762343030386461653137643630636636363865356135343132313366636330 +30363565366130626133623539653831313039376565303465623237646136333833356633663533 +62646534326264663061373336393536636464663736353265396165313862663765643834333566 +3738 diff --git a/ocp/production/svc-prod-fevermap-api.yaml b/ocp/production/svc-prod-fevermap-api.yaml new file mode 100644 index 0000000..1ff0bf7 --- /dev/null +++ b/ocp/production/svc-prod-fevermap-api.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + openshift.io/generated-by: OpenShiftNewApp + creationTimestamp: null + labels: + app: fevermap + app.kubernetes.io/component: api + app.kubernetes.io/instance: fevermap + app.kubernetes.io/name: python + app.kubernetes.io/part-of: fevermap + application: fevermap + name: fevermap-api + selfLink: /api/v1/namespaces/fevermap-prod/services/fevermap-api +spec: + ports: + - name: 9000-tcp + port: 9000 + protocol: TCP + targetPort: 9000 + selector: + deploymentconfig: fevermap-api + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} diff --git a/ocp/production/svc-prod-fevermap-db.yaml b/ocp/production/svc-prod-fevermap-db.yaml new file mode 100644 index 0000000..0e011fd --- /dev/null +++ b/ocp/production/svc-prod-fevermap-db.yaml @@ -0,0 +1,29 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + openshift.io/generated-by: OpenShiftNewApp + template.openshift.io/expose-uri: mysql://{.spec.clusterIP}:{.spec.ports[?(.name=="mariadb")].port} + creationTimestamp: null + labels: + app: fevermap-mysql-runtime + app.kubernetes.io/component: fevermap-db + app.kubernetes.io/instance: fevermap-db + app.kubernetes.io/name: fevermap-db + app.kubernetes.io/part-of: fevermap + application: fevermap + template: fevermap-mysql-persistent + name: fevermap-db + selfLink: /api/v1/namespaces/fevermap-prod/services/fevermap-db +spec: + ports: + - name: mariadb + port: 3306 + protocol: TCP + targetPort: 3306 + selector: + deploymentconfig: fevermap-db + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} diff --git a/ocp/production/svc-prod-fevermap-front.yaml b/ocp/production/svc-prod-fevermap-front.yaml new file mode 100644 index 0000000..3c90ea9 --- /dev/null +++ b/ocp/production/svc-prod-fevermap-front.yaml @@ -0,0 +1,28 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + openshift.io/generated-by: OpenShiftNewApp + creationTimestamp: null + labels: + app: fevermap-mysql-runtime + application: fevermap + template: fevermap-mysql-persistent + name: fevermap-front + selfLink: /api/v1/namespaces/fevermap-prod/services/fevermap-front +spec: + ports: + - name: 8080-tcp + port: 8080 + protocol: TCP + targetPort: 8080 + - name: 8443-tcp + port: 8443 + protocol: TCP + targetPort: 8443 + selector: + deploymentconfig: fevermap-front + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} diff --git a/ocp/production/template-fevermap-runtime.yaml b/ocp/production/template-fevermap-runtime.yaml new file mode 100644 index 0000000..86aaae8 --- /dev/null +++ b/ocp/production/template-fevermap-runtime.yaml @@ -0,0 +1,546 @@ +apiVersion: template.openshift.io/v1 +kind: Template +labels: + app: ${NAME} + template: fevermap-mysql-runtime +message: |- + The following service(s) have been created in your project: ${NAME}-front ${NAME}-api, ${DATABASE_SERVICE_NAME}. + + For more information about using this template, including OpenShift considerations, see + https://gitlab.com/fevermap/fevermap/-/blob/master/ocp/README.md. +metadata: + annotations: + description: An example Fevermap application with a MariaDB database. For more information + about using this template, including OpenShift considerations, see + https://gitlab.com/fevermap/fevermap/-/blob/master/ocp/README.md. + iconClass: icon-python + openshift.io/display-name: Fevermap + openshift.io/documentation-url: https://gitlab.com/fevermap/fevermap/-/blob/master/ocp/README.md + openshift.io/long-description: This template defines resources needed to run + a Fevermap application, application deployment configurations, and database + deployment configuration. + openshift.io/provider-display-name: Red Hat, Inc. + openshift.io/support-url: https://gitlab.com/fevermap/fevermap/-/issues + samples.operator.openshift.io/version: "0.1" + tags: quickstart,fevermap,python,nginx,mariadb + template.openshift.io/bindable: "false" + labels: + samples.operator.openshift.io/managed: "false" + name: fevermap-mysql-runtime +parameters: +- description: The name prefix assigned to frontend objects defined in this template. + displayName: Name + name: NAME + required: true + value: fevermap-mysql-persistent +- description: The OpenShift Namespace where the ImageStream resides. + displayName: Namespace + name: NAMESPACE + required: true + value: fevermap +- description: The front-end container image pull URL. + displayName: Front Image URL + name: FRONT_IMG_URL + required: true + value: quay.io/fevermap/fevermap +- description: Version of front image to be used (release-tag or latest). + displayName: Front-end image Version + name: FRONT_VERSION + required: false + value: "latest" +- description: The API container image pull URL. + displayName: API Image URL + name: API_IMG_URL + required: true + value: quay.io/fevermap/fevermap-api +- description: Version of API image to be used (release-tag or latest). + displayName: API image Version + name: API_VERSION + required: false + value: "latest" +- description: Maximum amount of memory the frontend container can use. + displayName: Memory Limit Frontned + name: MEMORY_FRONT_LIMIT + required: true + value: 512Mi +- description: Maximum amount of memory the API container can use. + displayName: Memory Limit API + name: MEMORY_API_LIMIT + required: true + value: 512Mi +- description: Maximum amount of memory the MySQL container can use. + displayName: Memory Limit (MySQL) + name: MEMORY_MYSQL_LIMIT + required: true + value: 512Mi +- description: Volume space available for data, e.g. 512Mi, 2Gi + displayName: Volume Capacity + name: VOLUME_CAPACITY + required: true + value: 1Gi +- description: The exposed hostname that will route to the Fevermap frontend service, + if left blank a value will be defaulted. + displayName: Application Frontend Hostname + name: APPLICATION_FRONT_DOMAIN +- description: The exposed hostname that will route to the Fevermap API service, + if left blank a value will be defaulted. + displayName: Application API Hostname + name: APPLICATION_API_DOMAIN +- description: The exposed http path part that will route to the Fevermap API service, + can be left blank if no path is used. E.g. /api + displayName: Application API path + name: APPLICATION_API_PATH +- description: Google Analytics property ID. Add this to activate Google Analytics, + otherwise leave empty to not use GA. + displayName: Google analytics property ID + name: GOOGLE_ANALYTICS_CODE +- description: GitLab trigger secret. A difficult to guess string encoded as part + of the webhook URL. Not encrypted. + displayName: GitLab Webhook Secret + from: '[a-zA-Z0-9]{40}' + generate: expression + name: GITLAB_WEBHOOK_SECRET +- displayName: Database Service Name + name: DATABASE_SERVICE_NAME + required: true + value: mariadb +- displayName: Database Name + name: DATABASE_NAME + required: true + value: fevermap +- displayName: Database User + name: DATABASE_USER + required: true + value: fevermap +- displayName: Database Password + from: '[a-zA-Z0-9]{16}' + generate: expression + name: DATABASE_PASSWORD +- displayName: Database Root Password + from: '[a-zA-Z0-9]{16}' + generate: expression + name: DATABASE_ROOT_PASSWORD +objects: +# +# Database +# +- apiVersion: v1 + stringData: + database-name: ${DATABASE_NAME} + database-password: ${DATABASE_PASSWORD} + database-root-password: c${DATABASE_ROOT_PASSWORD} + database-user: ${DATABASE_USER} + kind: Secret + metadata: + annotations: + template.openshift.io/expose-database_name: '{.data[''database-name'']}' + template.openshift.io/expose-password: '{.data[''database-password'']}' + template.openshift.io/expose-root_password: '{.data[''database-root-password'']}' + template.openshift.io/expose-username: '{.data[''database-user'']}' + name: ${NAME}-db + type: Opaque +- apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + finalizers: + - kubernetes.io/pvc-protection + name: ${NAME}-mariadb-storage + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +- apiVersion: apps.openshift.io/v1 + kind: DeploymentConfig + metadata: + annotations: + template.alpha.openshift.io/wait-for-ready: "true" + creationTimestamp: null + generation: 1 + labels: + app.kubernetes.io/component: database + app.kubernetes.io/instance: ${NAME}-db + app.kubernetes.io/name: mariadb + app.kubernetes.io/part-of: fevermap + app.openshift.io/runtime: mariadb + name: ${NAME}-db + spec: + replicas: 1 + revisionHistoryLimit: 5 + selector: + deploymentconfig: ${NAME}-db + strategy: + activeDeadlineSeconds: 21600 + recreateParams: + timeoutSeconds: 600 + type: Recreate + template: + metadata: + creationTimestamp: null + name: ${NAME}-db + labels: + deploymentconfig: ${NAME}-db + spec: + containers: + - env: + - name: MYSQL_USER + valueFrom: + secretKeyRef: + key: database-user + name: ${NAME}-db + - name: MYSQL_PASSWORD + valueFrom: + secretKeyRef: + key: database-password + name: ${NAME}-db + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + key: database-root-password + name: ${NAME}-db + - name: MYSQL_DATABASE + valueFrom: + secretKeyRef: + key: database-name + name: ${NAME}-db + image: openshift/mariadb@latest + imagePullPolicy: IfNotPresent + livenessProbe: + failureThreshold: 3 + initialDelaySeconds: 30 + periodSeconds: 10 + successThreshold: 1 + tcpSocket: + port: 3306 + timeoutSeconds: 1 + name: mariadb + ports: + - containerPort: 3306 + protocol: TCP + readinessProbe: + 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' + failureThreshold: 3 + initialDelaySeconds: 5 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + resources: + limits: + memory: 2Gi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /var/lib/mysql/data + name: ${NAME}-data + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + terminationGracePeriodSeconds: 30 + volumes: + - name: ${NAME}-data + persistentVolumeClaim: + claimName: ${NAME}-mariadb-storage + test: false + triggers: + - imageChangeParams: + automatic: true + containerNames: + - mariadb + from: + kind: ImageStreamTag + name: mariadb:10.2 + namespace: openshift + type: ImageChange + - type: ConfigChange +- apiVersion: v1 + kind: Service + metadata: + annotations: + template.openshift.io/expose-uri: mysql://{.spec.clusterIP}:{.spec.ports[?(.name=="mariadb")].port} + labels: + app.kubernetes.io/component: ${NAME}-db + app.kubernetes.io/instance: ${NAME}-db + app.kubernetes.io/name: "${NAME}-db" + app.kubernetes.io/part-of: ${NAME} + name: ${NAME}-db + spec: + ports: + - name: mariadb + port: 3306 + protocol: TCP + targetPort: 3306 + selector: + deploymentconfig: ${NAME}-db + sessionAffinity: None + type: ClusterIP +# +# API +# +- apiVersion: image.openshift.io/v1 + kind: ImageStream + metadata: + name: ${NAME}-api + annotations: + description: Runtime image for API + template.alpha.openshift.io/wait-for-ready: "true" + spec: + lookupPolicy: + local: false + tags: + - annotations: null + from: + kind: DockerImage + name: ${API_IMG_URL}:${API_VERSION} + name: latest + referencePolicy: + type: Source +- apiVersion: apps.openshift.io/v1 + kind: DeploymentConfig + metadata: + annotations: + app.openshift.io/connects-to: ${NAME}-db + labels: + app.kubernetes.io/component: api + app.kubernetes.io/instance: ${NAME}-api + app.kubernetes.io/name: python + app.kubernetes.io/part-of: fevermap + app.openshift.io/runtime: python + app.openshift.io/runtime-version: "3.6" + name: ${NAME}-api + spec: + replicas: 2 + revisionHistoryLimit: 5 + selector: + deploymentconfig: ${NAME}-api + strategy: + activeDeadlineSeconds: 21600 + rollingParams: + intervalSeconds: 1 + maxSurge: 25% + maxUnavailable: 25% + timeoutSeconds: 600 + updatePeriodSeconds: 1 + type: Rolling + template: + metadata: + creationTimestamp: null + labels: + deploymentconfig: ${NAME}-api + name: ${name}-api + spec: + containers: + - env: + - name: FEVERMAP_API_DATABASE_URI + value: 'mysql://${DATABASE_USER}:${DATABASE_PASSWORD}@${NAME}-db/${DATABASE_NAME}?charset=utf8mb4' + - name: FLASK_ENV + value: kube + - name: APP_SCRIPT + value: entrypoint.sh + - name: APPDIR + value: /opt/app-root/src + - name: UWSGIPLUGINLINE + image: ${NAME}-api:latest + imagePullPolicy: IfNotPresent + name: ${NAME}-api + ports: + - containerPort: 9000 + protocol: TCP + resources: + limits: + memory: 1Gi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + terminationGracePeriodSeconds: 30 + test: false + triggers: + - imageChangeParams: + automatic: true + containerNames: + - ${NAME}-api + from: + kind: ImageStreamTag + name: ${NAME}-api:latest + type: ImageChange + - type: ConfigChange +- apiVersion: v1 + kind: Service + metadata: + labels: + app.kubernetes.io/component: api + app.kubernetes.io/instance: ${NAME} + app.kubernetes.io/name: python + app.kubernetes.io/part-of: fevermap + name: ${NAME}-api + spec: + ports: + - name: 9000-tcp + port: 9000 + protocol: TCP + targetPort: 9000 + sessionAffinity: None + type: ClusterIP + selector: + deploymentconfig: ${NAME}-api +- apiVersion: route.openshift.io/v1 + kind: Route + metadata: + name: ${NAME}-api + spec: + host: ${APPLICATION_API_DOMAIN} + path: ${APPLICATION_API_PATH} + port: + targetPort: 9000-tcp + tls: + insecureEdgeTerminationPolicy: Allow + termination: edge + to: + kind: Service + name: ${NAME}-api + weight: 100 + wildcardPolicy: None +# +# Front +# +- apiVersion: image.openshift.io/v1 + kind: ImageStream + metadata: + name: ${NAME}-front + annotations: + description: The final run-time image for frontend + template.alpha.openshift.io/wait-for-ready: "true" + spec: + lookupPolicy: + local: false + tags: + - annotations: null + from: + kind: DockerImage + name: ${FRONT_IMG_URL}:${FRONT_VERSION} + name: latest + referencePolicy: + type: Source +- apiVersion: v1 + data: + window-settings.js: |+ + window.URLS = { + API_URL: 'https://${APPLICATION_API_DOMAIN}', + APP_URL: 'https://${APPLICATION_FRONT_DOMAIN}', + }; + window.GOOGLE_ANALYTICS_CODE='${GOOGLE_ANALYTICS_CODE}'; + + kind: ConfigMap + metadata: + name: ${NAME}-window-settings +- apiVersion: apps.openshift.io/v1 + kind: DeploymentConfig + metadata: + labels: + app.kubernetes.io/component: front + app.kubernetes.io/instance: ${NAME}-front + app.kubernetes.io/name: nginx + app.kubernetes.io/part-of: fevermap + app.openshift.io/runtime: nginx + app.openshift.io/runtime-version: '1.12' + name: ${NAME}-front + spec: + replicas: 2 + revisionHistoryLimit: 10 + selector: + deploymentconfig: ${NAME}-front + strategy: + activeDeadlineSeconds: 21600 + rollingParams: + intervalSeconds: 1 + maxSurge: 25% + maxUnavailable: 25% + timeoutSeconds: 600 + updatePeriodSeconds: 1 + type: Rolling + template: + metadata: + labels: + deploymentconfig: ${NAME}-front + spec: + containers: + - image: ${NAME}-front:latest + imagePullPolicy: Always + name: ${NAME} + ports: + - containerPort: 8080 + protocol: TCP + - containerPort: 8443 + protocol: TCP + resources: + limits: + memory: 1Gi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /opt/app-root/src/window-settings.js + name: ${NAME}-window-settings + readOnly: true + subPath: window-settings.js + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + terminationGracePeriodSeconds: 30 + volumes: + - configMap: + defaultMode: 420 + name: ${NAME}-window-settings + name: ${NAME}-window-settings + test: false + triggers: + - type: ConfigChange + - imageChangeParams: + automatic: true + containerNames: + - ${NAME} + from: + kind: ImageStreamTag + name: ${NAME}-front:latest + type: ImageChange +- apiVersion: v1 + kind: Service + metadata: + name: ${NAME}-front + spec: + ports: + - name: 8080-tcp + port: 8080 + protocol: TCP + targetPort: 8080 + - name: 8443-tcp + port: 8443 + protocol: TCP + targetPort: 8443 + selector: + deploymentconfig: ${NAME}-front + sessionAffinity: None + type: ClusterIP +- apiVersion: route.openshift.io/v1 + kind: Route + metadata: + name: ${NAME} + spec: + host: ${APPLICATION_FRONT_DOMAIN} + port: + targetPort: 8080-tcp + tls: + insecureEdgeTerminationPolicy: Allow + termination: edge + to: + kind: Service + name: ${NAME}-front + weight: 100 + wildcardPolicy: None -- GitLab