iac/apps/bim/aero/bim-worker.yaml
emelinda 3d205fa7e0 BIM: база bimapidb и обязательная переменная GOOGLE_APPLICATION_CREDENTIALS
Оба пода уходили в рестарты, причины разные и обе — мои.

1. bim-api:
     psycopg2.OperationalError: FATAL: database "bimapidb" does not exist
   Имя базы у приложения ЗАХАРДКОЖЕНО и переменной не задаётся — в
   entrypoint_api.sh (yoyo apply ... /bimapidb) и в models/database.py
   (PooledPostgresqlExtDatabase('bimapidb', ...)). Переменной DB_NAME в
   коде нет вообще, я подставлял её впустую. Запись в contour.databases
   переименована bim_db -> bimapidb, DB_NAME из vault-шаблона убран.

   Пустая bim_db остаётся в СУБД: бутстрап умеет только создавать. Данных
   в ней нет — проверено, ноль таблиц.

2. bim-worker:
     Exception: ENV_VARIABLE NOT SET: GOOGLE_APPLICATION_CREDENTIALS
   settings.py делает check_settings(): проходит по ВСЕМ ключам ENV_FIELDS
   и падает на первом незаданном, до проверки флагов дело не доходит.
   Убирать переменную вместе с Google-хранилищем было нельзя. Возвращена;
   файла по этому пути нет и не нужно — при FEATURE_ENABLE_GCLOUD=false
   его никто не открывает, важно лишь наличие самой переменной.

Отсюда правило для этого приложения: набор переменных должен повторять
apps/bim/dsinv целиком, образ там тот же (870965d1...). Менять можно
только значения — адреса, бакет, брокер, — но не состав.
2026-08-09 20:54:20 +03:00

