256 lines
23 KiB
Markdown
256 lines
23 KiB
Markdown
# Конфигурация cde-api и его воркеров
|
||
|
||
Документ описывает переменные окружения `cde-api` и воркеров, развёрнутых в неймспейсе `documentations`. Манифесты — `base/cde-api*.yaml` (канонический вариант) и одноимённые файлы в оверлеях контуров. Источник значений — `cde-api/.helm/values.yaml`; значения в таблицах — из `base` (контуры переопределяют URL зависимостей, см. ниже).
|
||
|
||
## Процессы
|
||
|
||
| HelmRelease | Deployment | Образ | Service | Назначение |
|
||
| --- | --- | --- | --- | --- |
|
||
| `cde-api` | `cde-api` | `cde-api` | `cde-api:8000` | HTTP-API (`CDE_API_HTTP_PORT=8000`) |
|
||
| `cde-api-worker-s32d-create-upload` | `worker-s32d-create-upload` | `cde-api-worker-s32d-create-upload` | — | воркер S32D: создание и загрузка s3→disk |
|
||
| `cde-api-worker-s32d-process-workflows` | `worker-s32d-process-workflows` | `cde-api-worker-s32d-process-workflows` | — | воркер S32D: запуск workflow-обработки |
|
||
| `cde-api-worker-s32d-publish-documents` | `worker-s32d-publish-documents` | `cde-api-worker-s32d-publish-documents` | — | воркер S32D: публикация документов |
|
||
| `cde-api-worker-s32d-handle-error` | `worker-s32d-handle-error` | `cde-api-worker-s32d-handle-error` | — | воркер S32D: обработка ошибок |
|
||
| `cde-api-worker-copy` | `worker-copy` | `cde-api-worker-copy` | — | воркер копирования |
|
||
| `cde-api-worker-move` | `worker-move` | `cde-api-worker-move` | — | воркер перемещения |
|
||
|
||
Не развёрнуты (в `universal-chart` нет поддержки `cronjobs`): `workspace-recovery`, `resource-id-backfill`, `sizer` — остаются в `cde-api/.helm`.
|
||
|
||
Назначение воркеров выведено из имён образов и переменных `CDE_API_S32D_*`; точное поведение — в коде `cde-api/cmd`.
|
||
|
||
## Способ конфигурирования
|
||
|
||
- Только переменные окружения с префиксом `CDE_API_`; вложенные секции задаются через `__` (`CDE_API_DATABASE__HOST`).
|
||
- Несекретные значения — `envs` в HelmRelease. Секреты: в vault-контурах (`base`, а значит `sarex-contour`, `yc-k8s-test`, `d8-ugmk-prod`, `uralkal`, `vad`) — Vault Agent Injector (файлы в `/vault/secrets/`, которые `command: /bin/sh -ec` загружает в окружение перед `exec /opt/main` / `exec /opt/worker`, как у `documentations-api`); в остальных (`ugok`, `brusnika-*`, `wb`) — k8s `secretEnvs`.
|
||
- Образы cde-api содержат `/bin/sh` (статический busybox): он нужен для Vault-обёртки запуска (`exec /opt/main` / `exec /opt/worker`).
|
||
- **Postgres, Valkey и S3 — общие с documentations** (отдельных ресурсов у cde-api нет): БД и креды те же, что у `documentations-api`; Valkey — внутрикластерный `redis:6379` (ns `documentations`, без TLS и пароля, DB 5); S3 — доступ MinIO из `secrets/data/minio/apps/documentations`.
|
||
- Файл `/etc/app/tasks_execution_config.json` (`CDE_API_WORKFLOWS_CONFIG_FILEPATH`) монтируется из ConfigMap `tasks-execution-config-documentation-v2` (`tasks-execution-config.yaml`; содержимое — `cde-api/.example.tasks_execution_config.json`, в реальных контурах заменить боевыми ресурсами задач).
|
||
- Значения по умолчанию в `values.yaml` источника — для stage; в iac всегда `global.env=_default`, поэтому здесь взяты prod-значения, а URL зависимостей — по конвенции соответствующего контура (из его `api.yaml`).
|
||
|
||
## Секреты в Vault (vault-контуры)
|
||
|
||
Инжектируются Vault Agent (role `documentations`, SA `documentations-vault`); каждый путь — отдельный файл `/vault/secrets/cde-api-<имя>`.
|
||
|
||
| Файл | Путь Vault | Переменные | Процессы |
|
||
| --- | --- | --- | --- |
|
||
| `postgres` | `secrets/data/apps/documentations/postgres` (общий с documentations) | `CDE_API_DATABASE__HOST/PORT/NAME/USER/PASSWORD` | все |
|
||
| `s3` | `secrets/data/minio/apps/documentations` (общий) | `CDE_API_S3_ENDPOINT/ACCESS_KEY/SECRET_KEY` | все |
|
||
| `zeebe` | `secrets/data/apps/cde-api/zeebe` (**нужно создать**: `gateway_address`, `client_id`, `client_secret`, `auth_server_url`) | `CDE_API_ZEEBE_*` | все |
|
||
| `rabbitmq` | `secrets/data/rabbitmq/apps/cde` | `CDE_API_RABBITMQ__USER/PASSWORD/VHOST` (хост и порт — в envs) | api, copy, move |
|
||
| `django-auth` | `secrets/data/vault/common/django_auth` (ключ `key`) | `CDE_API_USERS_AUTH_TOKEN` | api |
|
||
| `rsa-public` | `secrets/data/vault/common/rsa_keys` (ключ `public_key`) | `CDE_API_PUBLIC_KEY` | api |
|
||
|
||
Точный состав файлов у каждого процесса — в `podAnnotations` его HelmRelease.
|
||
|
||
## Секреты k8s-контуров (`ugok`, `brusnika-*`, `wb`; ns `documentations`)
|
||
|
||
Postgres — тот же хост/БД, что у `documentations-api` контура (литералы в envs), логин/пароль из его секрета (`postgres-secret` или `documentations-postgresql-secret`, ключи `username`/`password`); Valkey — `redis`. S3 и RabbitMQ — Secret'ы, которые в контуре уже используют hasher / pdf-markings / api; новый нужен только для Zeebe (`cde-api-zeebe-secret`).
|
||
|
||
| Контур | S3 (endpoint / access / secret) | RabbitMQ |
|
||
| --- | --- | --- |
|
||
| `ugok` | `documentations-s3-secret`: `endpoint` / `access_key` / `secret_key` | `documentations-rabbitmq-secret`: `host, port, username, password, vhost` |
|
||
| `brusnika-prod` | `hasher-s3-secret`: `endpoint` / `access_key` / `secret_key` | `rabbitmq`: `host, port, username, password, vhost` |
|
||
| `brusnika-stage` | `yc-s3`: `endpoint_url` / `key_id` / `access_key` | `rabbitmq`: как выше |
|
||
| `wb` | `yc-s3`: `endpoint_url` / `key_id` / `access_key` | как в `wb/api.yaml`: host/port/vhost (`cde`) — литералы в envs, user/password — `hasher-rabbitmq-secret` (`user`, `password`) |
|
||
|
||
Таблица ниже — для справки по `wb` (остальные контуры отличаются именами Secret'ов и ключей, см. таблицу выше):
|
||
|
||
| Secret | Ключи | Переменные |
|
||
| --- | --- | --- |
|
||
| `public-key` | `key` | `CDE_API_PUBLIC_KEY` |
|
||
| `postgres-secret` | `username`, `password` | `CDE_API_DATABASE__USER`, `CDE_API_DATABASE__PASSWORD` |
|
||
| `yc-s3` | `endpoint_url`, `key_id`, `access_key` | `CDE_API_S3_ENDPOINT`, `CDE_API_S3_ACCESS_KEY`, `CDE_API_S3_SECRET_KEY` |
|
||
| `cde-api-zeebe-secret` | `gateway_address`, `client_id`, `client_secret`, `auth_server_url` | `CDE_API_ZEEBE_GATEWAY_ADDRESS`, `CDE_API_ZEEBE_CLIENT_ID`, `CDE_API_ZEEBE_CLIENT_SECRET`, `CDE_API_ZEEBE_AUTH_SERVER_URL` |
|
||
| `django-auth` | `key` | `CDE_API_USERS_AUTH_TOKEN` |
|
||
| `hasher-rabbitmq-secret` | `user`, `password` | `CDE_API_RABBITMQ__USER`, `CDE_API_RABBITMQ__PASSWORD` |
|
||
|
||
## Переменные окружения
|
||
|
||
Колонка «Процессы»: api, create-upload, process-workflows, publish-documents, handle-error, copy, move. Если значение различается между процессами, показано значение первого процесса из списка.
|
||
|
||
| Переменная | Значение (base) | Процессы |
|
||
| --- | --- | --- |
|
||
| `CDE_API_APP_NAME` | `cde-api` *(различается)* | все |
|
||
| `CDE_API_BIMAPI_RETRY_COUNT` | `3` | api, process-workflows, copy, move |
|
||
| `CDE_API_BIMAPI_RETRY_WAIT_MS` | `1000` | api |
|
||
| `CDE_API_BIMAPI_TIMEOUT_MS` | `30000` | api, process-workflows, copy, move |
|
||
| `CDE_API_BIMAPI_TIMEOUT_V2_MS` | `300000` | api, process-workflows, copy, move |
|
||
| `CDE_API_BIMAPI_URL` | `http://backend-svc.bim.svc.cluster.local:80` | api, process-workflows, copy, move |
|
||
| `CDE_API_BIMAPI_V2_URL` | `http://backend-svc.bim.svc.cluster.local:80` | api, process-workflows, copy, move |
|
||
| `CDE_API_CONTAINER_REGISTRY` | `cr.yandex/crp3ccidau046kdj8g9q` | api, process-workflows, copy, move |
|
||
| `CDE_API_CONVERTED_PDF_TO_S3` | `true` | api, process-workflows, copy, move |
|
||
| `CDE_API_CONVERT_DWG_TO_GEOJSON` | `true` | api, process-workflows, copy, move |
|
||
| `CDE_API_CONVERT_DXF_TO_GEOJSON` | `true` | api, process-workflows, copy, move |
|
||
| `CDE_API_COPY_JOB_TIMEOUT_MINUTES` | `30` | copy |
|
||
| `CDE_API_COPY_MAX_SYNC_WAIT_MS` | `300000` | api |
|
||
| `CDE_API_COPY_S3_PARALLELISM` | `1` | copy |
|
||
| `CDE_API_COPY_STEP_PARALLELISM` | `1` | copy |
|
||
| `CDE_API_COPY_WORKER_JOBS` | `""` | copy |
|
||
| `CDE_API_DATABASE_HEALTH_CHECK_PERIOD` | `30s` | все |
|
||
| `CDE_API_DATABASE_MAX_CONN_IDLE_TIME` | `10m` | все |
|
||
| `CDE_API_DATABASE_MAX_CONN_LIFETIME` | `30m` | все |
|
||
| `CDE_API_DATABASE_OBSERVABILITY_ENABLE` | `false` | api |
|
||
| `CDE_API_DATABASE_POOL_SIZE` | `10` *(различается)* | все |
|
||
| `CDE_API_DATABASE__INSECURE_SKIP_TLS` | `false` | все |
|
||
| `CDE_API_DATABASE__SSLMODE` | `disable` | все |
|
||
| `CDE_API_DIAGNOSTICS_SLOW_OPERATION_THRESHOLD` | `30s` | api |
|
||
| `CDE_API_DISK_BUCKET_NAMESPACE` | `documentations` | api |
|
||
| `CDE_API_DJANGO_HOST` | `http://backend-svc.django.svc.cluster.local:80` | api, process-workflows, copy, move |
|
||
| `CDE_API_DOCUMENTATION_V2_URL` | `http://backend-api-svc.documentations.svc.cluster.local:80` | api, process-workflows, copy, move |
|
||
| `CDE_API_EAV_HOST` | `http://backend-svc.eav.svc.cluster.local:80` | все |
|
||
| `CDE_API_EAV_TIMEOUT_MS` | `10000` | api |
|
||
| `CDE_API_ENVIRONMENT` | `production` | api, process-workflows, copy, move |
|
||
| `CDE_API_FLOWS_URL` | `http://backend-svc.flows.svc.cluster.local:80` | все |
|
||
| `CDE_API_HTTP_IDLE_TIMEOUT` | `120s` | api |
|
||
| `CDE_API_HTTP_PORT` | `8000` | api |
|
||
| `CDE_API_HTTP_READ_BUFFER_SIZE` | `96` | api |
|
||
| `CDE_API_HTTP_READ_TIMEOUT` | `0s` | api |
|
||
| `CDE_API_HTTP_WRITE_TIMEOUT` | `0s` | api |
|
||
| `CDE_API_INTERNAL_URL` | `http://cde-api.documentations:8000` | api, process-workflows, copy, move |
|
||
| `CDE_API_ISSUES_BASE_URL` | `http://issues-service.platform:8000` | copy |
|
||
| `CDE_API_ISSUES_RETRY_COUNT` | `3` | copy |
|
||
| `CDE_API_ISSUES_SYNC_ENABLED` | `false` | copy |
|
||
| `CDE_API_ISSUES_TIMEOUT_MS` | `30000` | copy |
|
||
| `CDE_API_LAST_MASTER_BIM` | `36311` | api, process-workflows, copy, move |
|
||
| `CDE_API_LAST_SLAVE_1_BIM` | `94015` | api, process-workflows, copy, move |
|
||
| `CDE_API_LAST_SLAVE_2_BIM` | `135771` | api, process-workflows, copy, move |
|
||
| `CDE_API_LOG_LEVEL` | `debug` *(различается)* | все |
|
||
| `CDE_API_MAILER_BASE_URL` | `http://mailer-service.mailer:8000` | все |
|
||
| `CDE_API_MAILER_FROM_EMAIL` | `noreply@sarex.io` | все |
|
||
| `CDE_API_MAILER_RETRY_COUNT` | `2` | api |
|
||
| `CDE_API_MAILER_TIMEOUT_MS` | `10000` | api |
|
||
| `CDE_API_MOVE_JOB_TIMEOUT_MINUTES` | `30` | move |
|
||
| `CDE_API_MOVE_WORKER_JOBS` | `""` | move |
|
||
| `CDE_API_OBSERVABILITY_ENABLE` | `false` | все |
|
||
| `CDE_API_PUBLIC_LINK_HOST` | `https://document-link-srx.wb.ru` | api |
|
||
| `CDE_API_RABBITMQ__HASHER_EXCHANGE` | `hash.compute` | api, copy, move |
|
||
| `CDE_API_RABBITMQ__HASHER_ROUTING_KEY` | `hash.compute.normal` | api, copy, move |
|
||
| `CDE_API_RABBITMQ__HOST` | `rabbitmq.rabbitmq.svc.cluster.local` | api, copy, move |
|
||
| `CDE_API_RABBITMQ__MARKS_ROUTING_KEY` | `pdf_markings_input` | api, copy, move |
|
||
| `CDE_API_RABBITMQ__PORT` | `5672` | api, copy, move |
|
||
| `CDE_API_REDIS__DB` | `5` | api |
|
||
| `CDE_API_REDIS__DEFAULT_TTL_MINUTES` | `10` | все |
|
||
| `CDE_API_REDIS__DIAL_TIMEOUT_MS` | `5000` | все |
|
||
| `CDE_API_REDIS__HOST` | `redis` | все |
|
||
| `CDE_API_REDIS__MIN_IDLE_CONNS` | `2` *(различается)* | все |
|
||
| `CDE_API_REDIS__PERMISSION_CACHE_ENABLED` | `false` | все |
|
||
| `CDE_API_REDIS__POOL_SIZE` | `10` *(различается)* | все |
|
||
| `CDE_API_REDIS__PORT` | `6379` | все |
|
||
| `CDE_API_REDIS__READ_TIMEOUT_MS` | `3000` | все |
|
||
| `CDE_API_REDIS__SSL` | `false` | все |
|
||
| `CDE_API_REDIS__WRITE_TIMEOUT_MS` | `3000` | все |
|
||
| `CDE_API_RESOURCES_BASE_URL` | `http://iams.iam.svc.cluster.local:8080` | api |
|
||
| `CDE_API_RESOURCES_TIMEOUT` | `10s` | api |
|
||
| `CDE_API_S32D_MAX_ARCHIVE_SIZE_BYTES` | `1099511627776` | api |
|
||
| `CDE_API_S32D_MAX_FILES_COUNT` | `500` | api |
|
||
| `CDE_API_S32D_READERAT_BLOCK_SIZE_MB` | `8` | create-upload |
|
||
| `CDE_API_S32D_READERAT_CACHE_BLOCKS` | `8` | create-upload |
|
||
| `CDE_API_S32D_WORKER_CREATE_UPLOAD_MAX_JOBS` | `2` | create-upload |
|
||
| `CDE_API_S32D_WORKER_CREATE_UPLOAD_TIMEOUT_MIN` | `240` | create-upload |
|
||
| `CDE_API_S32D_WORKER_HANDLE_ERROR_MAX_JOBS` | `4` | handle-error |
|
||
| `CDE_API_S32D_WORKER_HANDLE_ERROR_TIMEOUT_MIN` | `10` | handle-error |
|
||
| `CDE_API_S32D_WORKER_PROCESS_WORKFLOWS_MAX_JOBS` | `2` | process-workflows |
|
||
| `CDE_API_S32D_WORKER_PROCESS_WORKFLOWS_TIMEOUT_MIN` | `480` | process-workflows |
|
||
| `CDE_API_S32D_WORKER_PUBLISH_DOCUMENTS_MAX_JOBS` | `2` | publish-documents |
|
||
| `CDE_API_S32D_WORKER_PUBLISH_DOCUMENTS_TIMEOUT_MIN` | `10` | publish-documents |
|
||
| `CDE_API_S3_BUCKET_LOOKUP` | `auto` | все |
|
||
| `CDE_API_S3_BUCKET_NAME` | `documentations` | все |
|
||
| `CDE_API_S3_CHECK_BUCKET` | `false` | все |
|
||
| `CDE_API_S3_CONNECT_TIMEOUT` | `10s` | api |
|
||
| `CDE_API_S3_INSECURE_SKIP_TLS` | `false` | все |
|
||
| `CDE_API_S3_MAX_PART_SIZE` | `524288000` | все |
|
||
| `CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE` | `5368709120` | все |
|
||
| `CDE_API_S3_TLS_HANDSHAKE_TIMEOUT` | `10s` | api |
|
||
| `CDE_API_S3_UPLOAD_STALL_TIMEOUT` | `10m` | все |
|
||
| `CDE_API_S3_USE_SSL` | `true` | все |
|
||
| `CDE_API_SYSTEMLOG_BASE_URL` | `http://backend-svc.system-log.svc.cluster.local:80` | api, publish-documents, copy, move |
|
||
| `CDE_API_SYSTEMLOG_TIMEOUT_MS` | `10000` | api, publish-documents, copy, move |
|
||
| `CDE_API_TRANSMITTALS_URL` | `http://transmittal-service.transmittal.svc.cluster.local:80` | все |
|
||
| `CDE_API_USERS_BASE_URL` | `http://backend-svc.django.svc.cluster.local:80` | api |
|
||
| `CDE_API_USERS_ORIGINATOR` | `docs_prod` | api |
|
||
| `CDE_API_USERS_TIMEOUT_MS` | `10000` | api |
|
||
| `CDE_API_USE_BIMV1_FOR_BIMV2` | `true` | api, process-workflows, copy, move |
|
||
| `CDE_API_USE_BIM_INSERTER` | `true` | api, process-workflows, copy, move |
|
||
| `CDE_API_USE_LEGACY_BIM_FLOW` | `0` | api, process-workflows, copy, move |
|
||
| `CDE_API_WORKFLOWS_CONFIG_FILEPATH` | `/etc/app/tasks_execution_config.json` | все |
|
||
| `CDE_API_WORKFLOWS_IMAGES_VERSION` | `master` | api, process-workflows, copy, move |
|
||
| `CDE_API_WORKFLOW_BASE_URL` | `http://backend-svc.processing.svc.cluster.local:80` | api, process-workflows, copy, move |
|
||
| `CDE_API_WORKFLOW_RETRY_COUNT` | `3` | api, process-workflows, copy, move |
|
||
| `CDE_API_WORKFLOW_RETRY_WAIT_MS` | `500` | api |
|
||
| `CDE_API_WORKFLOW_TIMEOUT_MS` | `30000` | api, process-workflows, copy, move |
|
||
| `CDE_API_WORKSPACE_BASE_URL` | `http://backend-svc.workspaces.svc.cluster.local:80` | api, publish-documents, copy, move |
|
||
| `CDE_API_WORKSPACE_RETRY_COUNT` | `3` | api, publish-documents, copy, move |
|
||
| `CDE_API_WORKSPACE_TIMEOUT_MS` | `10000` | api, publish-documents, copy, move |
|
||
| `CDE_API_ZEEBE_USE_PLAINTEXT` | `true` | все |
|
||
|
||
## Переменные из k8s-секретов (ugok, brusnika-*, wb)
|
||
|
||
| Переменная | Secret / ключ | Процессы |
|
||
| --- | --- | --- |
|
||
| `CDE_API_DATABASE__PASSWORD` | `postgres-secret` / `password` | все |
|
||
| `CDE_API_DATABASE__USER` | `postgres-secret` / `username` | все |
|
||
| `CDE_API_PUBLIC_KEY` | `public-key` / `key` | api |
|
||
| `CDE_API_RABBITMQ__PASSWORD` | `hasher-rabbitmq-secret` / `password` | api, copy, move |
|
||
| `CDE_API_RABBITMQ__USER` | `hasher-rabbitmq-secret` / `user` | api, copy, move |
|
||
| `CDE_API_S3_ACCESS_KEY` | `yc-s3` / `key_id` | все |
|
||
| `CDE_API_S3_ENDPOINT` | `yc-s3` / `endpoint_url` | все |
|
||
| `CDE_API_S3_SECRET_KEY` | `yc-s3` / `access_key` | все |
|
||
| `CDE_API_USERS_AUTH_TOKEN` | `django-auth` / `key` | api |
|
||
| `CDE_API_ZEEBE_AUTH_SERVER_URL` | `cde-api-zeebe-secret` / `auth_server_url` | все |
|
||
| `CDE_API_ZEEBE_CLIENT_ID` | `cde-api-zeebe-secret` / `client_id` | все |
|
||
| `CDE_API_ZEEBE_CLIENT_SECRET` | `cde-api-zeebe-secret` / `client_secret` | все |
|
||
| `CDE_API_ZEEBE_GATEWAY_ADDRESS` | `cde-api-zeebe-secret` / `gateway_address` | все |
|
||
|
||
## Различия по контурам
|
||
|
||
От контура к контуру меняются URL зависимостей, внешний хост публичных ссылок и источник образов:
|
||
|
||
| Контур | Тип оверлея | Что отличается |
|
||
| --- | --- | --- |
|
||
| `sarex-contour`, `yc-k8s-test` | наследуют `base` | ничего (значения `base`) |
|
||
| `d8-ugmk-prod`, `uralkal`, `vad` | патчи на все 7 HelmRelease (`cde-api*.yaml`, список `envs` заменяется целиком) поверх `base` | `CDE_API_PUBLIC_LINK_HOST` (только api), TLS к S3 (см. ниже) |
|
||
| `ugok` | полная копия HelmRelease, chart 0.1.9 | URL зависимостей (порты 8000/8080), образы из `10.4.10.187:80/library`, pull-secret `dockerhub` |
|
||
| `brusnika-prod`, `brusnika-stage` | полная копия, chart 0.1.7 | URL зависимостей; stage — профиль stage (`CDE_API_ENVIRONMENT=stage`, bucket `documentations-stage`) |
|
||
| `wb` | полная копия, chart 0.1.7 | URL зависимостей, `CDE_API_PUBLIC_LINK_HOST=https://document-link-srx.wb.ru` |
|
||
|
||
Правка `base` на полные копии (ugok, brusnika-*, wb) не влияет.
|
||
|
||
## SSL / TLS по контурам
|
||
|
||
В исходном `values.yaml` cde-api все соединения с TLS (Postgres `verify-full`, Valkey SSL, S3 SSL с пропуском проверки). В iac соседние сервисы работают иначе, поэтому значения выставлены по контуру:
|
||
|
||
| Соединение | Переменные | Значение в iac | Почему |
|
||
| --- | --- | --- | --- |
|
||
| Postgres | `CDE_API_DATABASE__SSLMODE` | `disable` везде | у `documentations-api`/pdf-markings во всех контурах `sslmode=disable`; CA-сертификат (`CERT_BASE64`) не передаётся |
|
||
| Valkey | `CDE_API_REDIS__SSL` | `false` везде | внутрикластерный `redis:6379` без TLS |
|
||
| RabbitMQ | `CDE_API_RABBITMQ__SSL` | не задана (по умолчанию `false`) | порт `5672`, как у marks/hasher |
|
||
| S3 | `CDE_API_S3_USE_SSL` / `CDE_API_S3_INSECURE_SKIP_TLS` | см. таблицу ниже | повторяют флаги pdf-markings / hasher, которые ходят в тот же S3-секрет |
|
||
| Kafka (outbox-relay) | `KAFKA__SECURITY_PROTOCOL`, `KAFKA__INSECURE_SKIP_VERIFY` | `SASL_SSL` (base) / `SSL` (Strimzi-контуры), `INSECURE_SKIP_VERIFY=true`, CA не нужен | как у pm; см. outbox-relay.CONFIGURATION.md |
|
||
|
||
S3 по контурам (`USE_SSL` / `INSECURE_SKIP_TLS`):
|
||
|
||
| Контур | USE_SSL | INSECURE_SKIP_TLS | Источник значения |
|
||
| --- | --- | --- | --- |
|
||
| `base` (`sarex-contour`, `yc-k8s-test`) | `true` | `false` | `MARKS_S3__USE_SSL=true`, `SSL_VERIFY=true` в base |
|
||
| `d8-ugmk-prod` | `true` | `true` | pdf-markings: `USE_SSL=true`, `SSL_VERIFY=false` |
|
||
| `uralkal`, `vad` | `false` | `false` | pdf-markings: `USE_SSL=false` |
|
||
| `ugok` | `false` | `false` | `YANDEX_S3_USE_SSL=0` |
|
||
| `brusnika-prod` | `true` | `false` | hasher: `USE_SSL=true`, `VERIFY=true` (тот же `hasher-s3-secret`) |
|
||
| `brusnika-stage` | `false` | `false` | pdf-markings (тот же `yc-s3`): `USE_SSL=false`; hasher там `true` — проверить |
|
||
| `wb` | `false` | `false` | pdf-markings: `USE_SSL=false` |
|
||
|
||
Эндпоинт S3 приходит из секрета (`endpoint`); если он содержит схему `https://`/`http://`, она должна совпадать с `USE_SSL`.
|
||
|
||
## Допущения и что нужно проверить
|
||
|
||
- `CDE_API_DJANGO_HOST` и `CDE_API_USERS_BASE_URL` повторяют `DJANGO_HOST` из `api.yaml` контура (внутренний адрес Django, не внешний хост из исходного `values.yaml`); documentations использует один и тот же адрес и для получения пользователей.
|
||
- `CDE_API_DISK_BUCKET_NAMESPACE=documentations` — как `NAMESPACE` у documentations-api во всех контурах (в коде cde-api это префикс бакетов компаний `<namespace>-<companyID>-<slug>`, совместимый с legacy doc-api). `CDE_API_S3_BUCKET_NAME=documentations` — только запасной бакет клиента S3 (`CHECK_BUCKET=false`), у documentations-api такой настройки нет.
|
||
- `CDE_API_EAV_HOST`, `CDE_API_TRANSMITTALS_URL` выбраны по конвенции остальных приложений контура (`backend-svc.eav`, `eav-service.eav`, `transmittal-service.transmittal`); сверить с `inventory.yaml`.
|
||
- **Sentry и SigNoz отключены:** переменные `CDE_API_SENTRY_*` и `CDE_API_OBSERVABILITY_{HOST,PORT,SERVICE_NAME,INSECURE}` удалены, `CDE_API_OBSERVABILITY_ENABLE=false`, `CDE_API_DATABASE_OBSERVABILITY_ENABLE=false`.
|
||
- Реплики всех процессов (api и воркеры) — `1` (в исходном prod-конфиге cde-api у `create-upload` и `process-workflows` было `0`).
|
||
- Порт: в источнике `deployment.port=8080` при `CDE_API_HTTP_PORT=8000` и `service.targetPort=8000`; здесь везде 8000.
|
||
- Общая с documentations БД: cde-api применяет свои миграции в той же базе — проверить отсутствие конфликтов имён таблиц/схемы и версий миграций (отдельная схема или префикс при необходимости).
|
||
- Общий Valkey без пароля и TLS (в источнике cde-api — управляемый Valkey с TLS и логином): подтвердить, что cde-api работает без `CDE_API_REDIS__USERNAME/PASSWORD`. DB 5 совпадает с `VALKEY_DB=5` у documentations-api (в stage так же).
|
||
- `secrets/data/apps/cde-api/zeebe` в Vault нужно создать; в k8s-контурах нужен только Secret `cde-api-zeebe-secret`; S3 и RabbitMQ используют существующие Secret'ы hasher / pdf-markings / api (таблица выше). Если в Secret'ах S3 другие права или бакет, чем нужны cde-api, заменить на отдельный.
|
||
- Значения секретов из Vault подставляются в окружение через `. file` без кавычек — как у `documentations-api`; пароли со спецсимволами shell ломают этот способ.
|