apiVersion: apps/v1 kind: Deployment metadata: name: kultmost-api namespace: kultmost spec: replicas: 0 selector: matchLabels: app: kultmost-api template: metadata: labels: app: kultmost-api spec: imagePullSecrets: - name: regcred containers: - name: kultmost-api-container image: registry.spiritofweb.ru/avtopost-api:latest command: ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080","--workers","8"] envFrom: - secretRef: name: kultmost livenessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 5 timeoutSeconds: 10 periodSeconds: 2 failureThreshold: 2 readinessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 5 periodSeconds: 10 --- apiVersion: apps/v1 kind: Deployment metadata: name: email-celery namespace: kultmost spec: replicas: 0 selector: matchLabels: app: email-celery template: metadata: labels: app: email-celery spec: imagePullSecrets: - name: regcred containers: - name: email image: registry.spiritofweb.ru/avtopost-api:latest command: ["celery", "-A", "email_task.celery_app_email", "worker", "--loglevel=info"] envFrom: - secretRef: name: kultmost --- apiVersion: apps/v1 kind: Deployment metadata: name: vk-celery namespace: kultmost spec: replicas: 0 selector: matchLabels: app: vk-celery template: metadata: labels: app: vk-celery spec: imagePullSecrets: - name: regcred containers: - name: vk image: registry.spiritofweb.ru/avtopost-api:latest command: ["celery", "-A", "vk.celery_app_vk", "worker", "--loglevel=info"] envFrom: - secretRef: name: kultmost --- apiVersion: v1 kind: Service metadata: name: kultmost-api spec: type: NodePort selector: app: kultmost-api ports: - protocol: TCP port: 80 targetPort: 8080 nodePort: 30080 --- kind: Ingress apiVersion: networking.k8s.io/v1 metadata: name: kultmost namespace: kultmost annotations: cert-manager.io/cluster-issuer: letsencrypt nginx.ingress.kubernetes.io/proxy-body-size: "0" nginx.ingress.kubernetes.io/proxy-read-timeout: "600" nginx.ingress.kubernetes.io/proxy-send-timeout: "600" # nginx.ingress.kubernetes.io/proxy-buffering: "on" nginx.ingress.kubernetes.io/proxy-set-headers: | Host: $http_host X-Forwarded-For: $proxy_add_x_forwarded_for X-Forwarded-Proto: $scheme Upgrade: $http_upgrade Connection: $connection_upgrade nginx.ingress.kubernetes.io/proxy-buffering: "on" spec: ingressClassName: public tls: - hosts: - kultmost.spiritofweb.ru secretName: kultmost-tls-cert rules: - host: kultmost.spiritofweb.ru http: paths: - path: / pathType: Prefix backend: service: name: kultmost-api port: number: 80 # --- # kind: Ingress # apiVersion: networking.k8s.io/v1 # metadata: # name: kultmost # namespace: kultmost # annotations: # cert-manager.io/cluster-issuer: letsencrypt # nginx.ingress.kubernetes.io/proxy-body-size: "0" # nginx.ingress.kubernetes.io/proxy-read-timeout: "600" # nginx.ingress.kubernetes.io/proxy-send-timeout: "600" # # nginx.ingress.kubernetes.io/proxy-buffering: "on" # nginx.ingress.kubernetes.io/proxy-set-headers: | # Host: $http_host # X-Forwarded-For: $proxy_add_x_forwarded_for # X-Forwarded-Proto: $scheme # Upgrade: $http_upgrade # Connection: $connection_upgrade # nginx.ingress.kubernetes.io/proxy-buffering: "on" # spec: # ingressClassName: public # tls: # - hosts: # - avtopost.kultmost.ru # secretName: kultmost-tls-cert # rules: # - host: avtopost.kultmost.ru # http: # paths: # - path: / # pathType: Prefix # backend: # service: # name: kultmost-api # port: # number: 80 --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: redis-kultmost-pvc namespace: kultmost spec: accessModes: - ReadWriteOnce resources: requests: storage: 5Gi # apiVersion: v1 # kind: PersistentVolume # metadata: # name: redis-kultmost-pv # namespace: kultmost # spec: # capacity: # storage: 50Gi # accessModes: # - ReadWriteOnce # persistentVolumeReclaimPolicy: Retain # storageClassName: manual # hostPath: # path: /mnt/nfs/storage/db/redis-kultmost # --- # apiVersion: v1 # kind: PersistentVolumeClaim # metadata: # name: redis-kultmost-pvc # namespace: kultmost # spec: # accessModes: # - ReadWriteOnce # resources: # requests: # storage: 50Gi # storageClassName: manual --- apiVersion: apps/v1 kind: StatefulSet metadata: name: redis namespace: kultmost spec: replicas: 1 selector: matchLabels: app: redis template: metadata: labels: app: redis spec: containers: - name: redis image: redis:latest ports: - containerPort: 6379 volumeMounts: - name: redis-data mountPath: /data livenessProbe: tcpSocket: port: 6379 initialDelaySeconds: 30 periodSeconds: 10 readinessProbe: tcpSocket: port: 6379 initialDelaySeconds: 5 periodSeconds: 5 volumes: - name: redis-data persistentVolumeClaim: claimName: redis-kultmost-pvc --- apiVersion: v1 kind: Service metadata: name: redis namespace: kultmost spec: selector: app: ssh-reverse-tunnel ports: - name: redis-tcp protocol: TCP port: 6379 targetPort: 6379 type: ClusterIP --- apiVersion: v1 kind: Service metadata: name: redis-stage namespace: kultmost spec: selector: app: redis ports: - name: redis port: 6379 targetPort: 6379 nodePort: 30003 type: NodePort --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mongodb-kultmost-pvc namespace: kultmost spec: accessModes: - ReadWriteOnce resources: requests: storage: 50Gi # apiVersion: v1 # kind: PersistentVolume # metadata: # name: mongo-kultmost-pv # namespace: kultmost # spec: # capacity: # storage: 50Gi # accessModes: # - ReadWriteOnce # persistentVolumeReclaimPolicy: Retain # storageClassName: manual # hostPath: # path: /mnt/nfs/storage/db/mongodb-kultmost # --- # apiVersion: v1 # kind: PersistentVolumeClaim # metadata: # name: mongodb-kultmost-pvc # namespace: kultmost # spec: # accessModes: # - ReadWriteOnce # resources: # requests: # storage: 50Gi # storageClassName: manual --- apiVersion: apps/v1 kind: Deployment metadata: name: mongodb namespace: kultmost spec: selector: matchLabels: app: mongodb replicas: 1 template: metadata: labels: app: mongodb spec: imagePullSecrets: - name: regcred containers: - name: mongodb image: registry.spiritofweb.ru/mongo:latest ports: - containerPort: 27017 env: - name: MONGO_INITDB_ROOT_USERNAME value: admin - name: MONGO_INITDB_ROOT_PASSWORD valueFrom: secretKeyRef: name: kultmost key: MONGO_INITDB_ROOT_PASSWORD volumeMounts: - name: mongodb-persistent-storage mountPath: /data/db livenessProbe: tcpSocket: port: 27017 initialDelaySeconds: 30 periodSeconds: 10 readinessProbe: tcpSocket: port: 27017 initialDelaySeconds: 5 periodSeconds: 5 volumes: - name: mongodb-persistent-storage persistentVolumeClaim: claimName: mongodb-kultmost-pvc --- apiVersion: v1 kind: Service metadata: name: mongodb namespace: kultmost spec: selector: app: ssh-reverse-tunnel ports: - name: mongo-tcp protocol: TCP port: 27017 targetPort: 27017 nodePort: 30670 type: NodePort --- apiVersion: v1 kind: Service metadata: name: mongodb-stage namespace: kultmost spec: selector: app: mongodb ports: - name: mongodb port: 27017 targetPort: 27017 nodePort: 30002 type: NodePort --- apiVersion: v1 kind: Secret metadata: name: kultmost namespace: kultmost type: Opaque stringData: MONGO_INITDB_ROOT_PASSWORD: $MONGO_INITDB_ROOT_PASSWORD SECRET_KEY: $SECRET_KEY FROM_EMAIL: $FROM_EMAIL RABBITMQ_PASS: $RABBITMQ_PASS RABBITMQ_HOST: $RABBITMQ_HOST EMAIL_PASS: $EMAIL_PASS ENC_KEY_B64: $ENC_KEY_B64 EMAIL_SMTP_SERVER: $EMAIL_SMTP_SERVER EMAIL_SMTP_PORT: "$EMAIL_SMTP_PORT" FULL_PATH_DOMAIN: $FULL_PATH_DOMAIN ATOKEN: "$ATOKEN" WEB_CONCURRENCY: "8" BOT_TOKEN: "$BOT_TOKEN" --- apiVersion: v1 kind: Secret metadata: name: ssh-creds namespace: kultmost type: Opaque stringData: username: "root" password: "$ROOT_PASS" remote_host: "$REMOTE_HOST" --- apiVersion: batch/v1 kind: CronJob metadata: name: cron-day namespace: kultmost spec: schedule: "0 0 * * *" # every day jobTemplate: spec: template: spec: imagePullSecrets: - name: regcred restartPolicy: OnFailure containers: - name: cron-day image: registry.spiritofweb.ru/alpine/curl command: ["sh","-c","curl -sS http://kultmost-api.kultmost/cron/day -H \"Authorization: Bearer ${ATOKEN}\""] env: - name: ATOKEN valueFrom: secretKeyRef: name: kultmost key: ATOKEN --- apiVersion: batch/v1 kind: CronJob metadata: name: cron-five-minutes namespace: kultmost spec: schedule: "*/5 * * * *" # every 5 min jobTemplate: spec: template: spec: imagePullSecrets: - name: regcred restartPolicy: OnFailure containers: - name: cron-five image: registry.spiritofweb.ru/alpine/curl command: ["sh","-c","curl -sS http://kultmost-api.kultmost/cron/5 -H \"Authorization: Bearer ${ATOKEN}\""] env: - name: ATOKEN valueFrom: secretKeyRef: name: kultmost key: ATOKEN