From 3cd5600f239242d4a66f72ceb9c8c3b1930fbf85 Mon Sep 17 00:00:00 2001 From: emelinda Date: Wed, 5 Aug 2026 13:44:47 +0300 Subject: [PATCH] Add `backend-s3`, `celery`, and `redis` HelmReleases to `d8-ugmk-prod`: configure charts, deployment settings, and include in cluster Kustomization --- apps/pm/d8-ugmk-prod/backend-s3.yaml | 21 ++++ apps/pm/d8-ugmk-prod/celery.yaml | 141 ++++++++++++++++++++++++ apps/pm/d8-ugmk-prod/kustomization.yaml | 9 ++ apps/pm/d8-ugmk-prod/redis.yaml | 98 ++++++++++++++++ 4 files changed, 269 insertions(+) create mode 100644 apps/pm/d8-ugmk-prod/backend-s3.yaml create mode 100644 apps/pm/d8-ugmk-prod/celery.yaml create mode 100644 apps/pm/d8-ugmk-prod/redis.yaml diff --git a/apps/pm/d8-ugmk-prod/backend-s3.yaml b/apps/pm/d8-ugmk-prod/backend-s3.yaml new file mode 100644 index 0000000..7368ee0 --- /dev/null +++ b/apps/pm/d8-ugmk-prod/backend-s3.yaml @@ -0,0 +1,21 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: backend + namespace: pm +spec: + values: + services: + backend: + podAnnotations: + _default: + vault.hashicorp.com/agent-inject-template-pm-s3: |- + {{- with secret "secrets/data/minio/apps/pm" -}} + S3_HOST={{ index .Data.data.client "endpoint" }} + S3_LOGIN={{ index .Data.data "access_key" }} + S3_PASSWORD={{ index .Data.data "secret_key" }} + S3_VERIFY=False + {{- $buckets := index .Data.data "buckets" }} + S3_BUCKET={{ if gt (len $buckets) 0 }}{{ index (index $buckets 0) "name" }}{{ else }}pm-bucket{{ end }} + {{- end -}} diff --git a/apps/pm/d8-ugmk-prod/celery.yaml b/apps/pm/d8-ugmk-prod/celery.yaml new file mode 100644 index 0000000..ec0991f --- /dev/null +++ b/apps/pm/d8-ugmk-prod/celery.yaml @@ -0,0 +1,141 @@ +--- +# Патч celery для контура УГМК. +# +# ВНИМАНИЕ: envs — список, kustomize заменяет его ЦЕЛИКОМ (JSON merge patch), +# поэтому здесь продублирован весь набор из apps/pm/base/celery.yaml. +# При добавлении переменной в base её нужно продублировать и сюда. +# podAnnotations — map, мержится по ключам, поэтому переопределён только +# один ключ agent-inject-template-pm-s3; остальные vault-аннотации берутся из base. +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: celery + namespace: pm +spec: + values: + services: + celery: + envs: + # base: http://backend-service.sarex.svc.cluster.local:8000 — ns sarex не существует + - name: USERS_INTERNAL_HOST + value: + _default: "http://backend-svc.django.svc.cluster.local:80" + + - name: CELERY_REDIS_HOST + value: + _default: "redis.pm.svc.cluster.local" + + # base: http://sarex-resources-service.resources — ns resources не развёрнут в контуре + - name: RESOURCES_INTERNAL_HOST + value: + _default: "http://iam-backend.iam.svc.cluster.local:8000" + + # base: http://eav-service.eav — сервис называется backend-svc и слушает 80 + - name: EAV_HOST + value: + _default: "http://backend-svc.eav.svc.cluster.local:80" + + - name: EAV_API_PREFIX + value: + _default: "/api/v0" + + - name: EAV_API_PREFIX_V1 + value: + _default: "/api/v1" + + - name: TRACING_INSECURE + value: + _default: "False" + + - name: SERVER_ENABLE_SYNC_RESOURCES + value: + _default: "True" + + - name: SERVER_DELETED_TASK_MAX_AGE_DAYS + value: + _default: "1" + + - name: SERVER_EXPIRED_TASK_NOTIFICATION_HOUR + value: + _default: "17" + + - name: LANG + value: + _default: "C.UTF-8" + + - name: LC_ALL + value: + _default: "C.UTF-8" + + - name: PYTHONUTF8 + value: + _default: "1" + + - name: CACHE_SSL + value: + _default: "False" + + - name: CACHE_SSL_CA_CERTS + value: + _default: "" + + - name: CACHE_ENABLE + value: + _default: "False" + + - name: CLICKHOUSE_ENABLE + value: + _default: "False" + + - name: KAFKA_ENABLE + value: + _default: "False" + + # base: https://lk.sarex.io/api/token/public/ + - name: AUTH_PUBLIC_TOKEN_URL + value: + _default: "https://sarex.uralmine.com/api/token/public/" + + # base: https://lk.sarex.io + - name: SERVER_HOST + value: + _default: "https://sarex.uralmine.com" + + # base: https://api.sarex.io + - name: SERVER_API_HOST + value: + _default: "https://sarex.uralmine.com" + + - name: SERVER_DEBUG + value: + _default: "False" + + - name: SERVER_ALLOWED_HOSTS + value: + _default: '["*"]' + + - name: SERVER_USE_OTEL + value: + _default: "False" + + - name: SERVER_VERIFY_SSL + value: + _default: "False" + + - name: SERVER_LOG_LEVEL + value: + _default: "INFO" + + podAnnotations: + _default: + # base склеивал S3_BUCKET с S3_VERIFY: {{- end -}} съедал перевод строки. + # S3_VERIFY поднят выше блока if, у {{ end }} убран хвостовой дефис. + vault.hashicorp.com/agent-inject-template-pm-s3: |- + {{- with secret "secrets/data/minio/apps/pm" -}} + S3_HOST={{ index .Data.data.client "endpoint" }} + S3_LOGIN={{ index .Data.data "access_key" }} + S3_PASSWORD={{ index .Data.data "secret_key" }} + S3_VERIFY=False + {{- $buckets := index .Data.data "buckets" }} + S3_BUCKET={{ if gt (len $buckets) 0 }}{{ index (index $buckets 0) "name" }}{{ else }}pm-bucket{{ end }} + {{- end -}} diff --git a/apps/pm/d8-ugmk-prod/kustomization.yaml b/apps/pm/d8-ugmk-prod/kustomization.yaml index 8c72385..d586033 100644 --- a/apps/pm/d8-ugmk-prod/kustomization.yaml +++ b/apps/pm/d8-ugmk-prod/kustomization.yaml @@ -3,8 +3,17 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ../base + - redis.yaml patches: - path: namespace.yaml target: kind: Namespace name: pm + - path: backend-s3.yaml + target: + kind: HelmRelease + name: backend + - path: celery.yaml + target: + kind: HelmRelease + name: celery diff --git a/apps/pm/d8-ugmk-prod/redis.yaml b/apps/pm/d8-ugmk-prod/redis.yaml new file mode 100644 index 0000000..46a4787 --- /dev/null +++ b/apps/pm/d8-ugmk-prod/redis.yaml @@ -0,0 +1,98 @@ +--- +# Redis для celery в ns pm. В base его нет — там CELERY_REDIS_HOST указывает +# на redis.pm.svc.cluster.local, но сам сервис не разворачивается. +# +# Имя Service обязано быть ровно "redis" (не redis-svc, как принято в остальных +# релизах), иначе не сойдётся с CELERY_REDIS_HOST в backend.yaml и celery.yaml. +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: redis + namespace: pm + +spec: + interval: 10m + + chart: + spec: + chart: universal-chart + version: "0.1.9" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + + install: + remediation: + retries: 3 + + upgrade: + remediation: + retries: 3 + + values: + global: + env: _default + + services: + redis: + enabled: true + + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/redis:latest + pullPolicy: + _default: Always + + deployment: + enabled: true + + name: + _default: redis + + replicaCount: + _default: 1 + + port: + _default: 6379 + + resources: + requests: + cpu: + _default: 25m + memory: + _default: 64Mi + + probes: + liveness: + enabled: false + readiness: + enabled: false + + service: + enabled: true + + name: + _default: redis + + type: + _default: ClusterIP + + port: + _default: 6379 + + targetPort: + _default: 6379 + + # НЕ http: чарт по умолчанию подставляет "http", и тогда Istio навесит + # на 6379 HTTP-фильтры и сломает RESP. Префикс tcp- переводит порт + # в режим обычного TCP-проксирования. + portName: + _default: tcp-redis + + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred