**Update d8-ugmk-prod configurations to fix service references and ensure proper workflow and API integration**

- Replace incorrect `WORKFLOWS_HOST` and `WORKFLOWS_URL` references across multiple YAML files to point to `backend-svc.processing.svc.cluster.local`.
- Update `DOCUMENTATIONS_URL` to use the accurate service name `backend-api-svc.documentations.svc.cluster.local`.
- Adjust `SAREX_API` and related settings for consistency using `https://sarex.uralmine.com`.
- Refactor `production-configmap.yaml` to align environment variable overrides and remove obsolete hardcoded values.
- Resolve key INFRA-3005 issues to prevent Excel export and notification failures caused by invalid DNS and configuration.
This commit is contained in:
emelinda 2026-10-20 18:01:28 +03:00
parent 709985b4a6
commit f22d5cc773
4 changed files with 47 additions and 24 deletions

View File

@ -82,13 +82,19 @@ spec:
value:
_default: "http://backend-svc.django.svc.cluster.local:80"
# INFRA-3005: namespace workflow в УГМК не существует, processing
# поставляется как backend-svc в namespace processing
# (apps/processing/base/api.yaml:74 + d8-ugmk-prod/namespace.yaml).
# Формат — базовый URL без пути и без слэша на конце: код сам
# добавляет /internal/v1/... (src/issues/mailing.py:122,
# src/api/services.py:616).
- name: WORKFLOWS_HOST
value:
_default: "http://backend-svc.workflow.svc.cluster.local:80"
_default: "http://backend-svc.processing.svc.cluster.local:80"
- name: WORKFLOWS_URL
value:
_default: "http://backend-svc.workflow.svc.cluster.local:80"
_default: "http://backend-svc.processing.svc.cluster.local:80"
- name: RESOURCES_API_HOST
value:
@ -105,9 +111,12 @@ spec:
value:
_default: "https://sarex.uralmine.com"
# Реальное имя сервиса — backend-api-svc (apps/documentations/base/api.yaml:74).
# Было documentations-api-svc — такого сервиса нет; не стреляло только
# потому, что production-configmap перетирает эту переменную хардкодом.
- name: DOCUMENTATIONS_URL
value:
_default: "http://documentations-api-svc.documentations.svc.cluster.local:80"
_default: "http://backend-api-svc.documentations.svc.cluster.local:80"
- name: DJANGO_SETTINGS_MODULE
value:

View File

@ -82,13 +82,15 @@ spec:
value:
_default: "http://backend-svc.django.svc.cluster.local:80"
# INFRA-3005: именно этот хост ронял celery-задачу экспорта в Excel
# и все уведомления. См. backend-s3.yaml и production-configmap.yaml.
- name: WORKFLOWS_HOST
value:
_default: "http://workflows-api-service.workflow.svc.cluster.local:8000"
_default: "http://backend-svc.processing.svc.cluster.local:80"
- name: WORKFLOWS_URL
value:
_default: "http://workflows-api-service.workflow.svc.cluster.local:8000"
_default: "http://backend-svc.processing.svc.cluster.local:80"
- name: RESOURCES_API_HOST
value:

View File

@ -153,13 +153,14 @@ spec:
value:
_default: "http://backend-svc.django.svc.cluster.local:80"
# INFRA-3005: см. backend-s3.yaml и production-configmap.yaml.
- name: WORKFLOWS_HOST
value:
_default: "http://backend-svc.workflow.svc.cluster.local:80"
_default: "http://backend-svc.processing.svc.cluster.local:80"
- name: WORKFLOWS_URL
value:
_default: "http://backend-svc.workflow.svc.cluster.local:80"
_default: "http://backend-svc.processing.svc.cluster.local:80"
- name: RESOURCES_API_HOST
value:
@ -174,9 +175,10 @@ spec:
value:
_default: "https://sarex.uralmine.com"
# Реальное имя сервиса — backend-api-svc, см. backend-s3.yaml.
- name: DOCUMENTATIONS_URL
value:
_default: "http://documentations-api-svc.documentations.svc.cluster.local:80"
_default: "http://backend-api-svc.documentations.svc.cluster.local:80"
- name: DJANGO_SETTINGS_MODULE
value:

View File

