Разворачивается ИМЕННО bimbackend (Python, пара api + worker), а не
platform/bim-backend-v2 из apps/bim/base — тот откачен коммитом 285255e.
../base здесь намеренно не подключён.
Различить два приложения по образу нельзя: оба пушат bim-api. Различие в
тегах — у bimbackend полный SHA коммита (CI пушит bim-api:${CI_COMMIT_SHA}
с master), у bim-backend-v2 contour_*. Взят 870965d1..., тот же, что
крутится в dsinv.
Манифесты обычные, а не universal-chart: в репозитории сервис так и описан
(apps/bim/dsinv), своего чарта у него нет.
Отличия от dsinv:
* секреты из Vault вместо secretKeyRef на несуществующие Secret'ы;
штатный entrypoint файлы читать не умеет, поэтому обёрнут в sh -ec;
* PROCESSING_API_URL и WORKSPACES_API_URL приведены к именам контура —
в dsinv это workflows-service:8000 и workspaces-service:8000, здесь
оба сервиса называются backend-svc и слушают 80;
* RABBIT_HOST у воркера в dsinv указывает на rabbitmq-service.bim —
брокера в этом namespace нет ни там, ни здесь; у api в том же файле
адрес правильный. Поставлен общий брокер контура, vhost корневой;
* S3_BUCKET переведён на общее медиахранилище sarex-media-storage;
* убраны GOOGLE_APPLICATION_CREDENTIALS и том с ключом — Google в
контуре нет, флаг FEATURE_ENABLE_GCLOUD и так выключен;
* NodePort с прибитым 31352 заменён на ClusterIP: наружу сервис выходит
через общий Gateway;
* снят nodeSelector name=generic, imagePullSecrets переведён на regcred.
ИЗВЕСТНОЕ ОГРАНИЧЕНИЕ, принято осознанно. S3 у этого приложения на MinIO
не настраивается: в storage/s3.py адрес зашит в код —
endpoint_url='https://storage.yandexcloud.net'
переменной окружения для него нет. Из контура он недостижим, поэтому
операции с файлами будут падать по таймауту, а остальные эндпоинты живы.
Альтернативы — пересборка образа с вынесенным endpoint либо перевод на
BIM_CURRENT_STORAGE=local (тип есть в storage/storages.py).
Наружу выведен на bim.sarex.local.lonsdaleites.ru, имя добавлено в
dnsNames сертификата. Тот же адрес приложение знает про себя через
BIM_API_EXTERNAL_HOST и строит по нему ссылки.
150 lines
5.9 KiB
YAML
150 lines
5.9 KiB
YAML
---
|
||
# Воркер 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_NAME={{ index .Data.data "database" }}
|
||
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"
|
||
- 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: {}
|