---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: sarex-inspections
  namespace: inspections
  labels:
    app: sarex-inspections
spec:
  progressDeadlineSeconds: 600
  replicas: 0
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: sarex-inspections
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: sarex-inspections
    spec:
      containers:
      - env:
        - name: POSTGRES_HOST
          value: postgres-service.inspections.svc.cluster.local
        - name: POSTGRES_PORT
          value: '5432'
        - name: DATABASE_NAME
          value: inspections_db
        - name: API_ADDRESS
          value: '8000'
        - name: ENVIRONMENT
          value: production
        - name: DJANGO_BASIC_AUTH
          valueFrom:
            secretKeyRef:
              key: key
              name: django-auth
        - name: POSTGRES_USER
          valueFrom:
            secretKeyRef:
              key: user
              name: postgres-secret
        - name: POSTGRES_PASSWORD
          valueFrom:
            secretKeyRef:
              key: password
              name: postgres-secret
        - name: YC_S3_ACCESS_KEY_ID
          valueFrom:
            secretKeyRef:
              key: key_id
              name: yc-s3-secret
        - name: YC_S3_SECRET_ACCESS_KEY
          valueFrom:
            secretKeyRef:
              key: access_key
              name: yc-s3-secret
        - name: YC_S3_BUCKET_NAME
          valueFrom:
            secretKeyRef:
              key: storage_bucket_name
              name: yc-s3-secret
        - name: YC_S3_ENDPOINT_URL
          valueFrom:
            secretKeyRef:
              key: endpoint_url
              name: yc-s3-secret
        image: cr.yandex/crp3ccidau046kdj8g9q/sarex-inspections:2a5866e77fd42d62735401ae8301d492c65ef383
        imagePullPolicy: IfNotPresent
        name: sarex-inspections
        ports:
        - containerPort: 8000
          name: http
          protocol: TCP
        resources:
          requests:
            cpu: '1'
            memory: 512Mi
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /opt/server/uwsgi.ini
          name: uwsgi-configmap
          subPath: uwsgi.ini
        - mountPath: /server/config/settings/production.py
          name: django-configmap
          subPath: production.py
      dnsPolicy: ClusterFirst
      imagePullSecrets:
      - name: dockerhub
      nodeSelector:
        name: generic
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
      - configMap:
          defaultMode: 420
          items:
          - key: uwsgi.ini
            path: uwsgi.ini
          name: uwsgi-configmap
        name: uwsgi-configmap
      - configMap:
          defaultMode: 420
          items:
          - key: production.py
            path: production.py
          name: django-configmap
        name: django-configmap
---
apiVersion: v1
kind: Service
metadata:
  name: inspections-service
  namespace: inspections
  labels: {}
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8000
  selector:
    app: sarex-inspections
  sessionAffinity: None
  type: ClusterIP
---
apiVersion: v1
data:
  production.py: "import os\n\nfrom .base import *  # noqa: F401, F403\n\n# Base settings\nDEBUG = True\nALLOWED_HOSTS = [\n    \"localhost\",\n    \"sarex.dsinv.ru\",\n    \"inspections-service.inspections\",\n    \"sarex-inspections-service.inspections-prod\",\n]\n\n\n# REST framework settings\nREST_FRAMEWORK = {\n    \"DEFAULT_FILTER_BACKENDS\": [\n        \"django_filters.rest_framework.DjangoFilterBackend\",\n    ],\n    \"DEFAULT_RENDERER_CLASSES\": [\n        \"rest_framework.renderers.JSONRenderer\",\n    ],\n    \"DEFAULT_PAGINATION_CLASS\": \"rest_framework.pagination.LimitOffsetPagination\",\n    \"PAGE_SIZE\": 100,\n}\n\n\n# Database settings\nDATABASES = {\n    \"default\": {\n        \"ENGINE\": \"core.db.backends.postgis\",\n        \"NAME\": os.getenv(\"POSTGRES_DB\") or \"postgres\",\n        \"HOST\": os.getenv(\"POSTGRES_HOST\") or \"postgres\",\n        \"PORT\": os.getenv(\"POSTGRES_PORT\") or \"5432\",\n        \"USER\": os.getenv(\"POSTGRES_USER\") or \"postgres\",\n        \"PASSWORD\": os.getenv(\"POSTGRES_PASSWORD\") or \"postgres\",\n    }\n}\n\n\n# CORS settings\nCORS_ALLOWED_ORIGINS = [\n    \"https://localhost.8000\",\n    \"https://localhost.8080\",\n    \"https://stage.sarex.io\",\n    \"https://sarex.dsinv.ru\",\n    \"https://api.sarex.io\",\n    \"https://lk.sarex.io\",\n]\nCORS_ALLOW_ALL_ORIGINS = True\nCORS_ALLOW_METHODS = [\n    \"GET\",\n    \"OPTIONS\",\n    \"POST\",\n    \"PUT\",\n    \"PATCH\",\n    \"DELETE\",\n]\n\n\n# S3 settings\nAWS_S3_ENDPOINT_URL = os.getenv(\"YC_S3_ENDPOINT_URL\")\nAWS_STORAGE_BUCKET_NAME = os.getenv(\"YC_S3_BUCKET_NAME\")\nAWS_ACCESS_KEY_ID = os.getenv(\"YC_S3_ACCESS_KEY_ID\")\nAWS_SECRET_ACCESS_KEY = os.getenv(\"YC_S3_SECRET_ACCESS_KEY\")\nAWS_DEFAULT_ACL = \"public-read\"\n\nif AWS_S3_ENDPOINT_URL and AWS_STORAGE_BUCKET_NAME and AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY:\n    STATICFILES_STORAGE = \"storages.backends.s3boto3.S3Boto3Storage\"\n    DEFAULT_FILE_STORAGE = \"storages.backends.s3boto3.S3Boto3Storage\"\n"
kind: ConfigMap
metadata:
  name: django-configmap
  namespace: inspections
---
apiVersion: v1
data:
  uwsgi.ini: '[uwsgi]


    chdir           = /server

    module          = config.wsgi:application

    master          = true

    master-fifo      = /opt/server/uwsgi-backend-server.fifo

    processes       = 8

    http            = 0.0.0.0:8000

    chmod-socket    = 666

    vacuum          = true

    harakiri        = 6000

    buffer-size     = 32768


    static-map = /static=/opt/server/static/

    static-map = /media=/opt/server/media/

    '
kind: ConfigMap
metadata:
  name: uwsgi-configmap
  namespace: inspections