@ -3,23 +3,26 @@
# поэтому здесь продублировано всё содержимое из
# apps/issues/base/production-configmap.yaml (та же ловушка, что с envs).
#
# Зачем нужен этот патч (INFRA-3005):
# в base зашит хардкодом SAREX_API = "https://srx.wb.ru". production.py делает
# `from .base import *`, а затем переприсваивает значения — поэтому ConfigMap
# ПОБЕЖДАЕТ env-переменные из HelmRelease, и правка SAREX_API в оверлее
# Зачем нужен этот патч:
# production.py делает `from .base import *` (там всё через os.getenv), а затем
# переприсваивает часть значений ХАРДКОДОМ — поэтому для этих переменных
# ConfigMap ПОБЕЖДАЕТ env из HelmRelease, и правка env в оверлее
# backend-s3.yaml/celery-s3.yaml сама по себе ни на что не влияет.
#
# В issues-backend settings.SAREX_API используется в блокирующих вызовах:
# - src/issues/models.py:270 Issue.get_user_data() — requests.get БЕЗ timeout
# - src/api/services.py:149 get_session() — httpx.Client(timeout=600)
# → get_fresh_token() → синхронный экспорт в Excel
# (src/api/export/data_collector.py:285)
# Из закрытого контура УГМК srx.wb.ru недоступен, поэтому синхронный экспорт
# замечаний в Excel (≤800 замечаний без вложений, см. export.py:47) висел
# до таймаута 600 с.
# INFRA-3005 (основная причина зависания экспорта в Excel):
# в base хардкодом WORKFLOWS_HOST/WORKFLOWS_URL = workflows-api-service.workflow
# — такого сервиса в УГМК нет. celery собирает xlsx, затем
# ExportFinishedNotification → issues/mailing.py:122 делает POST на
# {WORKFLOWS_HOST}/internal/v1/companies/{id}/workflows и падает с
# ConnectionError (Name or service not known) — задача фейлится, фронт не
# получает завершения и крутит загрузку бесконечно. Тем же путём с 26.08
# падали ВСЕ уведомления (send_notification_on_create/on_update/
# to_new_responsible/on_bulk_update, ~1770 ошибок).
#
# Отличия от base:
# - SAREX_API → https://sarex.uralmine.com
# - WORKFLOWS_HOST / WORKFLOWS_URL → backend-svc.processing (через os.getenv,
# чтобы env из оверлея снова начал работать)
# - SAREX_API → https://sarex.uralmine.com (в base зашит https://srx.wb.ru)
# - CORS/CSRF origins → https://sarex.uralmine.com (в base только lk.srx.wb.ru)
# - убраны хардкоды KAFKA_USERNAME/KAFKA_PASSWORD/DJANGO_TOKEN и чужой
# дефолт KAFKA_HOST: в УГМК всё это приходит из Vault
@ -71,8 +74,15 @@ data:
# -----------------------------------------------------------------------------
# EXTERNAL SERVICES END
WORKFLOWS_HOST = "http://workflows-api-service.workflow.svc.cluster.local:8000"
WORKFLOWS_URL = "http://workflows-api-service.workflow.svc.cluster.local:8000"
# INFRA-3005: в base здесь хардкод workflows-api-service.workflow — такого
# сервиса в УГМК нет (DNS: "Name or service not known"), из-за чего падал
# POST {WORKFLOWS_HOST}/internal/v1/companies/{id}/workflows в
# issues/mailing.py:122 (WorkflowsMailer) — а это и рассылка уведомлений,
# и финальный шаг celery-задачи экспорта в Excel.
# В УГМК workflows (processing) живёт как backend-svc в namespace processing.
WORKFLOWS_HOST = os.getenv("WORKFLOWS_HOST", "http://backend-svc.processing.svc.cluster.local:80")
WORKFLOWS_URL = os.getenv("WORKFLOWS_URL", "http://backend-svc.processing.svc.cluster.local:80")
# backend-api-svc — реальное имя сервиса documentations (base/api.yaml:74).
DOCUMENTATIONS_URL = "http://backend-api-svc.documentations.svc.cluster.local:80"
RESOURCES_API_HOST = os.getenv("RESOURCES_API_HOST", default="http://resources-service.resources.svc.cluster:8000")
KAFKA_HOST = os.getenv("KAFKA_HOST")
@ -149,7 +159,7 @@ data:
"PUT",
]
SAREX_API = "https://sarex.uralmine.com"
SAREX_API = os.getenv("SAREX_API", "https://sarex.uralmine.com")
AERO_PUBLIC_HOST = os.getenv("AERO_PUBLIC_HOST", default=SAREX_API)