Celery включён в контуре aero
Worker был отключён патчем удаления, пока не было очередей. RabbitMQ и MinIO развёрнуты, схема БД накачена — включаем. Расхождения с base у celery ровно те же, что у backend: нет Kafka, MinIO живёт внутри кластера. Аннотации инжекции несуществующих секретов убраны — иначе vault-agent-init не отрендерит шаблон и под навсегда останется в Init:Error. SERVER_ZITADEL_ENABLED не трогаем: в base у celery он уже False. Миграции и создание администратора в стартовый скрипт worker'а намеренно НЕ добавлены: схемой владеет backend, а два процесса, катящих миграции при одновременном старте, — гонка на ровном месте. Тег образа выравнен с backend (production_f813140d вместо production_a96dead0). Разные версии кода у web и worker ломаются не при старте, а на конкретной задаче, когда worker десериализует аргументы по своей версии модели.
This commit is contained in:
parent
bddcc955fe
commit
c2a9bae0db
@ -19,18 +19,58 @@ patches:
|
||||
target:
|
||||
kind: ConfigMap
|
||||
name: nginx-configmap
|
||||
# --- Состав контура -------------------------------------------------------
|
||||
# celery выключен: очереди подключим вместе с остальными фоновыми задачами.
|
||||
# s3-proxy ВКЛЮЧЁН — он отдаёт медиафайлы браузеру с CORS и Range, а бакет
|
||||
# уже создан, так что проверять его есть на чём.
|
||||
# --- celery: те же правки, что и у backend --------------------------------
|
||||
# Worker крутит тот же образ и те же настройки, поэтому и расхождения с base
|
||||
# у него ровно те же: нет Kafka, нет Zitadel, MinIO живёт внутри кластера.
|
||||
# Обоснования — в блоке backend ниже, здесь не дублирую.
|
||||
#
|
||||
# SERVER_ZITADEL_ENABLED правки не требует: в base у celery он уже "False"
|
||||
# (в отличие от backend).
|
||||
- target: {kind: HelmRelease, name: celery}
|
||||
patch: |
|
||||
$patch: delete
|
||||
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: celery
|
||||
namespace: django
|
||||
- op: remove
|
||||
path: /spec/values/services/celery/podAnnotations/_default/vault.hashicorp.com~1agent-inject-secret-django-kafka
|
||||
- op: remove
|
||||
path: /spec/values/services/celery/podAnnotations/_default/vault.hashicorp.com~1agent-inject-template-django-kafka
|
||||
- op: remove
|
||||
path: /spec/values/services/celery/podAnnotations/_default/vault.hashicorp.com~1agent-inject-secret-django-common
|
||||
- op: remove
|
||||
path: /spec/values/services/celery/podAnnotations/_default/vault.hashicorp.com~1agent-inject-template-django-common
|
||||
- op: replace
|
||||
path: /spec/values/services/celery/podAnnotations/_default/vault.hashicorp.com~1agent-inject-template-django-s3
|
||||
value: |-
|
||||
{{- with secret "secrets/data/minio/apps/django" }}
|
||||
AWS_S3_ENDPOINT_URL=http://minio.minio.svc.cluster.local:9000
|
||||
S3_HOST=http://minio.minio.svc.cluster.local:9000
|
||||
{{- $buckets := index .Data.data "buckets" }}
|
||||
S3_BUCKET={{ if gt (len $buckets) 0 }}{{ index (index $buckets 0) "name" }}{{ else }}django{{ end }}
|
||||
S3_LOGIN={{ index .Data.data "access_key" }}
|
||||
S3_PASSWORD={{ index .Data.data "secret_key" }}
|
||||
{{- end }}
|
||||
|
||||
# Стартовый скрипт без подключения django-kafka: этого секрета в контуре
|
||||
# нет. migrate и создание администратора сюда НЕ добавляются — схемой
|
||||
# владеет backend, а два процесса, катящих миграции наперегонки при
|
||||
# одновременном старте, — это гонка на ровном месте.
|
||||
- op: replace
|
||||
path: /spec/values/services/celery/deployment/args/_default/0
|
||||
value: |
|
||||
set -a
|
||||
[ -f /vault/secrets/django-postgresql ] && . /vault/secrets/django-postgresql
|
||||
[ -f /vault/secrets/django-rabbitmq ] && . /vault/secrets/django-rabbitmq
|
||||
[ -f /vault/secrets/django-s3 ] && . /vault/secrets/django-s3
|
||||
[ -f /vault/secrets/django-jwt-private ] && export JWT_PRIVATE_KEY="$(cat /vault/secrets/django-jwt-private)"
|
||||
[ -f /vault/secrets/django-jwt-public ] && export JWT_PUBLIC_KEY="$(cat /vault/secrets/django-jwt-public)"
|
||||
set +a
|
||||
exec celery -A config worker -B -l info -E -Q default -n default_worker.%h --concurrency=2
|
||||
|
||||
# Тег образа выравнен с backend. В base у celery production_a96dead0, а у
|
||||
# backend production_f813140d — worker и web крутили бы разный код, и
|
||||
# рассинхрон вылезал бы не при старте, а на конкретной задаче: worker
|
||||
# десериализует аргументы по своей версии модели.
|
||||
- op: replace
|
||||
path: /spec/values/services/celery/image/name/_default
|
||||
value: cr.yandex/crp3ccidau046kdj8g9q/backend:production_f813140d
|
||||
|
||||
# --- backend: убираем зависимости, которых в контуре нет ------------------
|
||||
- target: {kind: HelmRelease, name: backend}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user