From 714dc55db18ad0513847141a3c29e3b0bda7bd15 Mon Sep 17 00:00:00 2001 From: emelinda Date: Thu, 30 Jul 2026 11:51:58 +0300 Subject: [PATCH] =?UTF-8?q?feat(engine):=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8?= =?UTF-8?q?=D1=81=20workflows-engine=20(k8s-=D0=B8=D1=81=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D0=BD=D0=B8=D1=82=D0=B5=D0=BB=D1=8C=20=D1=87=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=B7=20kubeconfig)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yaml | 56 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/docker-compose.yaml b/docker-compose.yaml index 0354589..111b268 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -483,6 +483,62 @@ services: depends_on: - processing-api + # --------------------------------------------------------------------------- + # workflows-engine — оркестратор processing: читает workflow_db, создаёт Job'ы + # в k3s (K8s-исполнитель; AMQP выкл). В кластер ходит out-of-cluster через + # kubeconfig (KUBE_CONFIG+KUBE_ADDR). Job-поды резолвят postgres/minio через + # DNS-мост namespace processing. Источник: apps/processing/base/engine*.yaml. + # --------------------------------------------------------------------------- + engine: + image: ${SAREX_WORKFLOWS_ENGINE_IMAGE:-cr.yandex/crp3ccidau046kdj8g9q/workflows-endigne_prod:075fc0} + container_name: engine + restart: unless-stopped + entrypoint: ["/engine"] + environment: + APP_NAME: workflows-engine + LOG_LEVEL: info + ENVIRONMENT: contour + # исполнители: только Kubernetes + ENABLE_KUBERNETES_EXECUTOR: "1" + ENABLE_AMQP_EXECUTOR: "0" + COUNT_RUNNING_WORKERS: "1" + COUNT_CANCELING_WORKERS: "1" + COUNT_HANDLE_JOB_WORKERS: "1" + WORKFLOW_PRIORITY: low + MAX_WORKFLOWS_LIMIT: "5" + # доступ в k3s (out-of-cluster): kubeconfig + перекрытый адрес apiserver + KUBE_CONFIG: /kube/config + KUBE_CONTEXT: default + KUBE_ADDR: https://k3s-server:6443 + JOBS_NAMESPACE: processing + # свой доступ к workflow_db по compose-DNS + POSTGRES_ADDRESS: postgres + POSTGRES_PORT: "5432" + POSTGRES_DB: ${SAREX_PROCESSING_DB:-workflow_db} + POSTGRES_USER: ${SAREX_PROCESSING_DB_USER:-processing} + POSTGRES_PASSWORD: ${SAREX_PROCESSING_DB_PASSWORD:-processing-secret} + POSTGRES_POOL_SIZE: "20" + POSTGRES_SSL_USE: "0" + # хранилища: только S3, напрямую в minio (yc-s3 SA JSON смонтирован) + ENABLE_S3_STORAGE: "1" + S3_SERVICE_ACCOUNT: /etc/sarex/yc-s3/yc-s3-service-account.json + # дефолты планирования Job-подов + DEFAULT_IMAGE_PULL_POLICY: IfNotPresent + DEFAULT_CPU_REQUESTS: 100m + DEFAULT_MEMORY_REQUESTS: 64Mi + volumes: + - ./k3s/kubeconfig.yaml:/kube/config:ro,z + - ./engine/yc-s3-service-account.json:/etc/sarex/yc-s3/yc-s3-service-account.json:ro,z + depends_on: + postgres: + condition: service_healthy + postgres-init: + condition: service_completed_successfully + k3s-server: + condition: service_healthy + processing-k8s-init: + condition: service_completed_successfully + # --------------------------------------------------------------------------- # measurements — FastAPI, считает измерения по растрам из S3/MinIO (GDAL vsis3). # БД/воркера нет. Обязателен S3_JSON_SETTINGS. Источник: apps/measurements/base.