Processing: один секрет на все файлы задач, добавлен django-auth.json
Следующая задача падала на
run.py:91 data = json.load(file)
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
то есть снова читала пустой файл — на этот раз django-auth.json.
Аннотации пода показали, почему: VAULT_MOUNT_PATH у движка ОДИН НА ВСЕ
файлы. Он подставляет его в каждую аннотацию, меняя только имя ключа:
agent-inject-file-django-auth: django-auth.json
agent-inject-template-django-auth: {{- with secret
"secrets/data/apps/processing/yc-s3" -}}
Ключа django-auth.json в том секрете не было, агент отрендерил пустоту.
Поэтому путь переименован в secrets/apps/processing/job-files: имя yc-s3
описывало один из файлов и врало о содержимом. В секрет добавлен ключ
django-auth.json — объект {"token": "..."}, а не голая строка, потому что
задача читает файл целиком через json.load. Значение то же, что у
workspaces в DJANGO_BASIC_AUTH: base64 от логина и пароля администратора.
Правило на будущее: появился новый файл, который движок кладёт в под
задачи, — добавляется ключ в этот же секрет, с именем ровно как у файла.
This commit is contained in:
parent
3640bc8229
commit
be205b3b14
@ -407,8 +407,20 @@ vault_app_secrets:
|
||||
#
|
||||
# endpoint БЕЗ схемы: протокол задаёт use_ssl. У нас MinIO внутри кластера по
|
||||
# http, поэтому use_ssl: false.
|
||||
- path: secrets/apps/processing/yc-s3
|
||||
#
|
||||
# Путь ОДИН НА ВСЕ файлы задач: движок подставляет VAULT_MOUNT_PATH в каждую
|
||||
# аннотацию, меняя только имя ключа. Добавляется файл — добавляется ключ
|
||||
# СЮДА, с именем ровно как у файла.
|
||||
- path: secrets/apps/processing/job-files
|
||||
data:
|
||||
# Basic-токен администратора django. Задача читает файл целиком как JSON
|
||||
# (run.py: json.load), поэтому здесь именно объект с ключом token, а не
|
||||
# голая строка. Значение — то же, что у workspaces в DJANGO_BASIC_AUTH:
|
||||
# base64 от "логин:пароль" учётки, которую заводит роль.
|
||||
# Без ключа файл рендерится пустым и задача падает на
|
||||
# json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
|
||||
django-auth.json: >-
|
||||
{"token": "{{ (superuser_name ~ ':' ~ superuser_password) | b64encode }}"}
|
||||
yc-s3-service-account.json: >-
|
||||
{"endpoint": "minio.minio.svc.cluster.local:9000",
|
||||
"bucket_name": "{{ sarex_django_s3_bucket }}",
|
||||
|
||||
@ -275,14 +275,20 @@ patches:
|
||||
# {{- with secret "<VAULT_MOUNT_PATH>" -}}
|
||||
# {{ index .Data.data "yc-s3-service-account.json" }}
|
||||
# Отсюда два следствия: путь пишется в форме чтения KV v2 (с /data/), а в
|
||||
# секрете обязан быть ключ с именем ФАЙЛА — yc-s3-service-account.json.
|
||||
# секрете обязан быть ключ с именем ФАЙЛА.
|
||||
#
|
||||
# Путь ОДИН НА ВСЕ ФАЙЛЫ, которые движок кладёт в поды задач: он
|
||||
# подставляет VAULT_MOUNT_PATH в каждую аннотацию, меняя только имя
|
||||
# ключа. Так, для django-auth аннотация ссылается на этот же путь и ищет
|
||||
# в нём ключ django-auth.json. Поэтому имя пути нейтральное (job-files),
|
||||
# а не по имени одного из файлов, — иначе оно врёт о содержимом.
|
||||
# Сам секрет кладёт ansible, vault_app_secrets.
|
||||
- op: add
|
||||
path: /spec/values/services/backend/envs/-
|
||||
value:
|
||||
name: VAULT_MOUNT_PATH
|
||||
value:
|
||||
_default: secrets/data/apps/processing/yc-s3
|
||||
_default: secrets/data/apps/processing/job-files
|
||||
|
||||
# S3 из Vault, как у api.
|
||||
- op: add
|
||||
|
||||
Loading…
Reference in New Issue
Block a user