iac/apps/django/ugok/backend.yaml
ivan 742a811313 ugok: rebuild all apps as standalone HelmReleases, drop vault-native base
Root cause: apps/*/ugok extended ../base via kustomize patches, but base
is vault-native (Vault Agent Injector annotations + serviceAccount +
command/args wrapper sourcing /vault/secrets/*). The Vault Agent Injector
webhook IS deployed cluster-wide in ugok (infrastructure/vault/ugok), so
it actually intercepted these pods — but no per-app Vault roles/secrets
were ever provisioned there, so every pod hung in Init.

Fix, mirrored from apps/*/wb (which never extends base for these apps):
rebuild every affected app as a standalone HelmRelease per service, with
no serviceAccount/podAnnotations override and no vault-sourcing wrapper
in command/args (dropped entirely, or replaced with the real functional
command where base's wrapper did double duty — e.g. celery invocations,
pm's `python manage.py migrate`, pdf-markings-amqp's `start-amqp-worker`).

Also recreates ConfigMaps that were referenced by name in volumes but
never actually captured into the repo (eav, subscriptions, pm, issues,
django) — copied verbatim from the cluster dump and verified byte-for-byte
against it.

Incidental bugs found and fixed along the way:
- message-hub was still extending base (missed in an earlier pass).
- system-log's patches targeted services.api/services.worker while base
  uses services.backend for both — would have produced duplicate
  Deployments per release, one of them permanently vault-broken.
- contracts' real container port is 8080, not base's default 8000.
- drawings' Service.targetPort (8000) didn't match the real containerPort
  (8080), breaking routing.
- inspections/ugok was missing entirely from this pass.

apps/documentations: intentionally left without a redis Deployment even
though VALKEY_ADDR now points at one — the cluster dump has no redis in
that namespace, so provisioning one is a scope decision, not a bug fix.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-29 01:22:21 +05:00

