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 внутри кластера по
|
# endpoint БЕЗ схемы: протокол задаёт use_ssl. У нас MinIO внутри кластера по
|
||||||
# http, поэтому use_ssl: false.
|
# http, поэтому use_ssl: false.
|
||||||
- path: secrets/apps/processing/yc-s3
|
#
|
||||||
|
# Путь ОДИН НА ВСЕ файлы задач: движок подставляет VAULT_MOUNT_PATH в каждую
|
||||||
|
# аннотацию, меняя только имя ключа. Добавляется файл — добавляется ключ
|
||||||
|
# СЮДА, с именем ровно как у файла.
|
||||||
|
- path: secrets/apps/processing/job-files
|
||||||
data:
|
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: >-
|
yc-s3-service-account.json: >-
|
||||||
{"endpoint": "minio.minio.svc.cluster.local:9000",
|
{"endpoint": "minio.minio.svc.cluster.local:9000",
|
||||||
"bucket_name": "{{ sarex_django_s3_bucket }}",
|
"bucket_name": "{{ sarex_django_s3_bucket }}",
|
||||||
|
|||||||
@ -275,14 +275,20 @@ patches:
|
|||||||
# {{- with secret "<VAULT_MOUNT_PATH>" -}}
|
# {{- with secret "<VAULT_MOUNT_PATH>" -}}
|
||||||
# {{ index .Data.data "yc-s3-service-account.json" }}
|
# {{ index .Data.data "yc-s3-service-account.json" }}
|
||||||
# Отсюда два следствия: путь пишется в форме чтения KV v2 (с /data/), а в
|
# Отсюда два следствия: путь пишется в форме чтения KV v2 (с /data/), а в
|
||||||
# секрете обязан быть ключ с именем ФАЙЛА — yc-s3-service-account.json.
|
# секрете обязан быть ключ с именем ФАЙЛА.
|
||||||
|
#
|
||||||
|
# Путь ОДИН НА ВСЕ ФАЙЛЫ, которые движок кладёт в поды задач: он
|
||||||
|
# подставляет VAULT_MOUNT_PATH в каждую аннотацию, меняя только имя
|
||||||
|
# ключа. Так, для django-auth аннотация ссылается на этот же путь и ищет
|
||||||
|
# в нём ключ django-auth.json. Поэтому имя пути нейтральное (job-files),
|
||||||
|
# а не по имени одного из файлов, — иначе оно врёт о содержимом.
|
||||||
# Сам секрет кладёт ansible, vault_app_secrets.
|
# Сам секрет кладёт ansible, vault_app_secrets.
|
||||||
- op: add
|
- op: add
|
||||||
path: /spec/values/services/backend/envs/-
|
path: /spec/values/services/backend/envs/-
|
||||||
value:
|
value:
|
||||||
name: VAULT_MOUNT_PATH
|
name: VAULT_MOUNT_PATH
|
||||||
value:
|
value:
|
||||||
_default: secrets/data/apps/processing/yc-s3
|
_default: secrets/data/apps/processing/job-files
|
||||||
|
|
||||||
# S3 из Vault, как у api.
|
# S3 из Vault, как у api.
|
||||||
- op: add
|
- op: add
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user