--- apiVersion: v1 kind: Namespace metadata: name: message-gateway --- apiVersion: v1 kind: Secret metadata: name: message-gateway-secret namespace: message-gateway type: Opaque stringData: # Telegram настройки telegram_bot_token: "" # Установите токен через kubectl create secret или SealedSecret telegram_enabled: "true" # Включить Telegram (true/false) # MAX/VK настройки max_access_token: "" # Access Token для MAX/VK (опционально) max_api_version: "5.131" # Версия API MAX/VK max_enabled: "false" # Включить MAX/VK (true/false) # Общие настройки мессенджеров default_messenger: "telegram" # Мессенджер по умолчанию (telegram/max) # API ключ для авторизации api_key: "" # API ключ для авторизации (обязательно для управления группами) # Prometheus Pushgateway настройки pushgateway_url: "" # URL Pushgateway (опционально) pushgateway_job: "MessageGateway" # Grafana настройки grafana_url: "" # URL Grafana (опционально) # Zabbix настройки zabbix_url: "" # URL Zabbix (опционально) # Kubernetes кластер настройки k8s_cluster_grafana_subdomain: "" # Поддомен Grafana для K8S кластеров (опционально) k8s_cluster_prometheus_subdomain: "" # Поддомен Prometheus для K8S кластеров (опционально) k8s_cluster_alertmanager_subdomain: "" # Поддомен AlertManager для K8S кластеров (опционально) # OpenTelemetry настройки otel_enabled: "false" # Включить OpenTelemetry (true/false) otel_service_name: "monitoring-message-gateway" otel_exporter_otlp_endpoint: "" # Endpoint OpenTelemetry (опционально) otel_exporter_otlp_protocol: "http/json" otel_traces_exporter: "otlp_proto_http" otel_exporter_otlp_insecure: "true" otel_python_log_correlation: "false" # Jira настройки jira_enabled: "false" # Включить интеграцию с Jira (true/false) jira_url: "" # URL Jira (опционально) jira_email: "" # Email пользователя Jira (опционально) jira_api_token: "" # API Token Jira (опционально) jira_project_key: "" # Ключ проекта Jira (опционально) jira_default_assignee: "" # Email или accountId исполнителя по умолчанию (опционально) jira_default_issue_type: "Bug" # Тип задачи по умолчанию jira_create_on_alert: "true" # Создавать тикет при алерте (true/false) jira_create_on_resolved: "false" # Создавать тикет при resolved (true/false) --- apiVersion: apps/v1 kind: Deployment metadata: name: message-gateway namespace: message-gateway labels: app: message-gateway spec: replicas: 1 selector: matchLabels: app: message-gateway strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: name: message-gateway labels: app: message-gateway spec: imagePullSecrets: - name: cismharbor nodeSelector: gpushare: "false" # Нода с ГПУ (false/true) nodestate: "working" # Состояние ноды (working/new) containers: - name: message-gateway image: hub.cism-ms.ru/library/message-gateway:v0.2.0 imagePullPolicy: "Always" ports: - containerPort: 8000 env: # Telegram настройки - name: TELEGRAM_BOT_TOKEN valueFrom: secretKeyRef: name: message-gateway-secret key: telegram_bot_token - name: TELEGRAM_ENABLED valueFrom: secretKeyRef: name: message-gateway-secret key: telegram_enabled optional: true # MAX/VK настройки - name: MAX_ACCESS_TOKEN valueFrom: secretKeyRef: name: message-gateway-secret key: max_access_token optional: true - name: MAX_API_VERSION valueFrom: secretKeyRef: name: message-gateway-secret key: max_api_version optional: true - name: MAX_ENABLED valueFrom: secretKeyRef: name: message-gateway-secret key: max_enabled optional: true # Общие настройки мессенджеров - name: DEFAULT_MESSENGER valueFrom: secretKeyRef: name: message-gateway-secret key: default_messenger optional: true # API ключ для авторизации - name: API_KEY valueFrom: secretKeyRef: name: message-gateway-secret key: api_key optional: true # Grafana настройки - name: GRAFANA_URL valueFrom: secretKeyRef: name: message-gateway-secret key: grafana_url optional: true # Zabbix настройки - name: ZABBIX_URL valueFrom: secretKeyRef: name: message-gateway-secret key: zabbix_url optional: true # Kubernetes кластер настройки - name: K8S_CLUSTER_GRAFANA_SUBDOMAIN valueFrom: secretKeyRef: name: message-gateway-secret key: k8s_cluster_grafana_subdomain optional: true - name: K8S_CLUSTER_PROMETHEUS_SUBDOMAIN valueFrom: secretKeyRef: name: message-gateway-secret key: k8s_cluster_prometheus_subdomain optional: true - name: K8S_CLUSTER_ALERTMANAGER_SUBDOMAIN valueFrom: secretKeyRef: name: message-gateway-secret key: k8s_cluster_alertmanager_subdomain optional: true # Prometheus Pushgateway настройки - name: PUSHGATEWAY_URL valueFrom: secretKeyRef: name: message-gateway-secret key: pushgateway_url optional: true - name: PUSHGATEWAY_JOB valueFrom: secretKeyRef: name: message-gateway-secret key: pushgateway_job optional: true # OpenTelemetry настройки - name: OTEL_ENABLED valueFrom: secretKeyRef: name: message-gateway-secret key: otel_enabled optional: true - name: OTEL_SERVICE_NAME valueFrom: secretKeyRef: name: message-gateway-secret key: otel_service_name optional: true - name: OTEL_EXPORTER_OTLP_ENDPOINT valueFrom: secretKeyRef: name: message-gateway-secret key: otel_exporter_otlp_endpoint optional: true - name: OTEL_EXPORTER_OTLP_PROTOCOL valueFrom: secretKeyRef: name: message-gateway-secret key: otel_exporter_otlp_protocol optional: true - name: OTEL_TRACES_EXPORTER valueFrom: secretKeyRef: name: message-gateway-secret key: otel_traces_exporter optional: true - name: OTEL_EXPORTER_OTLP_INSECURE valueFrom: secretKeyRef: name: message-gateway-secret key: otel_exporter_otlp_insecure optional: true - name: OTEL_PYTHON_LOG_CORRELATION valueFrom: secretKeyRef: name: message-gateway-secret key: otel_python_log_correlation optional: true # Jira настройки - name: JIRA_ENABLED valueFrom: secretKeyRef: name: message-gateway-secret key: jira_enabled optional: true - name: JIRA_URL valueFrom: secretKeyRef: name: message-gateway-secret key: jira_url optional: true - name: JIRA_EMAIL valueFrom: secretKeyRef: name: message-gateway-secret key: jira_email optional: true - name: JIRA_API_TOKEN valueFrom: secretKeyRef: name: message-gateway-secret key: jira_api_token optional: true - name: JIRA_PROJECT_KEY valueFrom: secretKeyRef: name: message-gateway-secret key: jira_project_key optional: true - name: JIRA_DEFAULT_ASSIGNEE valueFrom: secretKeyRef: name: message-gateway-secret key: jira_default_assignee optional: true - name: JIRA_DEFAULT_ISSUE_TYPE valueFrom: secretKeyRef: name: message-gateway-secret key: jira_default_issue_type optional: true - name: JIRA_CREATE_ON_ALERT valueFrom: secretKeyRef: name: message-gateway-secret key: jira_create_on_alert optional: true - name: JIRA_CREATE_ON_RESOLVED valueFrom: secretKeyRef: name: message-gateway-secret key: jira_create_on_resolved optional: true # Liveness проба livenessProbe: httpGet: path: /api/v1/health port: 8000 initialDelaySeconds: 15 periodSeconds: 30 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 3 # Readiness проба readinessProbe: httpGet: path: /api/v1/health port: 8000 initialDelaySeconds: 10 periodSeconds: 10 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 3 resources: requests: cpu: 100m memory: 128Mi limits: cpu: 200m memory: 256Mi volumeMounts: - name: groups-conf mountPath: /app/config/groups.json subPath: groups.json readOnly: true - name: jira-mapping-conf mountPath: /app/config/jira_mapping.json subPath: jira_mapping.json readOnly: true volumes: - name: groups-conf configMap: name: message-gateway-groups-configmap - name: jira-mapping-conf configMap: name: message-gateway-jira-mapping-configmap optional: true --- apiVersion: v1 kind: ConfigMap metadata: name: message-gateway-groups-configmap namespace: message-gateway data: groups.json: | { "kubernetes": { "messenger": "telegram", "chat_id": -1002108349725, "thread_id": 0, "config": {} }, "monitoring": { "messenger": "telegram", "chat_id": -1001997464975, "thread_id": 0, "config": {} }, "oldmonitoring": { "messenger": "telegram", "chat_id": -1001469966749, "thread_id": 0, "config": {} } } --- apiVersion: v1 kind: ConfigMap metadata: name: message-gateway-jira-mapping-configmap namespace: message-gateway data: jira_mapping.json: | { "alertmanager": { "default_project": "MON", "mappings": [] }, "grafana": { "default_project": "MON", "mappings": [] }, "zabbix": { "default_project": "MON", "mappings": [] } } --- apiVersion: v1 kind: Service metadata: name: message-gateway-service namespace: message-gateway labels: app: message-gateway spec: type: ClusterIP selector: app: message-gateway ports: - protocol: TCP port: 8000 targetPort: 8000 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: message-gateway-ingress namespace: message-gateway spec: tls: - hosts: - monitoring.cism-ms.ru secretName: ru-cism-kube-certs rules: - host: "monitoring.cism-ms.ru" http: paths: - path: / pathType: Prefix backend: service: name: message-gateway-service port: number: 8000