376 lines
11 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
# standalone HelmRelease — base vault-native, в ugok Vault не используется.
# command/args из base — только vault-обёртка (в живом дампе кластера у
# backend command/args нет вообще), не переносим.
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: backend
namespace: django
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:
backend:
enabled: true
image:
name:
_default: 10.4.10.187:80/library/backend:production_7d0ec48b
pullPolicy:
_default: IfNotPresent
deployment:
enabled: true
name:
_default: backend
replicaCount:
_default: 1
port:
_default: 8000
resources:
requests:
cpu:
_default: 25m
memory:
_default: 128Mi
probes:
liveness:
enabled: false
readiness:
enabled: false
service:
enabled: true
name:
_default: backend-svc
type:
_default: ClusterIP
port:
_default: 80
targetPort:
_default: 8000
portName:
_default: http
imagePullSecrets:
enabled:
_default: true
name:
_default: regcred
volumes:
_default:
- name: django-configmap
mountPath:
_default: /opt/sarex/config/settings/production.py
subPath:
_default: production.py
readOnly:
_default: true
configMap:
name:
_default: django-configmap
items:
- key: production.py
path:
_default: production.py
- name: uwsgi-configmap
mountPath:
_default: /opt/sarex/uwsgi.ini
subPath:
_default: uwsgi.ini
readOnly:
_default: true
configMap:
name:
_default: uwsgi-configmap
items:
- key: uwsgi.ini
path:
_default: uwsgi.ini
- name: kafka-cert-volume
mountPath:
_default: /usr/local/share/ca-certificates
readOnly:
_default: true
configMap:
name:
_default: kafka-cert
envs:
- name: ALLOWED_HOSTS
value:
_default: "*"
- name: SERVER_USE_CHANGELOG
value:
_default: "0"
- name: SERVER_ZITADEL_ENABLED
value:
_default: "True"
- name: DJANGO_SETTINGS_MODULE
value:
_default: config.settings.production
- name: CELERY_REDIS_HOST
value:
_default: redis-service
- name: CELERY_REDIS_PORT
value:
_default: "6379"
- name: SERVER_EXTERNAL_FIND_BY_USERNAME_ENABLED
value:
_default: "True"
- name: SERVER_EXTERNAL_FIND_BY_EMAIL_ENABLED
value:
_default: "True"
- name: DJANGO_REDIS_HOST
value:
_default: redis-service
- name: DJANGO_REDIS_PORT
value:
_default: "6379"
- name: BIMV2_INTERNAL_HOST
value:
_default: http://bim-backend-v2-service.bim-api
- name: BIMV2_TIMEOUT
value:
_default: "60"
- name: JWT_KID
value:
_default: "1"
- name: PDM_SYNC
value:
_default: "1"
- name: KC_SYNC_ENABLE
value:
_default: "0"
- name: MEASUREMENTS_HOST
value:
_default: http://measurement-svc.measurements.svc.cluster.local:8000/api
- name: MEASUREMENTS_USE_MEASUREMENTS
value:
_default: "1"
- name: SERVER_API_HOST
value:
_default: https://ugok-sarex.uralmine.com
- name: SERVER_HOST
value:
_default: https://ugok-sarex.uralmine.com
- name: WORKFLOWS_HOST
value:
_default: http://workflows-api-service.workflow.svc.cluster.local:8000
- name: WORKFLOWS_BASE_HOST
value:
_default: http://backend.django.svc.cluster.local:8000
- name: WORKFLOWS_PREFIX
value:
_default: /internal/v1
- name: WORKFLOWS_USE
value:
_default: "1"
- name: SERVER_S3_STREAM_IMPORT
value:
_default: "1"
- name: SERVER_SAVE_DIFF_DEM
value:
_default: "1"
- name: SERVER_USE_CLICKHOUSE
value:
_default: "0"
- name: SERVER_USE_CREATE_COMPARED_GEOTIFF_TASK
value:
_default: "0"
- name: SERVER_USE_DJANGO_STORAGE
value:
_default: "1"
- name: SERVER_USE_METASHAPE
value:
_default: "0"
- name: SERVER_CHANGELOG_MODE_SYSTEM_LOG
value:
_default: "1"
- name: SERVER_CHANGELOG_MODE
value:
_default: "0"
- name: SERVER_DJANGO_URLS
value:
_default: "1"
- name: CHECK_IMPORT_HASH
value:
_default: "1"
- name: ZITADEL_HOST
value:
_default: https://ugok-zitadel-sarex.uralmine.com
- name: EAV_ENABLE
value:
_default: "1"
- name: SERVER_CHECK_IMPORT_HASH
value:
_default: "1"
- name: SERVER_CHUNKED_PATH
value:
_default: /tmp/chunked_uploads/%Y/%m/%d
- name: SERVER_HIDE_USER_SCROLL_PERMISSIONS
value:
_default: "0"
- name: SERVER_USE_WRORKFLOW_STATUS
value:
_default: "1"
- name: SERVER_KAFKA_ENABLED
value:
_default: "True"
- name: RESOURCES_INTERNAL_HOST
value:
_default: http://resources-service.resources.svc.cluster.local:8000
- name: KAFKA_TOPICS
value:
_default: '{"planning": "message-hub-stage", "ams-sync": "ams-sync"}'
- name: KAFKA_BOOTSTRAP_SERVERS
value:
_default: '["ugok-prod-kafka-bootstrap.kafka.svc.cluster.local:9093"]'
- name: KAFKA_SECURITY_PROTOCOL
value:
_default: SSL
- name: KAFKA_SASL_MECHANISM
value:
_default: SCRAM-SHA-512
- name: KAFKA_SSL_CAFILE
value:
_default: /usr/local/share/ca-certificates/kafka.crt
- name: S3_HOST
value:
_default: http://minio.minio.svc.cluster.local:9000
- name: KC_USE_REDIRECT_LOGOUT
value:
_default: "False"
secretEnvs:
- name: ZITADEL_ACCESS_TOKEN
secretName:
_default: zitadel-secret
secretKey: access_token
- name: KAFKA_SASL_PLAIN_USERNAME
secretName:
_default: kafka-secret
secretKey: username
- name: KAFKA_SASL_PLAIN_PASSWORD
secretName:
_default: kafka-secret
secretKey: password
- name: AWS_S3_ENDPOINT_URL
secretName:
_default: sarex-s3-secret
secretKey: endpoint
- name: CELERY_RABBITMQ_HOST
secretName:
_default: sarex-rabbitmq-secret
secretKey: host
- name: CELERY_RABBITMQ_USER
secretName:
_default: sarex-rabbitmq-secret
secretKey: username
- name: CELERY_RABBITMQ_PASSWORD
secretName:
_default: sarex-rabbitmq-secret
secretKey: password
- name: CELERY_RABBITMQ_VHOST
secretName:
_default: sarex-rabbitmq-secret
secretKey: vhost
- name: DJANGO_POSTGRES_HOST
secretName:
_default: sarex-postgresql-secret
secretKey: host
- name: DJANGO_POSTGRES_PORTS
secretName:
_default: sarex-postgresql-secret
secretKey: port
- name: DJANGO_POSTGRES_USER
secretName:
_default: sarex-postgresql-secret
secretKey: username
- name: DJANGO_POSTGRES_PASSWORD
secretName:
_default: sarex-postgresql-secret
secretKey: password
- name: DJANGO_POSTGRES_DATABASE
secretName:
_default: sarex-postgresql-secret
secretKey: database
- name: DJANGO_RABBIT_HOSTNAME
secretName:
_default: sarex-rabbitmq-secret
secretKey: host
- name: DJANGO_RABBIT_USER
secretName:
_default: sarex-rabbitmq-secret
secretKey: username
- name: DJANGO_RABBIT_PASS
secretName:
_default: sarex-rabbitmq-secret
secretKey: password
- name: DJANGO_RABBIT_VHOST
secretName:
_default: sarex-rabbitmq-secret
secretKey: vhost
- name: JWT_PRIVATE_KEY
secretName:
_default: backend-secret
secretKey: ssh_private.key
- name: JWT_PUBLIC_KEY
secretName:
_default: backend-secret
secretKey: ssh_public.key
- name: S3_BUCKET
secretName:
_default: sarex-s3-secret
secretKey: bucket
- name: S3_LOGIN
secretName:
_default: sarex-s3-secret
secretKey: access_key
- name: S3_PASSWORD
secretName:
_default: sarex-s3-secret
secretKey: secret_key
commitSha: ""
gitlabUri: ""
gitlabJobUrl: ""
owner: ""