158 lines
6.7 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
# Воркер bimbackend. Крутит тот же образ и те же настройки, что api, —
# отличается только точкой входа (entrypoint_worker.sh) и отсутствием портов.
# Обоснования переменных не дублирую, они в bim-api.yaml.
apiVersion: v1
kind: ServiceAccount
metadata:
name: bim-worker-sa
namespace: bim
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: bim-worker
namespace: bim
labels:
app: bim-worker
spec:
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: bim-worker
template:
metadata:
labels:
app: bim-worker
annotations:
traffic.sidecar.istio.io/excludeOutboundPorts: "8200"
vault.hashicorp.com/agent-init-first: "true"
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/agent-pre-populate-only: "true"
vault.hashicorp.com/auth-path: auth/kubernetes
vault.hashicorp.com/role: bim
vault.hashicorp.com/agent-inject-secret-bim-db: secrets/data/apps/bim/postgres
vault.hashicorp.com/agent-inject-template-bim-db: |-
{{- with secret "secrets/data/apps/bim/postgres" -}}
DB_HOST={{ index .Data.data "host" }}
DB_PORT={{ index .Data.data "port" }}
DB_USER={{ index .Data.data "username" }}
DB_PASSWORD={{ index .Data.data "password" }}
{{- end -}}
vault.hashicorp.com/agent-inject-secret-bim-rabbitmq: secrets/data/rabbitmq/apps/bim
vault.hashicorp.com/agent-inject-template-bim-rabbitmq: |-
{{- with secret "secrets/data/rabbitmq/apps/bim" -}}
RABBIT_USER={{ index .Data.data "username" }}
RABBIT_PASSWORD={{ index .Data.data "password" }}
{{- end -}}
vault.hashicorp.com/agent-inject-secret-bim-s3: secrets/data/minio/apps/bim
vault.hashicorp.com/agent-inject-template-bim-s3: |-
{{- with secret "secrets/data/minio/apps/bim" -}}
AWS_ACCESS_KEY_ID={{ index .Data.data "access_key" }}
AWS_SECRET_ACCESS_KEY={{ index .Data.data "secret_key" }}
{{- end -}}
vault.hashicorp.com/agent-inject-secret-jwt-public: secrets/data/vault/common/rsa_keys
vault.hashicorp.com/agent-inject-template-jwt-public: |-
{{- with secret "secrets/data/vault/common/rsa_keys" -}}
{{ index .Data.data "public_key" }}
{{- end -}}
spec:
serviceAccountName: bim-worker-sa
imagePullSecrets:
- name: regcred
containers:
- name: bim-worker
image: cr.yandex/crp3ccidau046kdj8g9q/bim-api:870965d1967cd761965029b0480884ab7fa7c951
imagePullPolicy: IfNotPresent
command: ["/bin/sh", "-ec"]
args:
- |
set -a
[ -f /vault/secrets/bim-db ] && . /vault/secrets/bim-db
[ -f /vault/secrets/bim-rabbitmq ] && . /vault/secrets/bim-rabbitmq
[ -f /vault/secrets/bim-s3 ] && . /vault/secrets/bim-s3
set +a
exec ./entrypoint_worker.sh
env:
- name: JWT_PUBLIC_KEY_PATH
value: /vault/secrets/jwt-public
- name: FEATURE_ENABLE_JWT_AUTH
value: "false"
- name: FEATURE_ENABLE_SAREX_AUTH
value: "false"
- name: FEATURE_ENABLE_WORKSPACES
value: "true"
- name: FEATURE_ENABLE_GCLOUD
value: "false"
# Значение НЕ УДАЛЯТЬ, даже при выключенном флаге выше. settings.py
# делает check_settings(): проходит по всем ключам ENV_FIELDS и
# падает на первом же незаданном —
# Exception: ENV_VARIABLE NOT SET: GOOGLE_APPLICATION_CREDENTIALS
# Флаги проверяются позже, до них дело не доходит. Файла по этому
# пути нет и не будет: при FEATURE_ENABLE_GCLOUD=false его никто не
# открывает, важно лишь наличие самой переменной.
- name: GOOGLE_APPLICATION_CREDENTIALS
value: /etc/sarex/google-storage/service_account.json
- name: FEATURE_ENABLE_S3
value: "true"
- name: S3_BUCKET
value: sarex-media-storage
- name: BIM_CURRENT_STORAGE
value: s3
- name: AWS_DEFAULT_REGION
value: ru-central1
- name: FEATURE_ENABLE_PROCESSING
value: "1"
- name: PROCESSING_API_URL
value: http://backend-svc.processing.svc.cluster.local:80/internal
- name: PROCESSING_C2M_VERSION
value: stable
- name: WORKSPACES_API_URL
value: http://backend-svc.workspaces.svc.cluster.local:80/internal
- name: COMPARATOR_API_URL
value: http://comparator-api-service.comparator.svc.cluster.local/internal
- name: BIM_API_EXTERNAL_HOST_SCHEMA
value: https
- name: BIM_API_EXTERNAL_HOST
value: bim.sarex.local.lonsdaleites.ru
- name: BIM_API_INTERNAL_HOST_SCHEMA
value: http
- name: BIM_API_INTERNAL_HOST
value: bim-api-service.bim.svc.cluster.local:5555
- name: WEBHOOK_URL
value: http://bim-api-service.bim.svc.cluster.local:5555
# В dsinv у воркера здесь rabbitmq-service.bim:5672 — брокера в
# namespace bim нет ни там, ни здесь; у api в том же файле адрес
# другой и правильный. Ставим общий брокер контура.
- name: RABBIT_HOST
value: rabbitmq.rabbitmq.svc.cluster.local:5672
- name: RABBIT_VHOST
value: "/"
- name: MESH_OPTIMIZER_PATH
value: gltfpack
- name: DEBUG
value: "0"
- name: STORAGE_SEGMENT
value: sarex-production-storage
- name: STORAGE_PROJECT
value: sarex-production
- name: TMP_DIR
value: /tmp
- name: prometheus_multiproc_dir
value: /tmp
- name: BUNDLE_VERSION
value: v1
- name: DISABLE_INSTANCING
value: "0"
resources:
requests:
cpu: 25m
memory: 200Mi
volumeMounts:
- mountPath: /tmp
name: tmp-volume
volumes:
- name: tmp-volume
emptyDir: {}