From e9c582800e5ca09b585c28c5b63da0e261d9afe9 Mon Sep 17 00:00:00 2001 From: Kochetkov S Date: Mon, 17 Aug 2026 17:19:21 +0300 Subject: [PATCH] ++ use wb superset jwt k8s secret --- apps/django/CONFIGURATION.md | 9 +++-- apps/django/wb/backend.yaml | 37 +++---------------- .../wb/infrastructure/patches/superset.yaml | 7 +++- infrastructure/superset/base/helmrelease.yaml | 2 +- 4 files changed, 17 insertions(+), 38 deletions(-) diff --git a/apps/django/CONFIGURATION.md b/apps/django/CONFIGURATION.md index e733dc9..f5d6c23 100644 --- a/apps/django/CONFIGURATION.md +++ b/apps/django/CONFIGURATION.md @@ -101,7 +101,7 @@ Module Federation) конфигурируется отдельно на этап | `JWT_PUBLIC_KEY` | string | — | Публичный RSA-ключ проверки | | `JWT_KID` | string | `None` | `kid` в заголовке токена (используется для межсервисных вызовов) | | `DJANGO_JWT_SECRET` | string | `Froom too much love of living` | Легаси-секрет | -| `SERVER_SUPERSET_JWT_SECRET` | string | `""` | hmac-секрет для embedded superset guest token. В контуре wb берётся из vault `secrets/data/vault/apps/superset`, ключ `JWT_SECRET`, через роль `django-superset` | +| `SERVER_SUPERSET_JWT_SECRET` | string | `""` | hmac-секрет для embedded superset guest token. В контуре wb берётся из k8s-секрета `superset-jwt-secret`, ключ `jwt_secret` | ### Celery (`CELERY_*`) @@ -300,7 +300,7 @@ Module Federation) конфигурируется отдельно на этап | `django-kafka` | `secrets/data/kafka/apps/django` | `KAFKA_BOOTSTRAP_SERVERS/SECURITY_PROTOCOL/SASL_*` | | `django-jwt-private` / `django-jwt-public` | `secrets/data/vault/common/rsa_keys` | `JWT_PRIVATE_KEY` / `JWT_PUBLIC_KEY` | | `django-common` | `secrets/data/vault/common/django_auth` | `ZITADEL_ACCESS_TOKEN` | -| `server_superset_jwt_secret` | `secrets/data/vault/apps/superset` | `SERVER_SUPERSET_JWT_SECRET` для `/api/analytics/widgets//superset_guest_token/` | +| `superset-jwt-secret` | k8s-секрет в неймспейсе `django` | `SERVER_SUPERSET_JWT_SECRET` для `/api/analytics/widgets//superset_guest_token/` | Контейнер экспортирует эти файлы в окружение до запуска (`set -a; . /vault/secrets/...`). Кроме того, `production.py` из ConfigMap содержит функцию `_load_env_file`, которая @@ -309,8 +309,9 @@ Module Federation) конфигурируется отдельно на этап Для wb superset guest token не использует сервисную учётку Guest Token API: backend формирует jwt локально и подписывает его `SERVER_SUPERSET_JWT_SECRET`, а superset проверяет тем же значением через `GUEST_TOKEN_JWT_SECRET = os.getenv("JWT_SECRET")`. -Оба значения должны приходить из одного vault-пути `secrets/data/vault/apps/superset`; -разовый k8s-secret в `django` для этого кейса не используется. +Оба значения должны совпадать: `superset/jwt-secret` используется superset как +`JWT_SECRET`, а `django/superset-jwt-secret` используется backend как +`SERVER_SUPERSET_JWT_SECRET`. Остальные (несекретные) переменные задаются в блоке `env` контейнеров `backend`/`celery` (`SERVER_*`, `WORKFLOWS_*`, `BIMV2_*`, `MEASUREMENTS_*`, diff --git a/apps/django/wb/backend.yaml b/apps/django/wb/backend.yaml index 6209c03..619b636 100644 --- a/apps/django/wb/backend.yaml +++ b/apps/django/wb/backend.yaml @@ -26,30 +26,6 @@ spec: remediation: retries: 3 - postRenderers: - - kustomize: - patches: - - target: - group: apps - version: v1 - kind: Deployment - name: backend - patch: |- - - op: add - path: /spec/template/metadata/annotations - value: - vault.hashicorp.com/agent-inject: "true" - vault.hashicorp.com/agent-init-first: "true" - vault.hashicorp.com/agent-pre-populate-only: "true" - vault.hashicorp.com/auth-path: "auth/kubernetes" - vault.hashicorp.com/role: "django-superset" - vault.hashicorp.com/agent-inject-secret-server-superset-jwt-secret: "secrets/data/vault/apps/superset" - vault.hashicorp.com/agent-inject-file-server-superset-jwt-secret: "server_superset_jwt_secret" - vault.hashicorp.com/agent-inject-template-server-superset-jwt-secret: | - {{- with secret "secrets/data/vault/apps/superset" -}} - {{ index .Data.data "JWT_SECRET" }} - {{- end -}} - values: global: env: _default @@ -76,14 +52,6 @@ spec: port: _default: 8000 - command: - _default: - - /bin/sh - - -ec - - | - export SERVER_SUPERSET_JWT_SECRET="$(cat /vault/secrets/server_superset_jwt_secret)" - exec bash /opt/sarex/entrypoint.sh - probes: liveness: enabled: false @@ -350,6 +318,11 @@ spec: _default: "False" secretEnvs: + - name: SERVER_SUPERSET_JWT_SECRET + secretName: + _default: "superset-jwt-secret" + secretKey: "jwt_secret" + - name: ZITADEL_ACCESS_TOKEN secretName: _default: "zitadel-secret" diff --git a/clusters/wb/infrastructure/patches/superset.yaml b/clusters/wb/infrastructure/patches/superset.yaml index 0a1210c..6ceaeb9 100644 --- a/clusters/wb/infrastructure/patches/superset.yaml +++ b/clusters/wb/infrastructure/patches/superset.yaml @@ -9,7 +9,7 @@ spec: values: fullnameOverride: superset vault: - enabled: true + enabled: false stronghold: enabled: false extraEnv: @@ -19,6 +19,11 @@ spec: extraEnvRaw: - name: ENABLE_PROXY_FIX value: "true" + - name: JWT_SECRET + valueFrom: + secretKeyRef: + name: jwt-secret + key: jwt_secret supersetNode: connections: redis_host: superset-redis-headless diff --git a/infrastructure/superset/base/helmrelease.yaml b/infrastructure/superset/base/helmrelease.yaml index 69ac390..3069128 100644 --- a/infrastructure/superset/base/helmrelease.yaml +++ b/infrastructure/superset/base/helmrelease.yaml @@ -8,7 +8,7 @@ spec: chart: spec: chart: superset-prod - version: "0.13.4" + version: "0.13.3" sourceRef: kind: HelmRepository name: yc-oci-charts