checklists needs only postgres + the already-enabled rsa_keys, fully
wired in one push. notes/rfi/contracts also get real rabbitmq
vhosts/users (v2 secrets type, field shapes match app templates) and
self-contained kafka creds via the legacy generate:true path (same
precedent as sarex-contour - the v2 kafka type writes flat fields but
these apps read a nested auth.* object, so it doesn't fit).
S3 for notes/rfi/contracts is deliberately left out: same nested
client.endpoint shape mismatch as eav. Buckets ordered via live/s3;
vault.data.infrastructure.minio.apps entries follow in stage 2 once
the real generated credentials are known.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds the eav database and app policy/role/rsa_keys wiring. The minio
S3 secret for eav is deliberately left unset here: the new v2 secrets
contract writes flat s3 fields that don't match eav's expected nested
client.endpoint shape, so that secret has to be hand-populated with
the real live/s3-generated credentials in a follow-up commit. Until
then eav's pod will not start (agent-pre-populate-only needs every
declared secret path to resolve).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Enables app-level policy/role creation for vad (was fully disabled),
adds the workspaces database and a v2 secrets entry that pulls the
generated password from live/database via dependency block.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The module's top-level infra merge replaces the role block wholesale
rather than deep-merging, so overriding only service_account_names
silently dropped the default service_account_namespaces on apply.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
applications.eav — apps/eav/postgres + read_paths на minio/apps/eav и
vault/common/rsa_keys; minio.apps.eav с client.endpoint (шаблон eav
читает YC_S3_ENDPOINT_URL из .Data.data.client.endpoint, в отличие от
django, где эндпоинт захардкожен в манифесте).
applications.bi — apps/bi/postgres, единственная зависимость.
Все пароли — литералом из live/database и live/s3.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
vhost/юзер django реально созданы в живом RabbitMQ (rabbitmqctl
add_vhost/add_user/set_permissions через kubectl exec) — тут только
кладём те же значения в Vault (generate: false, литерал), чтобы
vault-agent django их подхватил.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
create_rsa_keys: true + common.rsa_keys.generate — закрывает
vault/common/rsa_keys для django (JWT_PRIVATE_KEY/JWT_PUBLIC_KEY).
kafka.apps.django.generate — закрывает kafka/apps/django; функционально
kafka django не использует (SERVER_KAFKA_ENABLED=False), но путь должен
резолвиться для vault-agent-init.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
applications.django — secret_path apps/django/postgres (путь из
apps/django/base/backend.yaml), данные литералом из live/database.
read_paths включает rabbitmq/apps/django, minio/apps/django,
kafka/apps/django (ещё не заведены — следующим шагом) и
vault/common/{rsa_keys,django_auth}.
django_zitadel_access_token — то же значение, что у yc-k8s-test
(общее поле vault/common/django_auth.extra, по просьбе).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
minio.enabled: true только ради apps.django — admin/role явно
выключены (нет in-cluster minio-инстанса, писать туда нечего и незачем
роль заводить). access_key/secret_key — реальные, с внешнего MinIO
(live/s3, bucket "django" + IAM-юзер django-sa с policy только на этот
бакет).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Тот же внешний MinIO, что уже используется под tfstate
(111.88.252.72:9000) — не отдельный in-cluster инстанс.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
applications.workspaces — secret_path apps/workspaces/postgres (путь,
захардкоженный в iac base/backend.yaml), данные литералом из
live/database (реальная роль/база workspaces_db на 111.88.255.180).
read_paths включает vault/common/django_auth — приложение объявляет
эту vault-secret в манифесте (DJANGO_BASIC_AUTH), хотя код её не
использует (см. apps/workspaces/CONFIGURATION.md) — без неё
vault-agent-init не стартует.
create_django_auth/create_app_policies/create_app_roles: true —
только для sarex-contour, остальные окружения не тронуты (diff
подтверждён).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
chart с serviceAccount.name: zitadel (не дефолтный zitadel-idp-contour)
- vault role должен биндиться на реальное имя SA, иначе 403 "service
account name not authorized" (как у vad — тот же паттерн).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
zitadel.enabled: true, postgresql.password — литерал, взят из вывода
live/database (реальная роль/база zitadel на внешнем postgres
111.88.255.180, создана этим же прогоном). generate: false — держим
терраформ-модуль в синхроне с уже существующей БД, а не плодим
отдельный независимый пароль.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
environments.sarex-contour.databases в infrastructure.yaml (plaintext,
без sops) — для live/database stack. Postgres внешний, отдельная тачка
(111.88.255.180:5432), не наш in-cluster instance. Только новый
top-level ключ, остальные окружения не тронуты (чистый append, diff
подтверждён).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Забыл перенести username при копировании из yc-k8s-test — ушёл пустой
default, из-за которого bitnami-образ засеял админа как литеральный
'user' вместо ожидаемого, а readiness-проба (читает vault-файл с пустым
именем) падала на invalid credentials.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Новое окружение environments.sarex-contour.vault — только то, что уже
раскатано через iac: kafka (bootstrap, role по дефолту kafka-kafka-contour/
kafka) и rabbitmq (auth, role по дефолту rabbitmq/rabbitmq), пароли
generate: true. postgresql/minio/zitadel/camunda явно enabled:false —
этих сервисов в sarex-contour ещё нет, инфраструктурные дефолты модуля
иначе завели бы под них пустые secrets/roles.
Остальные environments (yc-k8s-test, ugmk, brusnika-stage, wb, vad) не
затронуты — проверено построчным diff расшифрованного содержимого.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds bi-jwt (opaque, SUPERSET_JWT_SECRET) to the secrets list and
vault/apps/bi to bi's read_paths, so bi can drop the plain
superset-jwt-secret k8s secret and pull it from vault instead.
Value is a mock placeholder until the real one is known.
bi_db with ltree/pg_stat_statements/uuid-ossp extensions in
infrastructure.yaml; bi vault application role and bi-postgres secret
(apps/bi/postgres) in infrastructure-secrets.yaml, same shape as the
documentations app.