Page MenuHomePhorge

No OneTemporary

diff --git a/kustomize/Makefile b/kustomize/Makefile
new file mode 100644
index 00000000..d3f31292
--- /dev/null
+++ b/kustomize/Makefile
@@ -0,0 +1,7 @@
+apply-dev:
+ oc apply -k overlays/dev/
+build:
+ oc start-build kolab --follow
+binary-build-overlay:
+ oc start-build overlay --from-dir=/path/to/overlay-directory --follow
+
diff --git a/kustomize/base/fedora-imagestream.yaml b/kustomize/base/fedora-imagestream.yaml
new file mode 100644
index 00000000..5e95c841
--- /dev/null
+++ b/kustomize/base/fedora-imagestream.yaml
@@ -0,0 +1,19 @@
+apiVersion: image.openshift.io/v1
+kind: ImageStream
+metadata:
+ labels:
+ app: fedora
+ name: fedora
+spec:
+ lookupPolicy:
+ local: false
+ tags:
+ - annotations:
+ openshift.io/imported-from: docker.io/fedora:37
+ from:
+ kind: DockerImage
+ name: docker.io/fedora:37
+ generation: 2
+ name: "37"
+ referencePolicy:
+ type: Local
diff --git a/kustomize/base/fedora-s2i-core-buildconfig.yaml b/kustomize/base/fedora-s2i-core-buildconfig.yaml
new file mode 100644
index 00000000..5bf5482c
--- /dev/null
+++ b/kustomize/base/fedora-s2i-core-buildconfig.yaml
@@ -0,0 +1,27 @@
+apiVersion: build.openshift.io/v1
+kind: BuildConfig
+metadata:
+ name: fedora-s2i-core
+spec:
+ failedBuildsHistoryLimit: 5
+ nodeSelector: null
+ output:
+ to:
+ kind: ImageStreamTag
+ name: fedora-s2i-core:latest
+ runPolicy: Serial
+ source:
+ git:
+ ref: master
+ uri: https://git.kolab.org/source/kolab-s2i-core.git
+ type: Git
+ strategy:
+ dockerStrategy:
+ from:
+ kind: ImageStreamTag
+ name: fedora:37
+ type: Docker
+ successfulBuildsHistoryLimit: 5
+ triggers:
+ - type: ImageChange
+ - type: ConfigChange
diff --git a/kustomize/base/fedora-s2i-core-imagestream.yaml b/kustomize/base/fedora-s2i-core-imagestream.yaml
new file mode 100644
index 00000000..eba65d69
--- /dev/null
+++ b/kustomize/base/fedora-s2i-core-imagestream.yaml
@@ -0,0 +1,7 @@
+apiVersion: image.openshift.io/v1
+kind: ImageStream
+metadata:
+ name: fedora-s2i-core
+spec:
+ lookupPolicy:
+ local: false
diff --git a/kustomize/base/horizon-deployment.yaml b/kustomize/base/horizon-deployment.yaml
new file mode 100644
index 00000000..b8b28003
--- /dev/null
+++ b/kustomize/base/horizon-deployment.yaml
@@ -0,0 +1,107 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ annotations:
+ alpha.image.policy.openshift.io/resolve-names: '*'
+ app.openshift.io/connects-to: '[{"apiVersion":"apps.openshift.io/v1","kind":"DeploymentConfig","name":"mariadb"}]'
+ app.openshift.io/route-disabled: "false"
+ image.openshift.io/triggers: >-
+ [{"from":{"kind":"ImageStreamTag","name":"kolab:latest"},"fieldPath":"spec.template.spec.containers[?(@.name==\"kolab\")].image"}]
+ labels:
+ app: horizon
+ app.kubernetes.io/component: horizon
+ app.kubernetes.io/instance: horizon
+ app.kubernetes.io/name: horizon
+ app.kubernetes.io/part-of: kolab-app
+ app.openshift.io/runtime: php
+ app.openshift.io/runtime-version: latest
+ name: horizon
+spec:
+ progressDeadlineSeconds: 600
+ replicas: 1
+ revisionHistoryLimit: 10
+ selector:
+ matchLabels:
+ app: horizon
+ strategy:
+ rollingUpdate:
+ maxSurge: 1
+ timeoutSeconds: 120
+ maxUnavailable: 1
+ type: RollingUpdate
+ template:
+ metadata:
+ creationTimestamp: null
+ labels:
+ app: horizon
+ deployment: horizon
+ spec:
+ containers:
+ - envFrom:
+ - secretRef:
+ name: kolab
+ - configMapRef:
+ name: kolab
+ image: kolab:latest
+ imagePullPolicy: IfNotPresent
+ readinessProbe:
+ failureThreshold: 3
+ exec:
+ command:
+ - ./artisan
+ - status:health
+ - --check=DB
+ - --check=Redis
+ initialDelaySeconds: 30
+ periodSeconds: 10
+ successThreshold: 1
+ timeoutSeconds: 5
+ livenessProbe:
+ failureThreshold: 3
+ exec:
+ command:
+ - ./artisan
+ - horizon:status
+ initialDelaySeconds: 30
+ periodSeconds: 10
+ successThreshold: 1
+ timeoutSeconds: 5
+ name: kolab
+ env:
+ - name: KOLAB_ROLE
+ value: horizon
+ - name: DB_HOST
+ valueFrom:
+ secretKeyRef:
+ key: database-host
+ name: mariadb
+ - name: DB_USERNAME
+ valueFrom:
+ secretKeyRef:
+ key: database-user
+ name: mariadb
+ - name: DB_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ key: database-password
+ name: mariadb
+ - name: DB_DATABASE
+ valueFrom:
+ secretKeyRef:
+ key: database-name
+ name: mariadb
+ - name: REDIS_HOST
+ value: redis
+ - name: REDIS_PORT
+ value: "6379"
+ - name: REDIS_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ key: database-password
+ name: redis
+ terminationMessagePath: /dev/termination-log
+ terminationMessagePolicy: File
+ dnsPolicy: ClusterFirst
+ restartPolicy: Always
+ schedulerName: default-scheduler
+ terminationGracePeriodSeconds: 30
diff --git a/kustomize/base/kolab-admin-route.yaml b/kustomize/base/kolab-admin-route.yaml
new file mode 100644
index 00000000..52046618
--- /dev/null
+++ b/kustomize/base/kolab-admin-route.yaml
@@ -0,0 +1,21 @@
+apiVersion: route.openshift.io/v1
+kind: Route
+metadata:
+ labels:
+ app: kolab
+ app.kubernetes.io/component: kolab
+ app.kubernetes.io/instance: kolab
+ app.kubernetes.io/name: kolab
+ app.kubernetes.io/part-of: kolab-app
+ name: kolab-admin
+spec:
+ subdomain: admin.kolab-kolab-dev
+ port:
+ targetPort: 8000-tcp
+ tls:
+ insecureEdgeTerminationPolicy: Redirect
+ termination: edge
+ to:
+ kind: Service
+ name: kolab
+ weight: 100
diff --git a/kustomize/base/kolab-buildconfig.yaml b/kustomize/base/kolab-buildconfig.yaml
new file mode 100644
index 00000000..acfc61a5
--- /dev/null
+++ b/kustomize/base/kolab-buildconfig.yaml
@@ -0,0 +1,30 @@
+apiVersion: build.openshift.io/v1
+kind: BuildConfig
+metadata:
+ name: kolab
+spec:
+ failedBuildsHistoryLimit: 5
+ nodeSelector: null
+ output:
+ to:
+ kind: ImageStreamTag
+ name: kolab:latest
+ runPolicy: Serial
+ source:
+ git:
+ ref: dev/mollekopf
+ uri: https://git.kolab.org/source/kolab.git
+ type: Git
+ strategy:
+ sourceStrategy:
+ env:
+ - name: LARAVEL_ENV
+ value: prod
+ from:
+ kind: ImageStreamTag
+ name: swoole:latest
+ type: Source
+ successfulBuildsHistoryLimit: 5
+ triggers:
+ - type: ImageChange
+ - type: ConfigChange
diff --git a/kustomize/base/kolab-deployment.yaml b/kustomize/base/kolab-deployment.yaml
new file mode 100644
index 00000000..a5f784ee
--- /dev/null
+++ b/kustomize/base/kolab-deployment.yaml
@@ -0,0 +1,118 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ annotations:
+ alpha.image.policy.openshift.io/resolve-names: '*'
+ app.openshift.io/connects-to: '[{"apiVersion":"apps.openshift.io/v1","kind":"DeploymentConfig","name":"mariadb"}]'
+ app.openshift.io/route-disabled: "false"
+ image.openshift.io/triggers: >-
+ [{"from":{"kind":"ImageStreamTag","name":"kolab:latest"},"fieldPath":"spec.template.spec.containers[?(@.name==\"kolab\")].image"}]
+ labels:
+ app: kolab
+ app.kubernetes.io/component: kolab
+ app.kubernetes.io/instance: kolab
+ app.kubernetes.io/name: kolab
+ app.kubernetes.io/part-of: kolab-app
+ app.openshift.io/runtime: php
+ app.openshift.io/runtime-version: latest
+ name: kolab
+spec:
+ progressDeadlineSeconds: 600
+ replicas: 1
+ revisionHistoryLimit: 10
+ selector:
+ matchLabels:
+ app: kolab
+ strategy:
+ rollingUpdate:
+ maxSurge: 1
+ timeoutSeconds: 120
+ maxUnavailable: 1
+ type: RollingUpdate
+ template:
+ metadata:
+ creationTimestamp: null
+ labels:
+ app: kolab
+ deployment: kolab
+ spec:
+ containers:
+ - envFrom:
+ - secretRef:
+ name: kolab
+ - configMapRef:
+ name: kolab
+ image: kolab:latest
+ imagePullPolicy: Always
+ startupProbe:
+ exec:
+ command:
+ - ./artisan
+ - octane:status
+ failureThreshold: 30
+ periodSeconds: 10
+ timeoutSeconds: 5
+ readinessProbe:
+ failureThreshold: 3
+ exec:
+ command:
+ - ./artisan
+ - status:health
+ - --check=DB
+ - --check=Redis
+ initialDelaySeconds: 30
+ periodSeconds: 10
+ successThreshold: 1
+ timeoutSeconds: 5
+ livenessProbe:
+ failureThreshold: 3
+ exec:
+ command:
+ - ./artisan
+ - octane:status
+ initialDelaySeconds: 30
+ periodSeconds: 10
+ successThreshold: 1
+ timeoutSeconds: 5
+ name: kolab
+ env:
+ - name: KOLAB_ROLE
+ value: octane
+ - name: DB_HOST
+ valueFrom:
+ secretKeyRef:
+ key: database-host
+ name: mariadb
+ - name: DB_USERNAME
+ valueFrom:
+ secretKeyRef:
+ key: database-user
+ name: mariadb
+ - name: DB_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ key: database-password
+ name: mariadb
+ - name: DB_DATABASE
+ valueFrom:
+ secretKeyRef:
+ key: database-name
+ name: mariadb
+ - name: REDIS_HOST
+ value: redis
+ - name: REDIS_PORT
+ value: "6379"
+ - name: REDIS_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ key: database-password
+ name: redis
+ ports:
+ - containerPort: 8000
+ protocol: TCP
+ terminationMessagePath: /dev/termination-log
+ terminationMessagePolicy: File
+ dnsPolicy: ClusterFirst
+ restartPolicy: Always
+ schedulerName: default-scheduler
+ terminationGracePeriodSeconds: 30
diff --git a/kustomize/base/kolab-imagestream.yaml b/kustomize/base/kolab-imagestream.yaml
new file mode 100644
index 00000000..f81306f1
--- /dev/null
+++ b/kustomize/base/kolab-imagestream.yaml
@@ -0,0 +1,7 @@
+apiVersion: image.openshift.io/v1
+kind: ImageStream
+metadata:
+ name: kolab
+spec:
+ lookupPolicy:
+ local: false
diff --git a/kustomize/base/kolab-route.yaml b/kustomize/base/kolab-route.yaml
new file mode 100644
index 00000000..91059c25
--- /dev/null
+++ b/kustomize/base/kolab-route.yaml
@@ -0,0 +1,24 @@
+apiVersion: route.openshift.io/v1
+kind: Route
+metadata:
+ annotations:
+ app.openshift.io/connects-to: '[{"apiVersion":"apps.openshift.io/v1","kind":"DeploymentConfig","name":"mariadb"}]'
+ openshift.io/host.generated: "true"
+ labels:
+ app: kolab
+ app.kubernetes.io/component: kolab
+ app.kubernetes.io/instance: kolab
+ app.kubernetes.io/name: kolab
+ app.kubernetes.io/part-of: kolab-app
+ name: kolab
+spec:
+ port:
+ targetPort: 8000-tcp
+ tls:
+ insecureEdgeTerminationPolicy: Redirect
+ termination: edge
+ to:
+ kind: Service
+ name: kolab
+ weight: 100
+ wildcardPolicy: None
diff --git a/kustomize/base/kolab-services-route.yaml b/kustomize/base/kolab-services-route.yaml
new file mode 100644
index 00000000..b8127dad
--- /dev/null
+++ b/kustomize/base/kolab-services-route.yaml
@@ -0,0 +1,21 @@
+apiVersion: route.openshift.io/v1
+kind: Route
+metadata:
+ labels:
+ app: kolab
+ app.kubernetes.io/component: kolab
+ app.kubernetes.io/instance: kolab
+ app.kubernetes.io/name: kolab
+ app.kubernetes.io/part-of: kolab-app
+ name: kolab-services
+spec:
+ subdomain: services.kolab-kolab-dev
+ port:
+ targetPort: 8000-tcp
+ tls:
+ insecureEdgeTerminationPolicy: Redirect
+ termination: edge
+ to:
+ kind: Service
+ name: kolab
+ weight: 100
diff --git a/kustomize/base/kolab-svc.yaml b/kustomize/base/kolab-svc.yaml
new file mode 100644
index 00000000..1717d3ab
--- /dev/null
+++ b/kustomize/base/kolab-svc.yaml
@@ -0,0 +1,23 @@
+apiVersion: v1
+kind: Service
+metadata:
+ annotations:
+ app.openshift.io/connects-to: '[{"apiVersion":"apps.openshift.io/v1","kind":"DeploymentConfig","name":"mariadb"}]'
+ labels:
+ app: kolab
+ app.kubernetes.io/component: kolab
+ app.kubernetes.io/instance: kolab
+ app.kubernetes.io/name: kolab
+ app.kubernetes.io/part-of: kolab-app
+ name: kolab
+spec:
+ internalTrafficPolicy: Cluster
+ ipFamilies:
+ - IPv4
+ ipFamilyPolicy: SingleStack
+ ports:
+ - name: 8000-tcp
+ port: 8000
+ selector:
+ app: kolab
+ deployment: kolab
diff --git a/kustomize/base/kustomization.yaml b/kustomize/base/kustomization.yaml
new file mode 100644
index 00000000..793c00d1
--- /dev/null
+++ b/kustomize/base/kustomization.yaml
@@ -0,0 +1,17 @@
+resources:
+ - fedora-imagestream.yaml
+ - fedora-s2i-core-buildconfig.yaml
+ - fedora-s2i-core-imagestream.yaml
+ - swoole-buildconfig.yaml
+ - swoole-imagestream.yaml
+ - kolab-buildconfig.yaml
+ - kolab-deployment.yaml
+ - horizon-deployment.yaml
+ - kolab-imagestream.yaml
+ - kolab-route.yaml
+ - kolab-services-route.yaml
+ - kolab-admin-route.yaml
+ - kolab-svc.yaml
+ - overlay-buildconfig.yaml
+ - overlay-deployment.yaml
+ - overlay-imagestream.yaml
diff --git a/kustomize/base/overlay-buildconfig.yaml b/kustomize/base/overlay-buildconfig.yaml
new file mode 100644
index 00000000..d71f71ee
--- /dev/null
+++ b/kustomize/base/overlay-buildconfig.yaml
@@ -0,0 +1,25 @@
+apiVersion: build.openshift.io/v1
+kind: BuildConfig
+metadata:
+ name: overlay
+spec:
+ failedBuildsHistoryLimit: 5
+ nodeSelector: null
+ output:
+ to:
+ kind: ImageStreamTag
+ name: overlay:latest
+ runPolicy: Serial
+ strategy:
+ sourceStrategy:
+ env:
+ - name: LARAVEL_ENV
+ value: prod
+ from:
+ kind: ImageStreamTag
+ name: kolab:latest
+ type: Source
+ successfulBuildsHistoryLimit: 5
+ triggers:
+ - type: ImageChange
+ - type: ConfigChange
diff --git a/kustomize/base/overlay-deployment.yaml b/kustomize/base/overlay-deployment.yaml
new file mode 100644
index 00000000..ce91c241
--- /dev/null
+++ b/kustomize/base/overlay-deployment.yaml
@@ -0,0 +1,118 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ annotations:
+ alpha.image.policy.openshift.io/resolve-names: '*'
+ app.openshift.io/connects-to: '[{"apiVersion":"apps.openshift.io/v1","kind":"DeploymentConfig","name":"mariadb"}]'
+ app.openshift.io/route-disabled: "false"
+ image.openshift.io/triggers: >-
+ [{"from":{"kind":"ImageStreamTag","name":"overlay:latest"},"fieldPath":"spec.template.spec.containers[?(@.name==\"overlay\")].image"}]
+ labels:
+ app: overlay
+ app.kubernetes.io/component: overlay
+ app.kubernetes.io/instance: overlay
+ app.kubernetes.io/name: overlay
+ app.kubernetes.io/part-of: kolab-app
+ app.openshift.io/runtime: php
+ app.openshift.io/runtime-version: latest
+ name: overlay
+spec:
+ progressDeadlineSeconds: 600
+ replicas: 1
+ revisionHistoryLimit: 10
+ selector:
+ matchLabels:
+ app: overlay
+ strategy:
+ rollingUpdate:
+ maxSurge: 1
+ timeoutSeconds: 120
+ maxUnavailable: 1
+ type: RollingUpdate
+ template:
+ metadata:
+ creationTimestamp: null
+ labels:
+ app: overlay
+ deployment: overlay
+ spec:
+ containers:
+ - envFrom:
+ - secretRef:
+ name: kolab
+ - configMapRef:
+ name: kolab
+ image: overlay:latest
+ imagePullPolicy: Always
+ startupProbe:
+ exec:
+ command:
+ - ./artisan
+ - octane:status
+ failureThreshold: 30
+ periodSeconds: 10
+ timeoutSeconds: 5
+ readinessProbe:
+ failureThreshold: 3
+ exec:
+ command:
+ - ./artisan
+ - status:health
+ - --check=DB
+ - --check=Redis
+ initialDelaySeconds: 30
+ periodSeconds: 10
+ successThreshold: 1
+ timeoutSeconds: 5
+ livenessProbe:
+ failureThreshold: 3
+ exec:
+ command:
+ - ./artisan
+ - octane:status
+ initialDelaySeconds: 30
+ periodSeconds: 10
+ successThreshold: 1
+ timeoutSeconds: 5
+ name: overlay
+ env:
+ - name: KOLAB_ROLE
+ value: octane
+ - name: DB_HOST
+ valueFrom:
+ secretKeyRef:
+ key: database-host
+ name: mariadb
+ - name: DB_USERNAME
+ valueFrom:
+ secretKeyRef:
+ key: database-user
+ name: mariadb
+ - name: DB_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ key: database-password
+ name: mariadb
+ - name: DB_DATABASE
+ valueFrom:
+ secretKeyRef:
+ key: database-name
+ name: mariadb
+ - name: REDIS_HOST
+ value: redis
+ - name: REDIS_PORT
+ value: "6379"
+ - name: REDIS_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ key: database-password
+ name: redis
+ ports:
+ - containerPort: 8000
+ protocol: TCP
+ terminationMessagePath: /dev/termination-log
+ terminationMessagePolicy: File
+ dnsPolicy: ClusterFirst
+ restartPolicy: Always
+ schedulerName: default-scheduler
+ terminationGracePeriodSeconds: 30
diff --git a/kustomize/base/overlay-imagestream.yaml b/kustomize/base/overlay-imagestream.yaml
new file mode 100644
index 00000000..0c1050e4
--- /dev/null
+++ b/kustomize/base/overlay-imagestream.yaml
@@ -0,0 +1,7 @@
+apiVersion: image.openshift.io/v1
+kind: ImageStream
+metadata:
+ name: overlay
+spec:
+ lookupPolicy:
+ local: false
diff --git a/kustomize/base/swoole-buildconfig.yaml b/kustomize/base/swoole-buildconfig.yaml
new file mode 100644
index 00000000..83d161e6
--- /dev/null
+++ b/kustomize/base/swoole-buildconfig.yaml
@@ -0,0 +1,29 @@
+apiVersion: build.openshift.io/v1
+kind: BuildConfig
+metadata:
+ labels:
+ name: docker-build
+ name: swoole
+spec:
+ failedBuildsHistoryLimit: 5
+ nodeSelector: null
+ output:
+ to:
+ kind: ImageStreamTag
+ name: swoole:latest
+ runPolicy: Serial
+ source:
+ contextDir: docker/swoole
+ git:
+ ref: dev/mollekopf
+ uri: https://git.kolab.org/source/kolab.git
+ type: Git
+ strategy:
+ dockerStrategy:
+ from:
+ kind: ImageStreamTag
+ name: fedora-s2i-core:latest
+ type: Docker
+ successfulBuildsHistoryLimit: 5
+ triggers:
+ - type: ConfigChange
diff --git a/kustomize/base/swoole-imagestream.yaml b/kustomize/base/swoole-imagestream.yaml
new file mode 100644
index 00000000..c0b95f86
--- /dev/null
+++ b/kustomize/base/swoole-imagestream.yaml
@@ -0,0 +1,7 @@
+apiVersion: image.openshift.io/v1
+kind: ImageStream
+metadata:
+ name: swoole
+spec:
+ lookupPolicy:
+ local: false
diff --git a/kustomize/overlays/dev/kolab-configmap.yaml b/kustomize/overlays/dev/kolab-configmap.yaml
new file mode 100644
index 00000000..9b22cc9f
--- /dev/null
+++ b/kustomize/overlays/dev/kolab-configmap.yaml
@@ -0,0 +1,26 @@
+kind: ConfigMap
+apiVersion: v1
+metadata:
+ name: kolab
+ namespace: kolab-dev
+immutable: false
+data:
+ APP_DOMAIN: 'kolab-kolab-dev.apps.ocp04.ait-msp-infra.net'
+ ASSET_URL: 'https://kolab-kolab-dev.apps.ocp04.ait-msp-infra.net'
+ APP_NAME: 'Kolab'
+ APP_URL: 'https://kolab-kolab-dev.apps.ocp04.ait-msp-infra.net'
+ APP_PUBLIC_URL: 'https://kolab-kolab-dev.apps.ocp04.ait-msp-infra.net'
+ APP_WITH_SERVICES: 'true'
+ APP_WITH_WALLET: 'false'
+ APP_WITH_SIGNUP: 'true'
+ APP_LDAP: 'false'
+ APP_IMAP: 'false'
+ APP_DEBUG: 'true'
+ APP_ENV: 'local'
+ LOG_CHANNEL: 'stdout'
+ LOG_SLOW_REQUESTS: '5'
+ LOG_LEVEL: 'debug'
+ QUEUE_CONNECTION: 'redis'
+ PASSPORT_PROXY_OAUTH_CLIENT_ID: '942edef5-3dbd-4a14-8e3e-d5d59b727bee'
+ PASSPORT_PROXY_OAUTH_CLIENT_SECRET: 'L6L0n56ecvjjK0cJMjeeV1pPAeffUBO0YSSH63wf'
+
diff --git a/kustomize/overlays/dev/kolab-secret.yaml b/kustomize/overlays/dev/kolab-secret.yaml
new file mode 100644
index 00000000..2e26a9ca
--- /dev/null
+++ b/kustomize/overlays/dev/kolab-secret.yaml
@@ -0,0 +1,11 @@
+apiVersion: v1
+kind: Secret
+metadata:
+ name: kolab
+type: Opaque
+data:
+ APP_KEY: YmFzZTY0OkZHNkVDenlBTVNteVgrZVl3Ty9GVzNid25hcmJLa0JocXRPNjV2bE1iMUU9Cg==
+ CA_CERT: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZKekNDQXcrZ0F3SUJBZ0lVQWJ2UkZNVkZNd0VhQU1Jc21waFlyNkJFbDcwd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0ZURVRNQkVHQTFVRUNnd0tSWGhoYlhCc1pTQkRRVEFlRncweU1qRXlNRGN5TWpBNU5ESmFGdzB6TWpFeQpNRFF5TWpBNU5ESmFNQlV4RXpBUkJnTlZCQW9NQ2tWNFlXMXdiR1VnUTBFd2dnSWlNQTBHQ1NxR1NJYjNEUUVCCkFRVUFBNElDRHdBd2dnSUtBb0lDQVFEQjF0ZFdFMThzU3VLYXY5THdxeVJPTzhKUW5qeFdkQ0U0NWtrTlEvZGgKbGd6a1FhZVI4alBPMmZteFVUbjVTRkNyYm9pVEo4SzEvY1puL1FSVml0ZDRXZWQyUklUdnB5eEtDUG5CZDNhZQpYZVI1bHVmbit6d1Z0WUZ2c3FSWWUvUE1PY3k3dXlEaEJ4aWNQU25PTHR2Nzgvc2tjRG1PK1JaQWpVLzlyUEJ0CjhrNTlLRTZNNDRIVGpuSk5ybktTbUFLbWJiNzBxQVRiN1R0SW9WdVUydER6OVp2Qyt1RkU2YStrOHFwa0MrVzUKbXhpZFl3T0hCbUFNQTl6YmZmWFpLd09KQ1pwZGMwTmh1M1BjWlM5eTJOWkNVVTBxTVp4WSthSTNLK2UrcXowUAo0MWkvRWhqWDd6K3BYWDd0RURiRmdQZHVvWW16cmN2dmlDRWpWdWJFT1pTVjc1ZmlKdzJ3c1R5bWVZZVlpSkJ1CmFUeGt5YkovZEJMbnhNQ1cydEo5U1NFMlcrbU50N0hsd3pjc2dyOHdkdXJIUTNrWmRYSVh4blZ0eEp5cXA1YXUKeEVDdjNLS092SlF4YXphWkN5TGxtNGphRmMzbUo5UkFzZ2lwRFQvMTU0TXlYR2g3TG5RSG9VeGJ2L2hnNy9YRwo3OXZYdzhvaFFQbnhXRERIMklCM3M5MFdoMHlhODJjOEluN2FzOWhKV3lKdU95YXQ0QjQyOE9QRmVzQ2JrUFkzClNtWCtoWnNnQzVsdFhYV0JtMnJQMzJBRnNOazFieGt0S25kUWFjK0Z3RXFiaWRMTkYxQTYxL0thV2pTTXBpN2YKQ3VzKzRLRnlUTzB0TXhwUVFsUk1ydlF3M3NrbUlnYkluRHQyRDcrR3laTzhzTlQrY0haNG1YN0tyOGZ2TC9IUApPd0lEQVFBQm8yOHdiVEFkQmdOVkhRNEVGZ1FVcGd0SzlEdy9vL0wwY1A5QWRRTVA4NkRpSWVZd0h3WURWUjBqCkJCZ3dGb0FVcGd0SzlEdy9vL0wwY1A5QWRRTVA4NkRpSWVZd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBYUJnbGcKaGtnQmh2aENBUTBFRFJZTFUyVnNaaUJUYVdkdVpXUXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnSUJBTEF0Ry9jZgo4QVpWTkhiRFJ4WTFsTWl0aFdaS2R4VFVwRzhxQzdnOWpaWUtxMEw1a2wvMDhOaGE4Znc4S1JGNm9ybGY2WjVVCkxDeDNWNnpGd0ZwYjZzRlBIUnQ3K0xJeTc3UUlGNGJvWFpULzlYa1FFTVJhaDZWNXN1b2U3RzNMRFd6NXdYbGQKbVA5NVdwY0tBSmZ4cVByMVlUUUpLdUVnTDJjZ1FnMUdpTzVGQTh2a2MyWnpUOStjNjNmTWc1enhWdHozc2VJRQpiOWpjYWhOM2NZNmpzYmlGZVlURW00ZFRvUG9xMGxNN1V5cElPSHJ6NFZUWkxTOHJ1TVdrSk5UOUpjOXovMEtpCklDZUwvYkNIbHFVM09xc0RjaXQxNndPSU1NL25HRzBwZHdycWRUbkFxMG9xWmpTSHBhREEwUVMzenRoRmpKMFMKVE1GT2M0MUIwVFZkeEFtdnVESWlOMjlNQmF5QUNSa2ZORnJvODdBNXRFMGR5N1B1a1JsUktNYTh0NW5KQzhlSQpVdlVyVzBJNWI0TUpVMVZOMWlqcmlGcTVzdDJ0bmdwdWI4bmtLOTU4VzYxdGRjcVBucGdJd2JoRTdMRWpZYzBlCjVIVEFpbzZMVGtqSVl6bDdiQzFBZ0xTUUtEaDN3a0JUMkZkLzVuM0drZEpFRXE3bDdNbzJBeDgyTU9zejZiRTcKNUZGWm9zdWtxL3EyWGN3Rk5VaTZRbTJQK0EweUV5OERlM3NVTXhFSDdkem5VMSs1eFNraHhHTDVFb3R5MnBycApJeUhWb1VOekE1VElFYWJFYzNnQmhKTk5WN1dqR1ZheXJYNWc1NjhuSmNMSHNyRWFOY2U5cWh6YUpPSE9jL2w3CnFPRmNmMUpiQlFOM1VCcjZFK1ZLemJnQ3dkZnhYS3lqMVFSNAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
+ CA_PRIVATE_KEY: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpRd0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1Mwd2dna3BBZ0VBQW9JQ0FRREIxdGRXRTE4c1N1S2EKdjlMd3F5Uk9POEpRbmp4V2RDRTQ1a2tOUS9kaGxnemtRYWVSOGpQTzJmbXhVVG41U0ZDcmJvaVRKOEsxL2NabgovUVJWaXRkNFdlZDJSSVR2cHl4S0NQbkJkM2FlWGVSNWx1Zm4rendWdFlGdnNxUlllL1BNT2N5N3V5RGhCeGljClBTbk9MdHY3OC9za2NEbU8rUlpBalUvOXJQQnQ4azU5S0U2TTQ0SFRqbkpOcm5LU21BS21iYjcwcUFUYjdUdEkKb1Z1VTJ0RHo5WnZDK3VGRTZhK2s4cXBrQytXNW14aWRZd09IQm1BTUE5emJmZlhaS3dPSkNacGRjME5odTNQYwpaUzl5Mk5aQ1VVMHFNWnhZK2FJM0srZStxejBQNDFpL0Voalg3eitwWFg3dEVEYkZnUGR1b1ltenJjdnZpQ0VqClZ1YkVPWlNWNzVmaUp3MndzVHltZVllWWlKQnVhVHhreWJKL2RCTG54TUNXMnRKOVNTRTJXK21OdDdIbHd6Y3MKZ3I4d2R1ckhRM2taZFhJWHhuVnR4SnlxcDVhdXhFQ3YzS0tPdkpReGF6YVpDeUxsbTRqYUZjM21KOVJBc2dpcApEVC8xNTRNeVhHaDdMblFIb1V4YnYvaGc3L1hHNzl2WHc4b2hRUG54V0RESDJJQjNzOTBXaDB5YTgyYzhJbjdhCnM5aEpXeUp1T3lhdDRCNDI4T1BGZXNDYmtQWTNTbVgraFpzZ0M1bHRYWFdCbTJyUDMyQUZzTmsxYnhrdEtuZFEKYWMrRndFcWJpZExORjFBNjEvS2FXalNNcGk3ZkN1cys0S0Z5VE8wdE14cFFRbFJNcnZRdzNza21JZ2JJbkR0MgpENytHeVpPOHNOVCtjSFo0bVg3S3I4ZnZML0hQT3dJREFRQUJBb0lDQUVkeEloT1k5ekp4ZFR4NDU4dUpJRXZ2ClRZcCtENW9EbWowSTd6TEM4cG5XZm5EZ1c5ejRLaTBhZktOa1h4d29FWWRscVZPblMyWGRIek96ZHRYNllyajYKVmN0cXJKNVJmSXJhN1FabnUrSFpsRHhXS0tvQkdGK2Q4cE5UQWF5VkhzR09LZzJsQmhTNkUxRitYM3FkSGJvcQpiYzA3eVpNTzdpc2ppakJpZllqZ1RocGw4VEdQSm9udERlYmduVnkzUnY3Rkl5UzBDbnB1WUxPL3VPdlBqRVRtCktKNy83V2dEUXhmbDBuUW1TR2lVcDhsV05YWWVIT2RBd3pWb291U0VMSHprKzY1bXJaYUhTc2dYeVJtb25xdDUKb0ptbENFMW8wR2RLT05NMjlMMzIybjR0c3RkZldCVFpuMDdMYzR4dW9JTjNhVE8rb2hQcUZlQ2JCbG1iS1U1SApZZ2ExT053bTdIa2NUdytFK3RMWkgvZnFYZFJ3TlNsc1dxclZ3RzhXQWN5eU56RDg0cjhWRjJEK0tKRTV3MHNuCnFnNU41UUxBY2RUQnJuWVZMaHZsSnBDQlUvbW5MMTVYQnBodGs2QitjV1lrbk0rdDNVcUJpbGpCbGU3WENpbE4KbjQxdVVoOWxWMExRUTZ3RG9IcXh3aDVNZ28xNnFFblhLNDVGVmNHQ2dES3F6dUI5ZkltRk84TTlCYVZuaHovYwo2bUQxTm5PQzVlVXR5dHByZDBSTGRsenRIWlhlV1h3amcyVEFObEdFWW5rYisyOFF6bjhFS0JuWHlYZXI4NEpOCno4VHdwcjlrYmR2NGJzOHp3enkwTWd2WU0zMTVyNFlQWmNRNzB3SDIwYUxtelhWcHp3RUZvMmFUdThSZEQyVnoKVUJtVlQzWFE2Z0hwL2J3dzk0VnBBb0lCQVFEbUUyVm0zNWh6R3JoUndMaXdjMWVVek1zcUoxdEljdkxSeXBkZQpGQ0dqTllQNUlrclNnaU5wMzUycUZNb29sME1XUHJBc3JZS2krRHhDcERKTHlBaUNHenZSMXVnWVZxQmtneCt0CkVvTjFBNnRRNlZlUkEyN1ljSkhpeFZGZmV4ZTNTbnFzNmdTbWFTWG1Wd1c4ZkpxSmNjRWswZ1FmTlFKQ0M0RHoKclVXMk1rb0tFdFFJbzAra0tTa3RUWlJIdkw0M2JQeEgvajczQXB0dWphbDlITjZycFVmaWF1N01nVDNPdWhvVQpVd2tXTzhTd2E0YmdGWDl3SVNmZVRaZjNTVjNNbTJTSmQ4d1hOZG1yV2FrYVRQRmpqTXJCempSMWQyNTJRdUdSClU2SmdhdW5DeUNpdGg5U3FIcGRRYnFrNU1hbXZaSWp0R3hSQXNoT3RoazdTdlROSkFvSUJBUURYcmpEeXNtRmwKT3BaU3VFeE5pbXRRMmx1VTZuNEI5M05yaWRWb00zSXJvYjU2ZjdXRzlBNzZPTEJyKzdrQjQ5elZRNkhhbkJRLwpCZDBKdXA3Q3RKZW1wdGU2R0FvVncvUlhDRm9vbEJGNWN1ajZiOFVLdzFBNlFPREtsbkxRZTRua3oxOGYrdHN4Cm9kSlhVcGluSjhZbUt5em9lMFpmbm5JYTE0R1cwMUw0YzFjMlNqVHN6TWkxMWZUQTlOTXgxdkEyZlVTZ0cwRloKeG5TUzZsbHZlSFV3NjJPa0xIMEdwMjgwM0x2VG1pNjlCR0VSVm5uZ1ppMVdOanhpN0Q0Q3k5VTYxV3I2QnVxNwpSc1diczJCZVo3LzRUU0ZKSXNsSjZ2UzJCMUNUTW4yaTNmRHB0ZUJxOVV3QVdrTzdycWtmNzZ0VnM1OVltamsyCmFqYjlneENHZFNwakFvSUJBUUNpd0tYQ2wva25zNGNmamMwWVJQOTNhMGRza2xxb2JXZ0hyK0JUMUxuVzBreUIKT0JqbHdObDhVNHNjZlloa0hseCtwK25JTVJWd1kxbDlhdG1KY2Y5U3lpRU8xNDluYUNBZCtnTzJVcHBiZERVRQpENHk2TUV1QklHQ1NvakpsOEpWZU8zbDhTQzd4NlArK2FXRE5iUGVFc3N1R1dHcENDU1dId3N0OWxOenpmYStTCllLOU5UUGxSanl4cHQ2OWs3OGMvUGdGWWpDbk9ZakhCaXNTU2xKR1BxbU9uYnkxdHpSOEQxZklNM3BCWEFnQ3AKSytkRkxPL3hTZ01CNXJIUlpEek9PRDV1WUNnbll4aVBkZVdCalZ4VXA0dm1mUS91NklWamN2eE42WE83OE9WYgp2R3ZLRllRQ3M1RW1mS0dJcS9EMCtaRkM2Unp5aHdZVWdpWFFQYmJCQW9JQkFRREJEOFB3KzR3RE9UWm1SV0xICjVpZTU4RHdhU08wU2haWmpwTFhLMklKU1hDNU5LUlF0QVRxRzhVZTY0VkR5U0MzZEdQVkE0b1dkQkhxZnd0VnEKSkkyN040M1Ruc0VvU29mbGdDeDBObGFPQ0RaVU5zaUNvZUttd254MTI4WmFxTHIrZmtJQU5tVVBRSE13aDFidQpDY1J0VmlpVTBnUmtnMGhRanFnSmdwQzZwVVJqN0hrRG55dnEyT0tGOXFFMTg5aUNiZytINGQzVnByZWk2dk96CnZIZnFta3BQSXlPbldTbEtnR3dCTmZxd1o4TWI2ZlNlMGRlelhFa2hvNmEraWdjTTZ3MGZVaUc4RWRYQlVnZnAKZWFWMWRsVmRTaTQwWklVNGk4T3NmMzNHMURSYWY5dXE0bmh0dUY3NUdaZDZadWRQaDhJVFpibmc0NkxsdXZTSAo1MGxSQW9JQkFHdGsrTFMyNmFsc1J2elpXaVRtWUZUUmczaWtET29yRjF1YlpTbFRIcFAxZTBDdzNSWTU3L0dlClgySENPcHFGK3puT3VSK09HZDZqb2hPSGl2cnNrTFNJcHNpZW5iQSs3RExSUGpjTlB0aHI1TlMwUEhGOUlIYXQKaUJOcDZJNGJjaHAvN09OVzFUaWRWd2tNcm95RXhWb2NLbUpPUHM5amxnVHdCVzdtK1Fya013bDc3Y2RPQXQ4agpKN0RQMXRQVnVYUXBpWlRLbHhlamJwdHgzUFZoMXVDVTVBTngwNlkvN0lWZklCUDdRVkcyREVRRDJ4WEJFYmt4ClFwTHh4SGhkS21GZ2NIZWJPaHpmTUZobzJFZHJwZzlMRUVkYzlmQTlRRnc3MGJZNmJJTC9IZFpJQXhmeDEzNU0KMll0WkVuM0xDR1NpZThxOHJPYUdzZUs4TWVtQk9zbz0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo=
+ PASSPORT_PRIVATE_KEY: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tDQpNSUlKUWdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0NTd3dnZ2tvQWdFQUFvSUNBUURJRGFkL0plOGZubUphDQpYc3lYVkwxd3U5OW5HZlBiOXdIREpQbjUzK2R3QVBGSEJXTDcxVXdxc0d5a2ZVSWxvWmZYbWpXZHVoUnhtbVlNDQpSUzJiQ3p4U2sza3hHY1lZU0psL1NDOG1uaFJzT0t0OUM2WHl4bmpac3RvRG1vT1Vqd3ZrN2FBYzFRQ3FSQUJaDQpJTnF1YzU3bEVteGVIMU9SUUl0TWUyVU8vQnc4MElDdVlFTUpLNFNVVm5sclVnQmYwVTVzRUNxVDRiRVQxZ1lIDQp2cW1qa0QwY2FscklCdVRiVUFKQXhkeEZTSHRqdXpkcndkRWQ1QVRjc3BGSXp2dEd6akxWSFpwSjlid3lWaG5YDQozMmdpQzEvYVIwMWxrNkl1aTFkZlIybFB0aVM3YnBYTWN2eTBuWWp0NmNJc1RaRVdqUmNiMVBpSG9STlhDZEhDDQp3SnZOd08xZEZOSG1KOUZlZW4wbk5OR3ppYUlyb2FZVXVzd2Y1Rm5QdGxzVHVaYUFjYjNZSXZnRDVILys5MEE0DQpxYXMzWHN6Q0F1Q2RLblVrR3dNR0xjMnlLQ3BSbUJIUFZLV05Sc2VSWGFLYVZUaFNQYVBhOTdPV2hvanhNaDBwDQpQSFFmUDBtN1QyaXRXKzlBYkgwaTd2aEVPai9sS0JXblNndjF0d012MmdpSllZTFI5WDR5YXpTSGMwZUUzQm5EDQpmV1lvaDJ5di9wbnJlNTZDTkExemtxemNYRXkvOFk4SlBZdk9YOVM0SkErUjAxUXBGck9xRUwzWUZQSWZWbVE1DQo3dGlONDBxTXd0REtCWnFpQWhjTVlSYUZRTW1GK2k0d0FwVnhWdjBtcnJoR09xMDY3aGQreWdjMTI4anN2Z3pIDQprRUs4NzlqeUVVWU1vaFdSS3p2YUJOTGE2c3dVRVFJREFRQUJBb0lDQUErU0tJQllCb1d5Z1R0QmQ3RXJzbGNNDQorSFdBNnA4cldhTER4UVV5N1VPbGZ5SWxCREJQeU03bHpuNzdGT1B5OE91aUlCdzN1SkdqRCtCU25oc2NROFMxDQpuOUEzamxpamhmY0hPa3hLTDVMQTBuQTRNT0YxbTBCdWtGT0pla1pjMy9NZ243Nit3WDkvTFh2Q2QrTHVNdWJuDQppVEhHUkczZzFUYk52KzdycHBNQk01TGZBVGk4ZjJSQVd0RUVuK3pWVU1KT2U5SG8xaXlTRXdRVlRnVGlIQytUDQpBNS9nRVg0VWV5aHBmaHlTYUxBNWlUWEU3eTdoYVpOMy9xRHBJMXUrZnV4aGtubkJPN1c3UitXcWlPTmxlVDkzDQpIMG9SdEtUa3laY3I2c0YranR0YjN5TDdyRG11clZLL1NCTEVzczlMaWducmlMQ2QwL0NKWGg5SGVKa0tOQzlRDQpPcFJtWkh3WkNVbDdIYUhqVjRlWFRkK0xuTVpzTml0b2hEM0l1MHpIQnNSekhlN0xmdExBK2RtaDRQQnZ0bUpzDQpiM0tncEFIMlBLTjQ0a20zWVBOK2M4aTNuVFFZY3FWd0pBMlB5NVlmK1JMSDQ1eE1kS2plQVluUzYraEtXUU50DQpoUlBCV3FMUTlVNmVSUWlhM3gzSnM1RFhpUU1BTFNxeEpRMjUzaFhoNTU4R2ljTHo5Q0l3N2JqS0J6dWh2V0kvDQpUVGYwQ1ptZ3M2b01WRHV6bjU3YXRicGdCcGRoR2pOZnJRUjFFNlRlYnYxeGplazRUUnpzbUVvVjhpbHE0MnloDQpYcVhHKzY5RUxRaHh5QTFldC9kRzNRSDgvK0pFSDNHOE1qLytuZlhCQURvVUpsSzV3MHNqSm5ZSGFwV1pJK0tODQpLWm5lVmpiKzM3S3BwZ1J4dUpheEFvSUJBUUR4b2t0V013L2hiVVpmeHZvcWNiOStoODk1ZzBWcmdtRUsrNEc2DQozTlgwcTRlRE1CR29IQXFxaDZFT0JVdTcxRlQ3UFRCRTRFUkNJM0J5RFJHN3BlR0RNTWpHQjVHbmwvdnk1VmM2DQpBcGhhTC9kNURVUmhLNUV0ZUxWY1dRMGZLZ3o2aC9tN0xldXI1L3o1M1h4TVhTOGxYbjdJZVdXeVVQSFJJbzBBDQpnU3hlUVE4QUJwU2g0K3RaZHJOV2ZlNXFXSnlxM3MxeW9IK1VySHdwd1VRTnBRVTljYzlkYm51SHdlT2MydFNDDQo2SUJJdktSenVuaWlFUXBkTFZaaDArUitvdUtkNjVRMEREWkw2cWJpeVhlUmpvNGpWYmIyOS9ldFJobmdaUTlIDQpCajVJSzJtcjdQQWhBOHNLa1o4eDBuSUJJZGlVU0U3QStGVGl4Y0t6Wm1URWJvYTlBb0lCQVFEVDhuOGVEc3pLDQpSb0ZPdk9LVGRsWFFDV2FONXlPWUUrMEJBalZ6OU1LQzZuNU1wMGVIOEowaTRyZlhWMUFnZnNTRGRFd2U2WnZWDQpJU1NKaHk3NE04dUFLY21DdWhvTlc0MXlzYnYyWGFEUlJudUN2czFtYUlBTndZVGRqMHFmVktPRHhzcXhKWDZIDQpFQ0ExRHpHNkFjc1pGSzJZVUhDK0xScldyTHJXOUJ2dUw3RWkrT0NEcFcvTmF6aFFRbTNCc0VGMnlhaVdJMnB4DQpWK1V4VE1FRDlqOHR2SU5QYmVjQ1dmaHE0Wi9abitmdldJbzZiZnJRajJyb01NZzgyNzNkM05ZRWFURlNBb29IDQo5a082TXN4bldNZHJDQUd6dnRYMGdjOCsxK1hCMGRQTWFuOWtwUEYyYWxtSlBwTHJvY2FPRlIwbVF2OUdiNS9sDQo5Z29BVnJucUZ4SGxBb0lCQUhjOHN4aHlVaC9Yb0thYXRkQkVHVThERGFyVTBHamhDYW8xdWlyUDF2VEp3REZJDQpneTRGeUcybVNCOTNGWXcybDBqelJPSjRHTGJhYmg2WnZHcHd6UHZFRXc5RnBPYWk1VDFUVnR2VmRBRHRNcDJWDQpvbXlnNXg4ZE5jSEFYKzFFL3VxU052WGJEelRoWWNDYlB6OGZyS2d3SFRnb1Q3clNuc0dvM3hPa3FwUklYbktRDQp6TCttalBpMHpvS2IyZzY0YzNjT1F5dVJiK09aeWh1QXQyaFVTbVdyeDd3L1RNNE5LNWkzazY2VnROZ3YzcWNODQpHWUpBRG5FMGNqQU1NL0VaeCtKTjRmQmRKbDRJQ1JwWWVKeG5VRlMzYzNZam55RHVPczYwai9sb1owdU53TE9LDQpWR1MyVG5lRXJKNFZUeFNuOHd3Wk1tT2ZKNlJRR21nVTJ4emp2YkVDZ2dFQkFJOTY1RThtMmNBOWhxQVZBcFd0DQpVRjVyWHIvRnI3VHVHRTNNZnY4bXZONy9lOHpNbVlJUGczRHdabUFqUFowaDlFckJXaDY3S3NGWGxISjl6M0E3DQpNQkp0TjN1R0hNamFKNkZ6YkxsVm5ON1BoaUYycFhva1dEdjN1OGg1anB6YUlXKytEYzFxZ29OUWlWMGlFaG5IDQp5UVFMbVpFNU0zbXE4elpNN0pkRDNmeWEwS0hLTmNNcEpjeThQdjBtVzBMNTNQZGJnUU5TcW1aY2lFMmRsalRtDQphTksvZ1cwdUMycnVHVnZScmZNWGExMytaR1UxdXN1aHEwL1FabDI4cklZYlQ4N2duNERUTXpvOG5wRFlmc09mDQp1REJlMVRnbmdwUHBwTEQ0V3hPZ3htN2wwYVFDZld3YWhzNkFTOW0wUk1RK3l1THlDL3BVNnJ3MG1ZU3RNV0tsDQpoM2tDZ2dFQUpLbmEyRnZWK0NKU2pwcEd6UmpiZUVqek9ZRGFPaTF5UUhEeVFWNEtadldIMkxqTVdQUFV0bEFLDQpIcnh3ZGhGcmFuVG92bmoxMUs0RlYzdTA5WkIyTlBDaGNxK1NzUHk2dGVrNEpTWUtWM3lJSHJWaG1DRHIvRFRHDQpUZnpnaXJoWWV0cVdZYTQ1WXhMcGNtTnVjNnEzTy9RU3pUZlFaNGF2QkhRN2VLV2RoTUY1R1FQSWw0NmhJYnV0DQpNenY3dGJhdThuZzZWK0dCYlEzR2RzWDhVK0lLTEtodW84OWFLcUFkMFNaWWRYc1pkWXhxYkc5UXdJc202NzVYDQp2MUs2bDZWRE9jQzVZZlZZTVR3N3h0bjJpd3VyVHRrZTJNbmQzbW4zbDJhWkpKa3ZBb3pHcUd3VzBjK016UjFvDQpBRUw5ZzZuWjlXMUlUTWtpMDNDNTJqTnNsb0FDQWc9PQ0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQ==
+ PASSPORT_PUBLIC_KEY: LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0NCk1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBeUEybmZ5WHZINTVpV2w3TWwxUzkNCmNMdmZaeG56Mi9jQnd5VDUrZC9uY0FEeFJ3VmkrOVZNS3JCc3BIMUNKYUdYMTVvMW5ib1VjWnBtREVVdG13czgNClVwTjVNUm5HR0VpWmYwZ3ZKcDRVYkRpcmZRdWw4c1o0MmJMYUE1cURsSThMNU8yZ0hOVUFxa1FBV1NEYXJuT2UNCjVSSnNYaDlUa1VDTFRIdGxEdndjUE5DQXJtQkRDU3VFbEZaNWExSUFYOUZPYkJBcWsrR3hFOVlHQjc2cG81QTkNCkhHcGF5QWJrMjFBQ1FNWGNSVWg3WTdzM2E4SFJIZVFFM0xLUlNNNzdSczR5MVIyYVNmVzhNbFlaMTk5b0lndGYNCjJrZE5aWk9pTG90WFgwZHBUN1lrdTI2VnpITDh0SjJJN2VuQ0xFMlJGbzBYRzlUNGg2RVRWd25Sd3NDYnpjRHQNClhSVFI1aWZSWG5wOUp6VFJzNG1pSzZHbUZMck1IK1JaejdaYkU3bVdnSEc5MkNMNEErUi8vdmRBT0ttck4xN00NCndnTGduU3AxSkJzREJpM05zaWdxVVpnUnoxU2xqVWJIa1YyaW1sVTRVajJqMnZlemxvYUk4VElkS1R4MEh6OUoNCnUwOW9yVnZ2UUd4OUl1NzRSRG8vNVNnVnAwb0w5YmNETDlvSWlXR0MwZlYrTW1zMGgzTkhoTndadzMxbUtJZHMNCnIvNlo2M3VlZ2pRTmM1S3MzRnhNdi9HUENUMkx6bC9VdUNRUGtkTlVLUmF6cWhDOTJCVHlIMVprT2U3WWplTksNCmpNTFF5Z1dhb2dJWERHRVdoVURKaGZvdU1BS1ZjVmI5SnE2NFJqcXRPdTRYZnNvSE5kdkk3TDRNeDVCQ3ZPL1kNCjhoRkdES0lWa1NzNzJnVFMydXJNRkJFQ0F3RUFBUT09DQotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0=
diff --git a/kustomize/overlays/dev/kustomization.yaml b/kustomize/overlays/dev/kustomization.yaml
new file mode 100644
index 00000000..2b4db0e0
--- /dev/null
+++ b/kustomize/overlays/dev/kustomization.yaml
@@ -0,0 +1,13 @@
+namespace: kolab-dev
+bases:
+ - ../../base
+resources:
+ - namespace.yaml
+ - kolab-secret.yaml
+ - kolab-configmap.yaml
+ - mariadb-deploymentconfig.yaml
+ - mariadb-secret.yaml
+ - mariadb-svc.yaml
+ - redis-deploymentconfig.yaml
+ - redis-secret.yaml
+ - redis-svc.yaml
diff --git a/kustomize/overlays/dev/mariadb-deploymentconfig.yaml b/kustomize/overlays/dev/mariadb-deploymentconfig.yaml
new file mode 100644
index 00000000..4d9b33b3
--- /dev/null
+++ b/kustomize/overlays/dev/mariadb-deploymentconfig.yaml
@@ -0,0 +1,104 @@
+apiVersion: apps.openshift.io/v1
+kind: DeploymentConfig
+metadata:
+ annotations:
+ template.alpha.openshift.io/wait-for-ready: "true"
+ labels:
+ app.kubernetes.io/part-of: kolab-app
+ template: mariadb-ephemeral-template
+ template.openshift.io/template-instance-owner: bfb774ba-6fdd-49d0-95e1-676a82425e3f
+ name: mariadb
+spec:
+ replicas: 1
+ revisionHistoryLimit: 10
+ selector:
+ name: mariadb
+ strategy:
+ activeDeadlineSeconds: 21600
+ recreateParams:
+ timeoutSeconds: 600
+ type: Recreate
+ template:
+ metadata:
+ creationTimestamp: null
+ labels:
+ name: mariadb
+ spec:
+ containers:
+ - env:
+ - name: MYSQL_USER
+ valueFrom:
+ secretKeyRef:
+ key: database-user
+ name: mariadb
+ - name: MYSQL_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ key: database-password
+ name: mariadb
+ - name: MYSQL_ROOT_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ key: database-root-password
+ name: mariadb
+ - name: MYSQL_DATABASE
+ valueFrom:
+ secretKeyRef:
+ key: database-name
+ name: mariadb
+ image: image-registry.openshift-image-registry.svc:5000/openshift/mariadb@sha256:8d60c772de8f9e704cdb74370e7829b96810f4a449f334aed9ecde126197be1a
+ imagePullPolicy: IfNotPresent
+ livenessProbe:
+ exec:
+ command:
+ - /bin/sh
+ - -i
+ - -c
+ - MYSQL_PWD="$MYSQL_PASSWORD" mysqladmin -u $MYSQL_USER ping
+ failureThreshold: 3
+ initialDelaySeconds: 30
+ periodSeconds: 10
+ successThreshold: 1
+ timeoutSeconds: 1
+ name: mariadb
+ ports:
+ - containerPort: 3306
+ protocol: TCP
+ readinessProbe:
+ exec:
+ command:
+ - /bin/sh
+ - -i
+ - -c
+ - MYSQL_PWD="$MYSQL_PASSWORD" mysqladmin -u $MYSQL_USER ping
+ failureThreshold: 3
+ initialDelaySeconds: 5
+ periodSeconds: 10
+ successThreshold: 1
+ timeoutSeconds: 1
+ resources:
+ limits:
+ memory: 512Mi
+ terminationMessagePath: /dev/termination-log
+ terminationMessagePolicy: File
+ volumeMounts:
+ - mountPath: /var/lib/mysql/data
+ name: mariadb-data
+ dnsPolicy: ClusterFirst
+ restartPolicy: Always
+ schedulerName: default-scheduler
+ terminationGracePeriodSeconds: 30
+ volumes:
+ - name: mariadb-data
+ test: false
+ triggers:
+ - imageChangeParams:
+ automatic: true
+ containerNames:
+ - mariadb
+ from:
+ kind: ImageStreamTag
+ name: mariadb:10.3-el8
+ namespace: openshift
+ type: ImageChange
+ - type: ConfigChange
diff --git a/kustomize/overlays/dev/mariadb-secret.yaml b/kustomize/overlays/dev/mariadb-secret.yaml
new file mode 100644
index 00000000..4e931f76
--- /dev/null
+++ b/kustomize/overlays/dev/mariadb-secret.yaml
@@ -0,0 +1,19 @@
+apiVersion: v1
+data:
+ database-host: bWFyaWFkYg==
+ database-name: a29sYWJkZXY=
+ database-password: a29sYWI=
+ database-root-password: VzNsY29tMzJAcGgzbGlh
+ database-user: a29sYWI=
+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'']}'
+ labels:
+ template: mariadb-ephemeral-template
+ template.openshift.io/template-instance-owner: bfb774ba-6fdd-49d0-95e1-676a82425e3f
+ name: mariadb
+type: Opaque
diff --git a/kustomize/overlays/dev/mariadb-svc.yaml b/kustomize/overlays/dev/mariadb-svc.yaml
new file mode 100644
index 00000000..7058b25e
--- /dev/null
+++ b/kustomize/overlays/dev/mariadb-svc.yaml
@@ -0,0 +1,19 @@
+apiVersion: v1
+kind: Service
+metadata:
+ annotations:
+ template.openshift.io/expose-uri: mysql://{.spec.clusterIP}:{.spec.ports[?(.name=="mariadb")].port}
+ labels:
+ template: mariadb-ephemeral-template
+ template.openshift.io/template-instance-owner: bfb774ba-6fdd-49d0-95e1-676a82425e3f
+ name: mariadb
+spec:
+ internalTrafficPolicy: Cluster
+ ipFamilies:
+ - IPv4
+ ipFamilyPolicy: SingleStack
+ ports:
+ - name: mariadb
+ port: 3306
+ selector:
+ name: mariadb
diff --git a/kustomize/overlays/dev/namespace.yaml b/kustomize/overlays/dev/namespace.yaml
new file mode 100644
index 00000000..d0b273d9
--- /dev/null
+++ b/kustomize/overlays/dev/namespace.yaml
@@ -0,0 +1,4 @@
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: kolab-dev
diff --git a/kustomize/overlays/dev/redis-deploymentconfig.yaml b/kustomize/overlays/dev/redis-deploymentconfig.yaml
new file mode 100644
index 00000000..f58d4a76
--- /dev/null
+++ b/kustomize/overlays/dev/redis-deploymentconfig.yaml
@@ -0,0 +1,100 @@
+apiVersion: apps.openshift.io/v1
+kind: DeploymentConfig
+metadata:
+ annotations:
+ template.alpha.openshift.io/wait-for-ready: 'true'
+ name: redis
+ generation: 2
+ namespace: kolab-dev
+ labels:
+ app.kubernetes.io/part-of: kolab-app
+ template: redis-ephemeral-template
+ template.openshift.io/template-instance-owner: 43c18c6d-fbf8-4b42-9973-8b076cb68a1c
+spec:
+ strategy:
+ type: Recreate
+ resources: {}
+ activeDeadlineSeconds: 21600
+ recreateParams:
+ timeoutSeconds: 600
+ triggers:
+ - type: ImageChange
+ imageChangeParams:
+ automatic: true
+ containerNames:
+ - redis
+ from:
+ kind: ImageStreamTag
+ name: 'redis:6-el8'
+ namespace: openshift
+ - type: ConfigChange
+ replicas: 1
+ revisionHistoryLimit: 10
+ test: false
+ selector:
+ name: redis
+ app: redis
+ template:
+ metadata:
+ creationTimestamp: null
+ labels:
+ name: redis
+ app: redis
+ spec:
+ volumes:
+ - name: redis-data
+ emptyDir: {}
+ containers:
+ - resources:
+ limits:
+ memory: 512Mi
+ readinessProbe:
+ exec:
+ command:
+ - /bin/sh
+ - '-i'
+ - '-c'
+ - >-
+ test "$(redis-cli -h 127.0.0.1 -a $REDIS_PASSWORD ping)" ==
+ "PONG"
+ initialDelaySeconds: 5
+ timeoutSeconds: 1
+ periodSeconds: 10
+ successThreshold: 1
+ failureThreshold: 3
+ terminationMessagePath: /dev/termination-log
+ name: redis
+ livenessProbe:
+ tcpSocket:
+ port: 6379
+ initialDelaySeconds: 30
+ timeoutSeconds: 1
+ periodSeconds: 10
+ successThreshold: 1
+ failureThreshold: 3
+ env:
+ - name: REDIS_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ name: redis
+ key: database-password
+ securityContext:
+ capabilities: {}
+ privileged: false
+ ports:
+ - containerPort: 6379
+ protocol: TCP
+ imagePullPolicy: IfNotPresent
+ volumeMounts:
+ - name: redis-data
+ mountPath: /var/lib/redis/data
+ terminationMessagePolicy: File
+ image: >-
+ image-registry.openshift-image-registry.svc:5000/openshift/redis@sha256:6855b540f34204970055df2d13a4b0d756a229853a7a8c5fb3255334e0c935d8
+ restartPolicy: Always
+ terminationGracePeriodSeconds: 30
+ dnsPolicy: ClusterFirst
+ securityContext: {}
+ schedulerName: default-scheduler
+ imagePullSecrets: []
+ paused: false
diff --git a/kustomize/overlays/dev/redis-secret.yaml b/kustomize/overlays/dev/redis-secret.yaml
new file mode 100644
index 00000000..6647b96d
--- /dev/null
+++ b/kustomize/overlays/dev/redis-secret.yaml
@@ -0,0 +1,13 @@
+kind: Secret
+apiVersion: v1
+metadata:
+ name: redis
+ namespace: kolab-dev
+ labels:
+ template: redis-ephemeral-template
+ template.openshift.io/template-instance-owner: 43c18c6d-fbf8-4b42-9973-8b076cb68a1c
+ annotations:
+ template.openshift.io/expose-password: '{.data[''database-password'']}'
+data:
+ database-password: VzNsY29tMzJAcGgzbGlh
+type: Opaque
diff --git a/kustomize/overlays/dev/redis-svc.yaml b/kustomize/overlays/dev/redis-svc.yaml
new file mode 100644
index 00000000..78067a92
--- /dev/null
+++ b/kustomize/overlays/dev/redis-svc.yaml
@@ -0,0 +1,22 @@
+kind: Service
+apiVersion: v1
+metadata:
+ name: redis
+ namespace: kolab-dev
+ labels:
+ template: redis-ephemeral-template
+ template.openshift.io/template-instance-owner: 43c18c6d-fbf8-4b42-9973-8b076cb68a1c
+ annotations:
+ template.openshift.io/expose-uri: 'redis://{.spec.clusterIP}:{.spec.ports[?(.name=="redis")].port}'
+spec:
+ ipFamilies:
+ - IPv4
+ ports:
+ - name: redis
+ protocol: TCP
+ port: 6379
+ targetPort: 6379
+ internalTrafficPolicy: Cluster
+ ipFamilyPolicy: SingleStack
+ selector:
+ name: redis

File Metadata

Mime Type
text/x-diff
Expires
Thu, Nov 21, 8:45 PM (9 h, 39 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
80045
Default Alt Text
(42 KB)

Event Timeline