apiVersion: apps/v1
kind: Deployment
metadata:
    name: dawarich
    namespace: dawarich
spec:
    replicas: 1
    selector:
        matchLabels:
            app: dawarich
    template:
        metadata:
            labels:
                app: dawarich
        spec:
            affinity:
              podAffinity:
                requiredDuringSchedulingIgnoredDuringExection:
                  - labelSelector:
                      matchExpressions:
                        - key: cnpg.io/cluster
                          operator: In
                          values:
                            - dawarich-db
                        - key: cnpg.io/instanceRole
                          operator: In
                          values:
                            - primary
                    topologyKey: "kubernetes.io/hostname"
            containers:
              - name: dawarich
                image: freikin/dawarich:0.26.3
                command: ["web-entrypoint.sh"]
                args: ["bin/rails", "server", "-p", "3000", "-b", "::"]
                ports:
                  - containerPort: 3000
                  - containerPort: 9394
                    name: metrics
                env:
                  - name: RAILS_ENV
                    value: "production"
                  - name: REDIS_URL
                    value: "redis://dawarich-svc.dawarich.svc.cluster.local:6379/0"
                  - name: DATABASE_HOST
                    value: "dawarich-db-rw.dawarich.svc.cluster.local"
                  - name: DATABASE_PORT
                    value: "5432"
                  - name: DATABASE_USERNAME
                    valueFrom:
                      secretKeyRef:
                        name: dawarich-db
                        key: username
                  - name: DATABASE_PASSWORD
                    valueFrom:
                      secretKeyRef:
                        name: dawarich-db
                        key: password
                  - name: DATABASE_NAME
                    value: "dawarich"
                  - name: MIN_MINUTES_SPENT_IN_CITY
                    value: "60"
                  - name: APPLICATION_HOSTS
                    value: "timeline.halis.io"
                  - name: TIME_ZONE
                    value: "Europe/Copenhagen"
                  - name: APPLICATION_PROTOCOL
                    value: "http"
                  - name: DISTANCE_UNIT
                    value: "km"
                  - name: PROMETHEUS_EXPORTER_ENABLED
                    value: "false"
                  - name: PROMETHES_EXPORTER_HOST
                    value: "0.0.0.0"
                  - name: PROMETHES_EXPORTER_PORT
                    value: "9394"
                  - name: SECRET_KEY_BASE
                    valueFrom:
                      secretKeyRef:
                        name: dawarich-secrets
                        key: key
                  - name: RAILS_LOG_TO_STDOUT
                    value: "true"
                  - name: SELF_HOSTED
                    value: "true"
                volumeMounts:
                  - mountPath: "/var/app/public"
                    name: dawarich-public
                  - mountPath: "/var/app/tmp/imports/watched"
                    name: dawarich-watched
                  - mountPath: "/var/app/storage"
                    name: dawarich-storage
              - name: sidekiq
                image: freikin/dawarich:0.26.3
                command: ["sidekiq-entrypoint.sh"]
                args: ["bundle", "exec", "sidekiq"]
                env:
                  - name: RAILS_ENV
                    value: "production"
                  - name: REDIS_URL
                    value: "redis://dawarich-svc.dawarich.svc.cluster.local:6379/0"
                  - name: DATABASE_HOST
                    value: "dawarich-db-rw.dawarich.svc.cluster.local"
                  - name: DATABASE_PORT
                    value: "5432"
                  - name: DATABASE_USERNAME
                    valueFrom:
                      secretKeyRef:
                        name: dawarich-db
                        key: username
                  - name: DATABASE_PASSWORD
                    valueFrom:
                      secretKeyRef:
                        name: dawarich-db
                        key: password
                  - name: DATABASE_NAME
                    value: "dawarich"
                  - name: APPLICATION_HOST
                    value: "timeline.halis.io"
                  - name: BACKGROUND_PROCESSING_CONCURRENCY
                    value: "10"
                  - name: APPLICATION_PROTOCOL
                    value: "http"
                  - name: DISTANCE_UNIT
                    value: "km"
                  - name: PROMETHEUS_EXPORTER_ENABLED
                    value: "false"
                  - name: PROMETHEUS_EXPORTER_HOST
                    value: "0.0.0.0"
                  - name: PROMETHEUS_EXPORTER_PORT
                    value: "9394"
                  - name: SECRET_KEY_BASE
                    valueFrom:
                      secretKeyRef:
                        name: dawarich-secrets
                        key: key
                  - name: RAILS_LOG_TO_STDOUT
                    value: "true"
                  - name: SELF_HOSTED
                    value: "true"
                volumeMounts:
                  - mountPath: "/var/app/public"
                    name: dawarich-public
                  - mountPath: "/var/app/tmp/imports/watched"
                    name: dawarich-watched
                  - mountPath: "/var/app/storage"
                    name: dawarich-storage
              - name: redis
                image: redis:7.4.2
                ports:
                  - containerPort: 6379
            volumes:
              - name: dawarich-public
                persistentVolumeClaim:
                  claimName: dawarich-public-pvc
              - name: dawarich-watched
                persistentVolumeClaim:
                  claimName: dawarich-watched-pvc
              - name: dawarich-storage
                persistentVolumeClaim:
                  claimName: dawarich-storage-pvc