Processing: у секрета задач своя схема JSON, не как у движка
403 Forbidden на HeadObject объяснялся не кредами и не отсутствием объекта — и то и другое я проверил, они в порядке. Дело в схеме файла. Движок читает /vault/secrets/processing-s3 с ключами host/bucket/verify, а под задачи разбирает свой файл моделью S3AccountModel с ключами endpoint/bucket_name/access_key_id/secret_access_key/use_ssl. Совпадают только два имени из пяти. Коварство в том, что pydantic на формате движка НЕ падает: access_key_id и secret_access_key подходят по имени, а endpoint и bucket_name молча берут значения по умолчанию. Поэтому вместо понятной ошибки конфигурации задача шла в чужое хранилище и получала 403 — креды при этом верные. endpoint пишется без схемы, протокол задаёт use_ssl; у нас MinIO внутри кластера по http.
This commit is contained in:
parent
ab086a86b4
commit
f3c2fa194b
@ -396,16 +396,25 @@ vault_app_secrets:
|
||||
# yc-s3-service-account.json, а не как-нибудь читаемо, и путь обязан
|
||||
# совпадать с VAULT_MOUNT_PATH в apps/processing/aero.
|
||||
#
|
||||
# Содержимое — тот же JSON, что движок получает в /vault/secrets/processing-s3,
|
||||
# только одной строкой: агент кладёт значение ключа в файл как есть.
|
||||
# СХЕМА ЗДЕСЬ ДРУГАЯ, чем у секрета самого движка, и это главная ловушка.
|
||||
# Движок читает /vault/secrets/processing-s3 с ключами host/bucket/verify, а
|
||||
# задача разбирает свой файл моделью S3AccountModel с ключами
|
||||
# endpoint / bucket_name / access_key_id / secret_access_key / use_ssl
|
||||
# Совпадают только два имени из пяти. Если положить сюда формат движка,
|
||||
# pydantic НЕ упадёт — access_key_id и secret_access_key подойдут, — а
|
||||
# endpoint и bucket_name молча возьмут значения по умолчанию, и задача
|
||||
# получит 403 Forbidden на HeadObject: креды верные, адрес и бакет чужие.
|
||||
#
|
||||
# endpoint БЕЗ схемы: протокол задаёт use_ssl. У нас MinIO внутри кластера по
|
||||
# http, поэтому use_ssl: false.
|
||||
- path: secrets/apps/processing/yc-s3
|
||||
data:
|
||||
yc-s3-service-account.json: >-
|
||||
{"host": "http://minio.minio.svc.cluster.local:9000",
|
||||
"bucket": "{{ sarex_django_s3_bucket }}",
|
||||
{"endpoint": "minio.minio.svc.cluster.local:9000",
|
||||
"bucket_name": "{{ sarex_django_s3_bucket }}",
|
||||
"access_key_id": "{{ sarex_minio_k8s_user }}",
|
||||
"secret_access_key": "{{ sarex_secrets.SAREX_MINIO_ROOT_PASSWORD }}",
|
||||
"region": "us-east-1", "verify": false}
|
||||
"use_ssl": false}
|
||||
# --- Секреты приложения measurements ---------------------------------------
|
||||
# Структура задана vault-шаблоном в apps/measurements/base/backend.yaml: он
|
||||
# собирает из этих ключей одну переменную S3_JSON_SETTINGS и читает endpoint
|
||||
|
||||
Loading…
Reference in New Issue
Block a user