BIM API в контуре aero + вывод наружу
Релиз идёт из base без единого патча, и это проверено по исходникам
bim-backend-v2, а не принято на веру:
* DJANGO_HOST в base уже правильный (backend-svc.django:80) — редкость,
у processing и workspaces там лежал несуществующий backend:8000;
* DB_CERT_PATH_2/3/4 указывают на сертификат управляемой СУБД Яндекса,
которого в контуре нет, но зануления не требуют: файл читается только
под флагом ENABLE_SSL, а при нуле к строке подключения дописывается
?sslmode=disable и путь не трогается;
* пять комплектов POSTGRES_*_N в vault-шаблоне смотрят на один хост —
в проде это реплики, в контуре СУБД одна.
Django ходил в никуда: BIMV2_INTERNAL_HOST в base ведёт в namespace
bim-api к сервису bim-backend-v2-service, а релиз разворачивается в
namespace bim и называет сервис backend-svc. Поправлено в обоих релизах
django — backend и celery.
Наружу выведен отдельным поддоменом bim.sarex.local.lonsdaleites.ru, а не
префиксом на домене платформы: своего фронтенда у сервиса нет, общего с
платформой origin тоже, а его пути конфликтовали бы с маршрутом /api/
django. Имя добавлено в dnsNames сертификата — без этого браузер получил
бы сертификат без него.
Обвязка: regcred и роль Vault для namespace bim, apps/bim в
gitea_sync_paths, секрет secrets/apps/bim/postgres (база bim_db и роль bim
уже заведены в contour.databases).
ИЗВЕСТНЫЙ РИСК, проверяется логами первого пода. В ветке develop у
bim-backend-v2 миграции катятся при старте httpserver, ошибка фатальна, а
адрес БД внутри RunOnStartup взят не из конфига, а из константы
rc1b-sse4o3n9vea392g4.mdb.yandexcloud.net:6432. Из контура он недостижим.
Если этот код попал в образ contour_f9f2a39-dirty, под уйдёт в
CrashLoopBackOff и лечиться это будет только пересборкой образа.
This commit is contained in:
parent
c24f02b078
commit
c8eefab4b6
@ -88,6 +88,7 @@ registry_secrets:
|
|||||||
- {name: regcred, namespace: measurements}
|
- {name: regcred, namespace: measurements}
|
||||||
- {name: regcred, namespace: processing}
|
- {name: regcred, namespace: processing}
|
||||||
- {name: regcred, namespace: workspaces}
|
- {name: regcred, namespace: workspaces}
|
||||||
|
- {name: regcred, namespace: bim}
|
||||||
|
|
||||||
# Поднимать стек (docker compose up -d). Требует запущенной службы docker и
|
# Поднимать стек (docker compose up -d). Требует запущенной службы docker и
|
||||||
# docker login в cr.yandex — по умолчанию выключено.
|
# docker login в cr.yandex — по умолчанию выключено.
|
||||||
@ -157,6 +158,7 @@ gitea_sync_paths:
|
|||||||
- apps/measurements
|
- apps/measurements
|
||||||
- apps/processing
|
- apps/processing
|
||||||
- apps/workspaces
|
- apps/workspaces
|
||||||
|
- apps/bim
|
||||||
|
|
||||||
# Рабочая копия репозитория gitea на хосте (клон, живёт между прогонами).
|
# Рабочая копия репозитория gitea на хосте (клон, живёт между прогонами).
|
||||||
gitea_sync_workdir: "{{ deploy_dir }}/gitea-sync"
|
gitea_sync_workdir: "{{ deploy_dir }}/gitea-sync"
|
||||||
@ -243,6 +245,7 @@ vault_k8s_roles:
|
|||||||
- {name: processing, namespaces: [processing]}
|
- {name: processing, namespaces: [processing]}
|
||||||
- {name: measurements, namespaces: [measurements]}
|
- {name: measurements, namespaces: [measurements]}
|
||||||
- {name: workspaces, namespaces: [workspaces]}
|
- {name: workspaces, namespaces: [workspaces]}
|
||||||
|
- {name: bim, namespaces: [bim]}
|
||||||
|
|
||||||
# Боевые креды инфраструктурных сервисов. Пути и имена ключей заданы чартами
|
# Боевые креды инфраструктурных сервисов. Пути и имена ключей заданы чартами
|
||||||
# (см. vaultRoot у minio и auth.vault у rabbitmq в infrastructure/*/aero) —
|
# (см. vaultRoot у minio и auth.vault у rabbitmq в infrastructure/*/aero) —
|
||||||
@ -370,6 +373,18 @@ vault_app_secrets:
|
|||||||
# django, той самой учётки из secrets/apps/django/superuser выше. Из этого же
|
# django, той самой учётки из secrets/apps/django/superuser выше. Из этого же
|
||||||
# пути django в base читает django_zitadel_access_token, но в контуре Zitadel
|
# пути django в base читает django_zitadel_access_token, но в контуре Zitadel
|
||||||
# нет и та аннотация удалена в apps/django/aero — здесь удалять её НЕ нужно.
|
# нет и та аннотация удалена в apps/django/aero — здесь удалять её НЕ нужно.
|
||||||
|
# --- Секреты приложения bim ---------------------------------------------
|
||||||
|
# Структура задана vault-шаблоном в apps/bim/base/backend.yaml: он собирает
|
||||||
|
# ПЯТЬ комплектов POSTGRES_*_N из одних и тех же ключей. В проде это разные
|
||||||
|
# кластеры-реплики, в контуре СУБД одна — шаблон просто повторяет её пять раз,
|
||||||
|
# поэтому здесь достаточно одного набора значений.
|
||||||
|
- path: secrets/apps/bim/postgres
|
||||||
|
data:
|
||||||
|
host: postgresql.postgresql.svc.cluster.local
|
||||||
|
port: "5432"
|
||||||
|
database: "{{ sarex_postgres_bim_db }}"
|
||||||
|
username: "{{ sarex_postgres_bim_user }}"
|
||||||
|
password: "{{ sarex_secrets.SAREX_BIM_DB_PASSWORD }}"
|
||||||
- path: secrets/vault/common/django_auth
|
- path: secrets/vault/common/django_auth
|
||||||
data:
|
data:
|
||||||
key: "{{ (superuser_name ~ ':' ~ superuser_password) | b64encode }}"
|
key: "{{ (superuser_name ~ ':' ~ superuser_password) | b64encode }}"
|
||||||
@ -410,6 +425,11 @@ sarex_postgres_processing_user: processing
|
|||||||
sarex_postgres_workspaces_db: workspace_db
|
sarex_postgres_workspaces_db: workspace_db
|
||||||
sarex_postgres_workspaces_user: workspace
|
sarex_postgres_workspaces_user: workspace
|
||||||
|
|
||||||
|
# То же для bim. Должно совпадать с записью bim_db в contour.databases
|
||||||
|
# (infrastructure/postgresql/aero).
|
||||||
|
sarex_postgres_bim_db: bim_db
|
||||||
|
sarex_postgres_bim_user: bim
|
||||||
|
|
||||||
# Бакет медиафайлов django. ВНИМАНИЕ: чарт MinIO бакеты не создаёт — его нужно
|
# Бакет медиафайлов django. ВНИМАНИЕ: чарт MinIO бакеты не создаёт — его нужно
|
||||||
# завести отдельно, иначе загрузка файлов будет падать.
|
# завести отдельно, иначе загрузка файлов будет падать.
|
||||||
sarex_django_s3_bucket: sarex-media-storage
|
sarex_django_s3_bucket: sarex-media-storage
|
||||||
|
|||||||
36
apps/bim/aero/kustomization.yaml
Normal file
36
apps/bim/aero/kustomization.yaml
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
namespace: bim
|
||||||
|
resources:
|
||||||
|
- ../base
|
||||||
|
|
||||||
|
# Патчей к самому релизу НЕТ, и это проверено, а не «руки не дошли».
|
||||||
|
#
|
||||||
|
# 1. DJANGO_HOST в base уже правильный — http://backend-svc.django...:80.
|
||||||
|
# Это редкость: у processing и workspaces в base лежал несуществующий
|
||||||
|
# backend.django:8000, здесь адрес корректный.
|
||||||
|
#
|
||||||
|
# 2. DB_CERT_PATH_2/3/4 указывают на /root/yandex_pg.pem — сертификат
|
||||||
|
# управляемой СУБД Яндекса, которого в контуре нет. Зануление не нужно:
|
||||||
|
# в bim-backend-v2 файл читается ТОЛЬКО под флагом —
|
||||||
|
# if !cfg.IntegrationTest && cfg.EnableSSL { GetTLSCert(cfg.DBCertPath) }
|
||||||
|
# а при ENABLE_SSL=0 (значение из base) к строке подключения дописывается
|
||||||
|
# ?sslmode=disable и путь не трогается вовсе.
|
||||||
|
#
|
||||||
|
# 3. Пять комплектов POSTGRES_* в vault-шаблоне base смотрят на один и тот же
|
||||||
|
# хост — так и задумано: в проде это разные кластеры-реплики, в контуре
|
||||||
|
# СУБД одна, и шаблон просто повторяет её пять раз.
|
||||||
|
#
|
||||||
|
# ВНИМАНИЕ, ИЗВЕСТНЫЙ РИСК. В ветке develop у bim-backend-v2 миграции
|
||||||
|
# накатываются при старте httpserver и ошибка фатальна:
|
||||||
|
# if err := appmigrations.RunOnStartup(cfg); err != nil {
|
||||||
|
# log.Fatalf("Error applying migrations: %v", err)
|
||||||
|
# }
|
||||||
|
# а внутри RunOnStartup адрес БД взят не из конфига, а из константы
|
||||||
|
# const v5ClusterAddr = "rc1b-sse4o3n9vea392g4.mdb.yandexcloud.net:6432"
|
||||||
|
# Из контура этот хост недостижим. Если тот же код попал в образ
|
||||||
|
# contour_f9f2a39-dirty, под будет падать в CrashLoopBackOff с этим текстом —
|
||||||
|
# и лечится это только сборкой образа, конфигурацией здесь ничего не сделать.
|
||||||
|
# Образ, впрочем, собран с master и с пометкой -dirty, то есть руками, так что
|
||||||
|
# там может быть уже исправлено. Проверяется по логам первого же пода.
|
||||||
@ -68,6 +68,17 @@ patches:
|
|||||||
# четыре, и все четыре у celery: у backend те же переменные уже указывают
|
# четыре, и все четыре у celery: у backend те же переменные уже указывают
|
||||||
# внутрь кластера. WORKFLOWS_USE=1, так что оставить как есть — значит
|
# внутрь кластера. WORKFLOWS_USE=1, так что оставить как есть — значит
|
||||||
# получить зависания на недоступном домене вместо явной ошибки.
|
# получить зависания на недоступном домене вместо явной ошибки.
|
||||||
|
# BIM API. В base адрес ведёт в namespace bim-api к сервису
|
||||||
|
# bim-backend-v2-service — ни того, ни другого в контуре нет: релиз
|
||||||
|
# разворачивается в namespace bim и называет сервис backend-svc.
|
||||||
|
# См. apps/bim/aero.
|
||||||
|
- op: test
|
||||||
|
path: /spec/values/services/celery/envs/8/name
|
||||||
|
value: BIMV2_INTERNAL_HOST
|
||||||
|
- op: replace
|
||||||
|
path: /spec/values/services/celery/envs/8/value/_default
|
||||||
|
value: http://backend-svc.bim.svc.cluster.local:80
|
||||||
|
|
||||||
- op: test
|
- op: test
|
||||||
path: /spec/values/services/celery/envs/15/name
|
path: /spec/values/services/celery/envs/15/name
|
||||||
value: SERVER_API_HOST
|
value: SERVER_API_HOST
|
||||||
@ -153,6 +164,16 @@ patches:
|
|||||||
path: /spec/values/services/backend/envs/2/value/_default
|
path: /spec/values/services/backend/envs/2/value/_default
|
||||||
value: "False"
|
value: "False"
|
||||||
|
|
||||||
|
# BIM API — то же, что у celery выше: в base адрес ведёт в namespace
|
||||||
|
# bim-api к сервису bim-backend-v2-service, а в контуре это namespace bim
|
||||||
|
# и сервис backend-svc.
|
||||||
|
- op: test
|
||||||
|
path: /spec/values/services/backend/envs/10/name
|
||||||
|
value: BIMV2_INTERNAL_HOST
|
||||||
|
- op: replace
|
||||||
|
path: /spec/values/services/backend/envs/10/value/_default
|
||||||
|
value: http://backend-svc.bim.svc.cluster.local:80
|
||||||
|
|
||||||
# --- Администратор платформы --------------------------------------------
|
# --- Администратор платформы --------------------------------------------
|
||||||
# Учётка приезжает из Vault под именами, которые ждёт штатная
|
# Учётка приезжает из Vault под именами, которые ждёт штатная
|
||||||
# createsuperuser --noinput. Секрет кладёт ansible
|
# createsuperuser --noinput. Секрет кладёт ansible
|
||||||
|
|||||||
@ -12,3 +12,6 @@ resources:
|
|||||||
# Воркспейсы: api и фронтенд-ремоут. Фронтенд наружу не публикуется — его
|
# Воркспейсы: api и фронтенд-ремоут. Фронтенд наружу не публикуется — его
|
||||||
# подгружает главный фронтенд платформы через свой nginx (/workspaces-v2/).
|
# подгружает главный фронтенд платформы через свой nginx (/workspaces-v2/).
|
||||||
- ../../../apps/workspaces/aero
|
- ../../../apps/workspaces/aero
|
||||||
|
# BIM API. Django обращается к нему через BIMV2_INTERNAL_HOST — адрес там
|
||||||
|
# чужой (namespace bim-api), поправлен патчем в apps/django/aero.
|
||||||
|
- ../../../apps/bim/aero
|
||||||
|
|||||||
@ -146,6 +146,26 @@ spec:
|
|||||||
prefix: /
|
prefix: /
|
||||||
service: frontend-svc.django.svc.cluster.local
|
service: frontend-svc.django.svc.cluster.local
|
||||||
port: 80
|
port: 80
|
||||||
|
# BIM API. Отдельный поддомен, а не префикс на домене платформы:
|
||||||
|
# у сервиса нет своего фронтенда и нет общего с платформой origin,
|
||||||
|
# а его пути (/ping, /api/...) на общем домене конфликтовали бы с
|
||||||
|
# маршрутом /api/ django. Внутри кластера django обращается к нему
|
||||||
|
# напрямую по backend-svc.bim, этот маршрут — для внешних клиентов
|
||||||
|
# и отладки.
|
||||||
|
#
|
||||||
|
# Имя добавлено в dnsNames сертификата ниже: без этого браузер
|
||||||
|
# получит сертификат, в котором его нет.
|
||||||
|
bim:
|
||||||
|
namespace: gateway
|
||||||
|
hosts:
|
||||||
|
- bim.sarex.local.lonsdaleites.ru
|
||||||
|
gateways:
|
||||||
|
- gateway/contour-gateway
|
||||||
|
routes:
|
||||||
|
- path:
|
||||||
|
prefix: /
|
||||||
|
service: backend-svc.bim.svc.cluster.local
|
||||||
|
port: 80
|
||||||
# Management UI RabbitMQ.
|
# Management UI RabbitMQ.
|
||||||
rabbitmq:
|
rabbitmq:
|
||||||
namespace: gateway
|
namespace: gateway
|
||||||
@ -203,6 +223,7 @@ spec:
|
|||||||
- dashboard.sarex.local.lonsdaleites.ru
|
- dashboard.sarex.local.lonsdaleites.ru
|
||||||
- rabbitmq.sarex.local.lonsdaleites.ru
|
- rabbitmq.sarex.local.lonsdaleites.ru
|
||||||
- minio.sarex.local.lonsdaleites.ru
|
- minio.sarex.local.lonsdaleites.ru
|
||||||
|
- bim.sarex.local.lonsdaleites.ru
|
||||||
issuerRef:
|
issuerRef:
|
||||||
# Боевой издатель, см. infrastructure/cert-manager/aero/configs.
|
# Боевой издатель, см. infrastructure/cert-manager/aero/configs.
|
||||||
name: letsencrypt-issuer-istio
|
name: letsencrypt-issuer-istio
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user