Add monitoring TG service

This commit is contained in:
Grendgi
2026-06-04 14:55:41 +03:00
commit f9e072774c
74 changed files with 7232 additions and 0 deletions

20
k8s/configmap.yaml Normal file
View File

@@ -0,0 +1,20 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: monitoring-tg-config
namespace: monitoring-tg
data:
API_HOST: "0.0.0.0"
API_PORT: "8000"
PUBLIC_BASE_PATH: "/api/monitoring-tg"
POSTGRES_HOST: "postgres.monitoring-tg.svc.cluster.local"
POSTGRES_PORT: "5432"
POSTGRES_USER: "parser"
POSTGRES_DB: "parser"
TG_SESSION_PATH: "/data/session/parser.session"
MEDIA_DIR: "/data/media"
POLL_INTERVAL_SECONDS: "60"
POLL_HISTORY_LIMIT: "50"
LLM_ENABLED: "1"
LLM_BASE_URL: "http://ollama.ollama.svc.cluster.local:11434"
LLM_MODEL: "qwen2.5:7b-instruct-q4_K_M"

12
k8s/kustomization.yaml Normal file
View File

@@ -0,0 +1,12 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: monitoring-tg
resources:
- namespace.yaml
- configmap.yaml
- secrets.yaml
- postgres.yaml
- server-deployment.yaml
- server-service.yaml

4
k8s/namespace.yaml Normal file
View File

@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: monitoring-tg

65
k8s/postgres.yaml Normal file
View File

@@ -0,0 +1,65 @@
apiVersion: v1
kind: Service
metadata:
name: postgres
namespace: monitoring-tg
spec:
selector:
app: postgres
ports:
- port: 5432
targetPort: 5432
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: postgres
namespace: monitoring-tg
spec:
serviceName: postgres
replicas: 1
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:16-alpine
ports:
- containerPort: 5432
envFrom:
- secretRef:
name: postgres-secret
volumeMounts:
- name: pgdata
mountPath: /var/lib/postgresql/data
resources:
requests:
cpu: 50m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
livenessProbe:
exec:
command: ["pg_isready", "-U", "parser", "-d", "parser"]
initialDelaySeconds: 10
periodSeconds: 10
readinessProbe:
exec:
command: ["pg_isready", "-U", "parser", "-d", "parser"]
initialDelaySeconds: 5
periodSeconds: 5
volumeClaimTemplates:
- metadata:
name: pgdata
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: local-path
resources:
requests:
storage: 5Gi

25
k8s/secrets.yaml Normal file
View File

@@ -0,0 +1,25 @@
apiVersion: v1
kind: Secret
metadata:
name: monitoring-tg-secrets
namespace: monitoring-tg
type: Opaque
stringData:
TG_API_ID: "0"
TG_API_HASH: "CHANGE_ME"
TG_PHONE: "CHANGE_ME"
TG_SESSION_STRING: ""
POSTGRES_PASSWORD: "parser"
ADMIN_ALLOWED_IPS: ""
ADMIN_PASSWORD: "CHANGE_ME"
---
apiVersion: v1
kind: Secret
metadata:
name: postgres-secret
namespace: monitoring-tg
type: Opaque
stringData:
POSTGRES_USER: "parser"
POSTGRES_PASSWORD: "parser"
POSTGRES_DB: "parser"

View File

@@ -0,0 +1,70 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: monitoring-tg-data
namespace: monitoring-tg
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: local-path
resources:
requests:
storage: 10Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: monitoring-tg-server
namespace: monitoring-tg
spec:
replicas: 1
selector:
matchLabels:
app: monitoring-tg-server
template:
metadata:
labels:
app: monitoring-tg-server
spec:
terminationGracePeriodSeconds: 20
securityContext:
fsGroup: 1000
containers:
- name: monitoring-tg-server
image: localhost:30300/admin/monitoring-tg-server:latest
ports:
- containerPort: 8000
envFrom:
- configMapRef:
name: monitoring-tg-config
- secretRef:
name: monitoring-tg-secrets
volumeMounts:
- name: app-data
mountPath: /data
startupProbe:
httpGet:
path: /healthz
port: 8000
periodSeconds: 5
failureThreshold: 30
livenessProbe:
httpGet:
path: /healthz
port: 8000
periodSeconds: 10
readinessProbe:
httpGet:
path: /healthz
port: 8000
periodSeconds: 5
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: 800m
memory: 1Gi
volumes:
- name: app-data
persistentVolumeClaim:
claimName: monitoring-tg-data

18
k8s/server-service.yaml Normal file
View File

@@ -0,0 +1,18 @@
apiVersion: v1
kind: Service
metadata:
name: monitoring-tg-server
namespace: monitoring-tg
annotations:
portal.estateliga.work/enabled: "true"
portal.estateliga.work/name: "Мониторинг TG"
portal.estateliga.work/description: "Парсер и анализ Telegram-каналов"
portal.estateliga.work/icon: "pulse"
portal.estateliga.work/path: "/api/monitoring-tg"
portal.estateliga.work/code: "monitoring_tg"
spec:
selector:
app: monitoring-tg-server
ports:
- port: 80
targetPort: 8000