feat(billing): implement tenant subscription entitlements system (milestones 0-6)
Some checks failed
ci / ui (push) Failing after 28s
ci / rust (push) Failing after 2m40s
images / build-and-push (push) Failing after 19s

This commit is contained in:
2026-03-30 18:41:23 +03:00
parent 5992044b7e
commit 2595e7f1c5
63 changed files with 8448 additions and 321 deletions

View File

@@ -6,6 +6,44 @@ services:
- "4222:4222"
- "8222:8222"
mailhog:
image: mailhog/mailhog:v1.0.1
ports:
- "1025:1025" # SMTP
- "8025:8025" # Web UI
minio:
image: minio/minio:RELEASE.2025-02-28T09-55-16Z
command: ["server", "/data", "--console-address", ":9001"]
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
ports:
- "9000:9000"
- "9001:9001"
volumes:
- minio_data:/data
minio-init:
image: minio/mc:RELEASE.2025-02-21T16-00-46Z
depends_on:
- minio
entrypoint:
- /bin/sh
- -c
command:
- |
set -euo pipefail
mc alias set local http://minio:9000 minioadmin minioadmin
mc mb -p local/cloudlysis-docs || true
mc mb -p local/cloudlysis-loki || true
mc mb -p local/cloudlysis-tempo || true
mc mb -p local/cloudlysis-docs-0 || true
mc mb -p local/cloudlysis-docs-1 || true
mc mb -p local/cloudlysis-docs-2 || true
mc anonymous set download local/cloudlysis-docs || true
echo "minio init done"
gateway:
build:
context: .
@@ -22,7 +60,7 @@ services:
GATEWAY_ROUTING_FILE: /config/routing.json
volumes:
- gateway_data:/data
- ./routing/dev.json:/config/routing.json:ro
- ./config/routing/dev.json:/config/routing.json:ro
ports:
- "8080:8080"
- "8081:8081"
@@ -86,6 +124,7 @@ services:
RUNNER_HTTP_ADDR: 0.0.0.0:8080
RUNNER_SAGA_MANIFEST_PATH: /config/sagas.yaml
RUNNER_EFFECTS_MANIFEST_PATH: /config/effects.yaml
RUNNER_SMTP_URL: smtp://mailhog:1025
volumes:
- runner_data:/data
- ./runner/config:/config:ro
@@ -99,13 +138,25 @@ services:
args:
PACKAGE: api
BIN: api
depends_on:
- minio-init
environment:
CONTROL_API_ADDR: 0.0.0.0:8080
CONTROL_GATEWAY_JWT_HS256_SECRET: dev_secret
CONTROL_PLACEMENT_PATH: /etc/control/placement.json
CONTROL_SWARM_STATE_PATH: /etc/control/swarm_state.json
CONTROL_SELF_URL: http://control-api:8080
CONTROL_S3_ENDPOINT: http://minio:9000
CONTROL_S3_PUBLIC_ENDPOINT: http://localhost:9000
CONTROL_S3_REGION: us-east-1
CONTROL_S3_ACCESS_KEY_ID: minioadmin
CONTROL_S3_SECRET_ACCESS_KEY: minioadmin
CONTROL_S3_FORCE_PATH_STYLE: "true"
CONTROL_S3_INSECURE: "true"
CONTROL_S3_BUCKET_DOCS: cloudlysis-docs-0,cloudlysis-docs-1,cloudlysis-docs-2
CONTROL_S3_PREFIX_DOCS: docs/
volumes:
- ./placement/dev.json:/etc/control/placement.json:ro
- ./config/placement/dev.json:/etc/control/placement.json:ro
- ./swarm/dev.json:/etc/control/swarm_state.json:ro
ports:
- "38080:8080"
@@ -119,8 +170,75 @@ services:
ports:
- "8082:80"
victoria-metrics:
image: victoriametrics/victoria-metrics:v1.120.0
profiles: ["observability"]
ports:
- "8428:8428"
command:
- "-retentionPeriod=30d"
volumes:
- victoria_metrics_data:/victoria-metrics-data
vmagent:
image: victoriametrics/vmagent:v1.120.0
profiles: ["observability"]
depends_on:
- victoria-metrics
ports:
- "8429:8429"
command:
- "-promscrape.config=/etc/vmagent/scrape.yml"
- "-remoteWrite.url=http://victoria-metrics:8428/api/v1/write"
volumes:
- ./observability/vmagent/scrape.yml:/etc/vmagent/scrape.yml:ro
loki:
image: grafana/loki:3.5.5
profiles: ["observability"]
ports:
- "3100:3100"
command:
- "-config.file=/etc/loki/config.yml"
volumes:
- ./observability/loki/config.yml:/etc/loki/config.yml:ro
- loki_data:/loki
tempo:
image: grafana/tempo:2.8.2
profiles: ["observability"]
ports:
- "3200:3200"
- "4317:4317"
- "4318:4318"
- "9411:9411"
command:
- "-config.file=/etc/tempo/config.yml"
volumes:
- ./observability/tempo/config.yml:/etc/tempo/config.yml:ro
- tempo_data:/var/tempo
grafana:
image: grafana/grafana:12.1.1
profiles: ["observability"]
depends_on:
- victoria-metrics
- loki
- tempo
ports:
- "3000:3000"
volumes:
- grafana_data:/var/lib/grafana
- ./observability/grafana/provisioning:/etc/grafana/provisioning:ro
- ./observability/grafana/dashboards:/var/lib/grafana/dashboards:ro
volumes:
aggregate_data:
gateway_data:
projection_data:
runner_data:
minio_data:
grafana_data:
loki_data:
tempo_data:
victoria_metrics_data: