diff --git a/modules/docker/codezero/vendor/.env b/modules/docker/codezero/vendor/.env index 550cc2a..3944a41 100644 --- a/modules/docker/codezero/vendor/.env +++ b/modules/docker/codezero/vendor/.env @@ -23,12 +23,17 @@ AQUILA_BACKEND_UNARY_TIMEOUT_SECS=10 AQUILA_GRPC_HOST=0.0.0.0 AQUILA_GRPC_PORT=8081 AQUILA_GRPC_HEALTH_SERVICE=false -DRACO_REST_PORT=8084 -DRACO_REST_HOST=127.0.0.1 +REST_ACTION_PORT=8084 TAURUS_AQUILA_TOKEN=taurus -DRACO_REST_AQUILA_TOKEN=draco-rest -DRACO_CRON_AQUILA_TOKEN=draco-cron +AQUILA_ACTION_REST_IDENTIFIER=rest-action +AQUILA_ACTION_REST_TOKEN=rest-action +AQUILA_ACTION_CRON_IDENTIFIER=cron-action +AQUILA_ACTION_CRON_TOKEN=cron-action + +# Image config for centaurus actions (rest-action, cron-action, ...) +ACTION_IMAGE_REGISTRY=ghcr.io/code0-tech/centaurus/ci-builds +ACTION_IMAGE_TAG= AQUILA_GRPC_CONNECT_TIMEOUT_SECS=2 AQUILA_GRPC_REQUEST_TIMEOUT_SECS=10 @@ -50,6 +55,11 @@ SAGITTARIUS_DB_ENCRYPTION_DETERMINISTIC_KEY=jgTaxTqzM15ved1S8HdXrqrjfCfF5R0h SAGITTARIUS_DB_ENCRYPTION_KEY_DERIVATION_SALT=Z6zcLTgobXLYjXUslRsLMKxvXKq3j6DJ SAGITTARIUS_RAILS_SECRET_KEY_BASE=MVMD6CtQwEWrQ28TdokQakbG2FG5abOn +# Sagittarius gateway +SAGITTARIUS_GATEWAY_LOG_LEVEL=info +SAGITTARIUS_GATEWAY_JWT_SECRET=12a216bf2e5fb54e4f97dc74f222bfb8 +SAGITTARIUS_GATEWAY_JWT_TTL_SECONDS=300 + # Velorum config # VELORUM_ENABLED=false (override, default checks if COMPOSE_PROFILES contains ide_velorum) VELORUM_HOST=velorum @@ -70,6 +80,25 @@ VELORUM_JWT_SECRET=088cfc7a7fc2b07696d8ee5e1ea9d642 # token cost multiplier for this model # VELORUM_MODEL_GPT5_TOKEN_COST=1 +# OpenTelemetry +OPENTELEMETRY_ENABLED=false +OPENTELEMETRY_GRPC_HOST=http://localhost:4317 +OPENTELEMETRY_LOGS_HTTP_ENDPOINT=http://localhost:4318/v1/logs +OPENTELEMETRY_METRICS_HTTP_ENDPOINT=http://localhost:4318/v1/metrics +OPENTELEMETRY_TRACES_HTTP_ENDPOINT=http://localhost:4318/v1/traces +OPENTELEMETRY_LOGS_CLIENTSIDE_HTTP_ENDPOINT=http://localhost:4318/v1/logs +OPENTELEMETRY_METRICS_CLIENTSIDE_HTTP_ENDPOINT=http://localhost:4318/v1/metrics +OPENTELEMETRY_TRACES_CLIENTSIDE_HTTP_ENDPOINT=http://localhost:4318/v1/traces + +OPENTELEMETRY_SERVICE_NAME_SAGITTARIUS_WEB=sagittarius-web +OPENTELEMETRY_SERVICE_NAME_SAGITTARIUS_CABLE=sagittarius-cable +OPENTELEMETRY_SERVICE_NAME_SAGITTARIUS_GRPC=sagittarius-grpc +OPENTELEMETRY_SERVICE_NAME_SAGITTARIUS_BACKGROUND=sagittarius-background +OPENTELEMETRY_SERVICE_NAME_SAGITTARIUS_GATEWAY=sagittarius-gateway +OPENTELEMETRY_SERVICE_NAME_NGINX=nginx +OPENTELEMETRY_SERVICE_NAME_SCULPTOR=sculptor +OPENTELEMETRY_SERVICE_NAME_SCULPTOR_CLIENTSIDE=sculptor-clientside + # Internal config options SAGITTARIUS_RAILS_HOST=sagittarius-rails-web SAGITTARIUS_RAILS_PORT=3000 @@ -77,6 +106,8 @@ SAGITTARIUS_CABLE_HOST=sagittarius-rails-cable SAGITTARIUS_CABLE_PORT=3000 SAGITTARIUS_GRPC_HOST=sagittarius-grpc SAGITTARIUS_GRPC_PORT=50051 +SAGITTARIUS_GATEWAY_HOST=sagittarius-gateway +SAGITTARIUS_GATEWAY_PORT=50051 SAGITTARIUS_LOG_LEVEL=info # web threads and grpc threads must be lower than db pool size SAGITTARIUS_RAILS_WEB_THREADS=3 diff --git a/modules/docker/codezero/vendor/docker-compose.yml b/modules/docker/codezero/vendor/docker-compose.yml index 34f6349..0cad241 100644 --- a/modules/docker/codezero/vendor/docker-compose.yml +++ b/modules/docker/codezero/vendor/docker-compose.yml @@ -40,13 +40,9 @@ services: INITIAL_ROOT_PASSWORD: ${INITIAL_ROOT_PASSWORD} INITIAL_ROOT_MAIL: ${INITIAL_ROOT_MAIL} INITIAL_RUNTIME_TOKEN: ${INITIAL_RUNTIME_TOKEN} + SAGITTARIUS_CONFIG_FILES: /tmp/generated-configs/sagittarius.sagittarius.yml,/tmp/generated-configs/sagittarius.sagittarius-web.yml volumes: - generated-configs:/tmp/generated-configs:ro - entrypoint: | - sh -c " - cp /tmp/generated-configs/sagittarius.sagittarius.yml config/sagittarius.yml - exec bin/docker-entrypoint ./bin/rails server - " restart: unless-stopped healthcheck: test: ["CMD-SHELL", "curl --fail http://localhost:3000/health/liveness"] @@ -63,11 +59,12 @@ services: condition: service_healthy volumes: - generated-configs:/tmp/generated-configs:ro - entrypoint: | - sh -c " - cp /tmp/generated-configs/sagittarius.sagittarius.yml config/sagittarius.yml - exec bin/docker-entrypoint bundle exec good_job - " + environment: + SAGITTARIUS_CONFIG_FILES: /tmp/generated-configs/sagittarius.sagittarius.yml,/tmp/generated-configs/sagittarius.sagittarius-background.yml + command: + - bundle + - exec + - good_job restart: unless-stopped profiles: - ide @@ -79,11 +76,23 @@ services: condition: service_healthy volumes: - generated-configs:/tmp/generated-configs:ro - entrypoint: | - sh -c " - cp /tmp/generated-configs/sagittarius.sagittarius.yml config/sagittarius.yml - exec bin/docker-entrypoint ./bin/grpc_server - " + environment: + SAGITTARIUS_CONFIG_FILES: /tmp/generated-configs/sagittarius.sagittarius.yml,/tmp/generated-configs/sagittarius.sagittarius-grpc.yml + command: + - bin/grpc_server + restart: unless-stopped + profiles: + - ide + + sagittarius-gateway: + image: ${IMAGE_REGISTRY}/sagittarius-gateway:${IMAGE_TAG} + depends_on: + sagittarius-grpc: + condition: service_started + volumes: + - generated-configs:/tmp/generated-configs:ro + environment: + GATEWAY_CONFIG_PATH: /tmp/generated-configs/sagittarius-gateway.gateway.yml restart: unless-stopped profiles: - ide @@ -95,11 +104,13 @@ services: condition: service_healthy volumes: - generated-configs:/tmp/generated-configs:ro - entrypoint: | - sh -c " - cp /tmp/generated-configs/sagittarius.sagittarius.yml config/sagittarius.yml - exec bin/docker-entrypoint bundle exec puma config.cable.ru - " + environment: + SAGITTARIUS_CONFIG_FILES: /tmp/generated-configs/sagittarius.sagittarius.yml,/tmp/generated-configs/sagittarius.sagittarius-cable.yml + command: + - bundle + - exec + - puma + - config.cable.ru restart: unless-stopped profiles: - ide @@ -107,6 +118,25 @@ services: sculptor: image: ${IMAGE_REGISTRY}/sculptor:${IMAGE_TAG}-${IMAGE_EDITION} restart: unless-stopped + environment: + OPENTELEMETRY_ENABLED: ${OPENTELEMETRY_ENABLED:-false} + OTEL_SERVICE_NAME: ${OPENTELEMETRY_SERVICE_NAME_SCULPTOR} + OTEL_LOGS_ENDPOINT: ${OPENTELEMETRY_LOGS_HTTP_ENDPOINT} + OTEL_METRICS_ENDPOINT: ${OPENTELEMETRY_METRICS_HTTP_ENDPOINT} + OTEL_TRACES_ENDPOINT: ${OPENTELEMETRY_TRACES_HTTP_ENDPOINT} + NEXT_PUBLIC_OTEL_SERVICE_NAME: ${OPENTELEMETRY_SERVICE_NAME_SCULPTOR_CLIENTSIDE} + NEXT_PUBLIC_OTEL_LOGS_ENDPOINT: ${OPENTELEMETRY_LOGS_CLIENTSIDE_HTTP_ENDPOINT} + NEXT_PUBLIC_OTEL_METRICS_ENDPOINT: ${OPENTELEMETRY_METRICS_CLIENTSIDE_HTTP_ENDPOINT} + NEXT_PUBLIC_OTEL_TRACES_ENDPOINT: ${OPENTELEMETRY_TRACES_CLIENTSIDE_HTTP_ENDPOINT} + entrypoint: | + sh -c " + if [ \"$$OPENTELEMETRY_ENABLED\" != 'true' ]; then + echo 'UNSET OTEL' + unset OTEL_SERVICE_NAME OTEL_LOGS_ENDPOINT OTEL_METRICS_ENDPOINT OTEL_TRACES_ENDPOINT + unset NEXT_PUBLIC_OTEL_SERVICE_NAME NEXT_PUBLIC_OTEL_LOGS_ENDPOINT NEXT_PUBLIC_OTEL_METRICS_ENDPOINT NEXT_PUBLIC_OTEL_TRACES_ENDPOINT + fi + exec npm run start + " profiles: - ide @@ -130,7 +160,7 @@ services: - ide_velorum nginx: - image: nginx:1.31.1-alpine-slim + image: nginx:1.31.3-alpine-otel depends_on: config-generator: condition: service_completed_successfully @@ -138,7 +168,7 @@ services: condition: service_started sagittarius-rails-cable: condition: service_started - sagittarius-grpc: + sagittarius-gateway: condition: service_started sculptor: condition: service_started @@ -148,6 +178,10 @@ services: entrypoint: | sh -c " cp /tmp/generated-configs/nginx.default.conf /etc/nginx/conf.d/default.conf + if [ -s /tmp/generated-configs/nginx.otel.conf ]; then + sed -i '1i load_module modules/ngx_otel_module.so;' /etc/nginx/nginx.conf + cp /tmp/generated-configs/nginx.otel.conf /etc/nginx/conf.d/otel.conf + fi nginx -t exec nginx -g 'daemon off;' " @@ -159,7 +193,7 @@ services: - ide nats: - image: nats:2.14.1 + image: nats:2.14.4 command: - -js restart: unless-stopped @@ -194,7 +228,6 @@ services: MODE: dynamic AQUILA_URL: 'http://aquila:8081' NATS_URL: nats://nats:4222 - DEFINITION_PATH: '/definitions' AQUILA_TOKEN: "${TAURUS_AQUILA_TOKEN}" AQUILA_GRPC_CONNECT_TIMEOUT_SECS: "${AQUILA_GRPC_CONNECT_TIMEOUT_SECS}" AQUILA_GRPC_REQUEST_TIMEOUT_SECS: "${AQUILA_GRPC_REQUEST_TIMEOUT_SECS}" @@ -202,42 +235,28 @@ services: profiles: - runtime - draco-rest: + rest-action: depends_on: - - nats - image: ${IMAGE_REGISTRY}/draco:${IMAGE_TAG}-rest + - aquila + image: ${ACTION_IMAGE_REGISTRY}/rest-action:${ACTION_IMAGE_TAG} environment: - MODE: dynamic - AQUILA_URL: 'http://aquila:8081' - NATS_URL: nats://nats:4222 - NATS_BUCKET: 'flow_store' - DEFINITION_PATH: '/definitions' + HERCULES_AQUILA_URL: 'http://aquila:8081' + HERCULES_AUTH_TOKEN: "${AQUILA_ACTION_REST_TOKEN}" HTTP_SERVER_PORT: 8084 HTTP_SERVER_HOST: "0.0.0.0" - EXTERNAL_HTTP_SERVER_PORT: "${DRACO_REST_PORT}" - EXTERNAL_HTTP_SERVER_HOST: "${DRACO_REST_HOST}" - AQUILA_TOKEN: "${DRACO_REST_AQUILA_TOKEN}" - AQUILA_GRPC_CONNECT_TIMEOUT_SECS: "${AQUILA_GRPC_CONNECT_TIMEOUT_SECS}" - AQUILA_GRPC_REQUEST_TIMEOUT_SECS: "${AQUILA_GRPC_REQUEST_TIMEOUT_SECS}" ports: - - "${DRACO_REST_PORT}:8084" + - "${REST_ACTION_PORT}:8084" restart: unless-stopped profiles: - runtime - draco-cron: + cron-action: depends_on: - - nats - image: ${IMAGE_REGISTRY}/draco:${IMAGE_TAG}-cron + - aquila + image: ${ACTION_IMAGE_REGISTRY}/cron-action:${ACTION_IMAGE_TAG} environment: - MODE: dynamic - AQUILA_URL: 'http://aquila:8081' - NATS_URL: nats://nats:4222 - NATS_BUCKET: 'flow_store' - DEFINITION_PATH: '/definitions' - AQUILA_TOKEN: "${DRACO_CRON_AQUILA_TOKEN}" - AQUILA_GRPC_CONNECT_TIMEOUT_SECS: "${AQUILA_GRPC_CONNECT_TIMEOUT_SECS}" - AQUILA_GRPC_REQUEST_TIMEOUT_SECS: "${AQUILA_GRPC_REQUEST_TIMEOUT_SECS}" + HERCULES_AQUILA_URL: 'http://aquila:8081' + HERCULES_AUTH_TOKEN: "${AQUILA_ACTION_CRON_TOKEN}" restart: unless-stopped profiles: - runtime diff --git a/vendir.lock.yml b/vendir.lock.yml index 531fe5c..5de5802 100644 --- a/vendir.lock.yml +++ b/vendir.lock.yml @@ -2,8 +2,8 @@ apiVersion: vendir.k14s.io/v1alpha1 directories: - contents: - git: - commitTitle: 'fix: correct file path for aquila config' - sha: 31806fcb5b983282045c3ff32e9b2c1d732b90cd + commitTitle: 'Merge pull request #1047 from code0-tech/pyxis/update/taurus...' + sha: e6a8f00b518e4f1f778ada5fb6bbc15a92e854cd path: . path: modules/docker/codezero/vendor kind: LockConfig