Bot commit: Добавлен файл k8s/kultmost.yaml

This commit is contained in:
Vladislav 2026-04-15 14:04:49 +02:00
parent ceccb8bafc
commit ee23ef1a1d

483
k8s/kultmost.yaml Normal file
View File

@ -0,0 +1,483 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: kultmost-api
namespace: kultmost
spec:
replicas: 2
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: 1
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: 1
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