Skip to content

Commit d138c75

Browse files
authored
Merge pull request #30 from persys-dev/feat/update-infra
Feat/update infra
2 parents 037483e + 1a05b83 commit d138c75

4 files changed

Lines changed: 54 additions & 99 deletions

File tree

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Persys Compute Agent Docker Compose
2+
3+
services:
4+
compute-agent:
5+
build:
6+
context: ../..
7+
dockerfile: compute-agent/Dockerfile
8+
environment:
9+
- OTEL_EXPORTER_OTLP_ENDPOINT=${OTEL_EXPORTER_OTLP_ENDPOINT:-jaeger:4318}
10+
- OTEL_SERVICE_NAME=${COMPUTE_AGENT_OTEL_SERVICE_NAME:-compute-agent}
11+
- PERSYS_VAULT_ENABLED=true
12+
- PERSYS_VAULT_ADDR=${COMPUTE_AGENT_VAULT_ADDR:-http://vault:8200}
13+
- PERSYS_VAULT_AUTH_METHOD=${COMPUTE_AGENT_VAULT_AUTH_METHOD:-approle}
14+
- PERSYS_VAULT_SERVICE_NAME=${COMPUTE_AGENT_VAULT_SERVICE_NAME:-compute-agent}
15+
- PERSYS_TLS_ENABLED=${PERSYS_TLS_ENABLED:-true}
16+
- PERSYS_GRPC_PORT=${PERSYS_GRPC_PORT:-50051}
17+
- PERSYS_LOG_LEVEL=${PERSYS_LOG_LEVEL:-info}
18+
- PERSYS_RECONCILE_ENABLED=${PERSYS_RECONCILE_ENABLED:-true}
19+
- PERSYS_VM_ENABLED=${PERSYS_VM_ENABLED:-false}
20+
- PERSYS_SCHEDULER_INSECURE=${PERSYS_SCHEDULER_INSECURE:-false}
21+
- PERSYS_SCHEDULER_ADDR=${PERSYS_SCHEDULER_ADDR:-persys-scheduler:8085}
22+
user: "0:0"
23+
volumes:
24+
- /etc/localtime:/etc/localtime:ro
25+
- ${DOCKER_SOCK_PATH:-/var/run/docker.sock}:/var/run/docker.sock
26+
ports:
27+
- "50051:50051"
28+
- "8089:8089"
29+
networks:
30+
- persys-cloud-net
31+
32+
# --- Shared overlay network for all services ---
33+
networks:
34+
persys-cloud-net:
35+
driver: bridge

infra/docker/docker-compose.yml

Lines changed: 8 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,16 @@ services:
1414
ports:
1515
- 8551:8551
1616
depends_on:
17-
- vault-manager
18-
- mongodb
19-
- vault
2017
- coredns
2118
environment:
2219
- OTEL_EXPORTER_JAEGER_ENDPOINT=${OTEL_EXPORTER_JAEGER_ENDPOINT:-jaeger:4318}
2320
- OTEL_EXPORTER_OTLP_ENDPOINT=${OTEL_EXPORTER_OTLP_ENDPOINT:-jaeger:4318}
2421
- PERSYS_VAULT_ADDR=${PERSYS_GATEWAY_VAULT_ADDR:-http://vault:8200}
2522
- PERSYS_VAULT_AUTH_METHOD=${PERSYS_GATEWAY_VAULT_AUTH_METHOD:-approle}
26-
- PERSYS_VAULT_TOKEN=${PERSYS_GATEWAY_VAULT_TOKEN:-}
2723
- PERSYS_GATEWAY_VAULT_ADDR=${PERSYS_GATEWAY_VAULT_ADDR:-http://vault:8200}
28-
- PERSYS_GATEWAY_VAULT_ROLE_ID=${PERSYS_GATEWAY_VAULT_ROLE_ID:-}
29-
- PERSYS_GATEWAY_VAULT_SECRET_ID=${PERSYS_GATEWAY_VAULT_SECRET_ID:-}
30-
- PERSYS_GATEWAY_MONGO_URI=${PERSYS_GATEWAY_MONGO_URI:-mongodb://admin:admin@mongodb:27017/persys-gateway?authSource=admin}
24+
- PERSYS_GATEWAY_DEPLOYMENT_MODE=${PERSYS_GATEWAY_DEPLOYMENT_MODE:-self-hosted}
25+
- PERSYS_GATEWAY_JWT_SECRET=${PERSYS_GATEWAY_JWT_SECRET}
26+
- PERSYS_GATEWAY_POSTGRES_DSN=${PERSYS_GATEWAY_POSTGRES_DSN}
3127
- PERSYS_GATEWAY_GITHUB_WEBHOOK_SECRET=${PERSYS_GATEWAY_GITHUB_WEBHOOK_SECRET:-}
3228
- PERSYS_GATEWAY_GITHUB_WEBHOOK_SECRET_FILE=${PERSYS_GATEWAY_GITHUB_WEBHOOK_SECRET_FILE:-}
3329
- PERSYS_GATEWAY_GITHUB_CLIENT_ID=${PERSYS_GATEWAY_GITHUB_CLIENT_ID:-}
@@ -40,7 +36,7 @@ services:
4036
- /etc/localtime:/etc/localtime:ro
4137
networks:
4238
- persys-cloud-net
43-
39+
4440
# --- Persys Scheduler (Workload scheduler and reconciler) ---
4541
persys-scheduler:
4642
build:
@@ -51,7 +47,6 @@ services:
5147
- 8085:8085 # gRPC + mTLS API
5248
depends_on:
5349
- etcd
54-
- vault-manager
5550
- coredns
5651
- redis
5752
environment:
@@ -65,9 +60,6 @@ services:
6560
- PERSYS_EXTERNAL_IP=${PERSYS_EXTERNAL_IP}
6661
- PERSYS_VAULT_ADDR=${PERSYS_SCHEDULER_VAULT_ADDR:-http://vault:8200}
6762
- PERSYS_VAULT_AUTH_METHOD=${PERSYS_SCHEDULER_VAULT_AUTH_METHOD:-approle}
68-
- PERSYS_VAULT_TOKEN=${PERSYS_SCHEDULER_VAULT_TOKEN}
69-
- PERSYS_VAULT_APPROLE_ROLE_ID=${PERSYS_SCHEDULER_VAULT_ROLE_ID}
70-
- PERSYS_VAULT_APPROLE_SECRET_ID=${PERSYS_SCHEDULER_VAULT_SECRET_ID}
7163
- PERSYS_VAULT_PKI_MOUNT=${PERSYS_VAULT_PKI_MOUNT:-pki}
7264
- REDIS_ADDR=redis:6379
7365
- REDIS_PASSWORD=
@@ -85,7 +77,6 @@ services:
8577
ports:
8678
- 8087:8087
8779
depends_on:
88-
- vault-manager
8980
- mysql
9081
- redis
9182
environment:
@@ -98,10 +89,6 @@ services:
9889
- PERSYS_FORGERY_PIPELINE_STATUS_KEY=${PERSYS_FORGERY_PIPELINE_STATUS_KEY:-pipeline_status}
9990
- PERSYS_FORGERY_VAULT_ADDR=${PERSYS_FORGERY_VAULT_ADDR:-http://vault:8200}
10091
- PERSYS_FORGERY_VAULT_AUTH_METHOD=${PERSYS_FORGERY_VAULT_AUTH_METHOD:-approle}
101-
- PERSYS_FORGERY_VAULT_TOKEN=${PERSYS_FORGERY_VAULT_TOKEN:-}
102-
- PERSYS_FORGERY_VAULT_TOKEN_FILE=${PERSYS_FORGERY_VAULT_TOKEN_FILE:-}
103-
- PERSYS_FORGERY_VAULT_ROLE_ID=${PERSYS_FORGERY_VAULT_ROLE_ID:-}
104-
- PERSYS_FORGERY_VAULT_SECRET_ID=${PERSYS_FORGERY_VAULT_SECRET_ID:-}
10592
- PERSYS_FORGERY_GITHUB_WEBHOOK_SECRET=${PERSYS_FORGERY_GITHUB_WEBHOOK_SECRET:-}
10693
- PERSYS_FORGERY_GITHUB_WEBHOOK_SECRET_FILE=${PERSYS_FORGERY_GITHUB_WEBHOOK_SECRET_FILE:-}
10794
volumes:
@@ -139,9 +126,6 @@ services:
139126
- AUTOMATION_VAULT_ENABLED=${AUTOMATION_VAULT_ENABLED:-false}
140127
- AUTOMATION_VAULT_ADDR=${AUTOMATION_VAULT_ADDR:-http://vault:8200}
141128
- AUTOMATION_VAULT_AUTH_METHOD=${AUTOMATION_VAULT_AUTH_METHOD:-approle}
142-
- AUTOMATION_VAULT_TOKEN=${AUTOMATION_VAULT_TOKEN:-}
143-
- AUTOMATION_VAULT_APPROLE_ROLE_ID=${AUTOMATION_VAULT_APPROLE_ROLE_ID:-}
144-
- AUTOMATION_VAULT_APPROLE_SECRET_ID=${AUTOMATION_VAULT_APPROLE_SECRET_ID:-}
145129
- AUTOMATION_VAULT_PKI_MOUNT=${AUTOMATION_VAULT_PKI_MOUNT:-pki}
146130
- AUTOMATION_VAULT_PKI_ROLE=${AUTOMATION_VAULT_PKI_ROLE:-persys-automation}
147131
- AUTOMATION_VAULT_CERT_TTL=${AUTOMATION_VAULT_CERT_TTL:-24h}
@@ -154,7 +138,7 @@ services:
154138
- AUTOMATION_FORGERY_REDIS_DB=${AUTOMATION_FORGERY_REDIS_DB:-0}
155139
- AUTOMATION_FORGERY_PIPELINE_KEY=${AUTOMATION_FORGERY_PIPELINE_KEY:-pipeline_status}
156140
- AUTOMATION_STORE_BACKEND=${AUTOMATION_STORE_BACKEND:-postgres}
157-
- AUTOMATION_POSTGRES_DSN=${AUTOMATION_POSTGRES_DSN:-postgres://automation:automation@automation-postgres:5432/persys_automation?sslmode=disable}
141+
- AUTOMATION_POSTGRES_DSN=${AUTOMATION_POSTGRES_DSN:-postgres://automation:automation@postgres:5432/persys_automation?sslmode=disable}
158142
- AUTOMATION_LEADER_ELECTION_ENABLED=${AUTOMATION_LEADER_ELECTION_ENABLED:-true}
159143
- AUTOMATION_LEADER_ELECTION_LOCK_ID=${AUTOMATION_LEADER_ELECTION_LOCK_ID:-771001}
160144
- AUTOMATION_LEADER_ELECTION_POLL_INTERVAL=${AUTOMATION_LEADER_ELECTION_POLL_INTERVAL:-5s}
@@ -192,9 +176,6 @@ services:
192176
- INTELLIGENCE_VAULT_ENABLED=${INTELLIGENCE_VAULT_ENABLED:-false}
193177
- INTELLIGENCE_VAULT_ADDR=${INTELLIGENCE_VAULT_ADDR:-http://vault:8200}
194178
- INTELLIGENCE_VAULT_AUTH_METHOD=${INTELLIGENCE_VAULT_AUTH_METHOD:-approle}
195-
- INTELLIGENCE_VAULT_TOKEN=${INTELLIGENCE_VAULT_TOKEN:-}
196-
- INTELLIGENCE_VAULT_APPROLE_ROLE_ID=${INTELLIGENCE_VAULT_APPROLE_ROLE_ID:-}
197-
- INTELLIGENCE_VAULT_APPROLE_SECRET_ID=${INTELLIGENCE_VAULT_APPROLE_SECRET_ID:-}
198179
- INTELLIGENCE_VAULT_PKI_MOUNT=${INTELLIGENCE_VAULT_PKI_MOUNT:-pki}
199180
- INTELLIGENCE_VAULT_PKI_ROLE=${INTELLIGENCE_VAULT_PKI_ROLE:-persys-intelligence}
200181
- INTELLIGENCE_VAULT_CERT_TTL=${INTELLIGENCE_VAULT_CERT_TTL:-24h}
@@ -208,40 +189,6 @@ services:
208189
- /etc/localtime:/etc/localtime:ro
209190
networks:
210191
- persys-cloud-net
211-
212-
compute-agent:
213-
build:
214-
context: ../..
215-
dockerfile: compute-agent/Dockerfile
216-
environment:
217-
- OTEL_EXPORTER_OTLP_ENDPOINT=${OTEL_EXPORTER_OTLP_ENDPOINT:-jaeger:4318}
218-
- OTEL_SERVICE_NAME=${COMPUTE_AGENT_OTEL_SERVICE_NAME:-compute-agent}
219-
- PERSYS_VAULT_ENABLED=true
220-
- PERSYS_VAULT_ADDR=${COMPUTE_AGENT_VAULT_ADDR:-http://vault:8200}
221-
- PERSYS_VAULT_AUTH_METHOD=${COMPUTE_AGENT_VAULT_AUTH_METHOD:-approle}
222-
- PERSYS_VAULT_TOKEN=${COMPUTE_AGENT_VAULT_TOKEN:-}
223-
- PERSYS_VAULT_APPROLE_ROLE_ID=${COMPUTE_AGENT_VAULT_ROLE_ID:-}
224-
- PERSYS_VAULT_APPROLE_SECRET_ID=${COMPUTE_AGENT_VAULT_SECRET_ID:-}
225-
- PERSYS_VAULT_SERVICE_NAME=${COMPUTE_AGENT_VAULT_SERVICE_NAME:-compute-agent}
226-
- PERSYS_TLS_ENABLED=${PERSYS_TLS_ENABLED:-true}
227-
- PERSYS_GRPC_PORT=${PERSYS_GRPC_PORT:-50051}
228-
- PERSYS_LOG_LEVEL=${PERSYS_LOG_LEVEL:-info}
229-
- PERSYS_RECONCILE_ENABLED=${PERSYS_RECONCILE_ENABLED:-true}
230-
- PERSYS_VM_ENABLED=${PERSYS_VM_ENABLED:-false}
231-
- PERSYS_SCHEDULER_INSECURE=${PERSYS_SCHEDULER_INSECURE:-false}
232-
- PERSYS_SCHEDULER_ADDR=${PERSYS_SCHEDULER_ADDR:-persys-scheduler:8085}
233-
user: "0:0"
234-
volumes:
235-
- /etc/localtime:/etc/localtime:ro
236-
- ${DOCKER_SOCK_PATH:-/var/run/docker.sock}:/var/run/docker.sock
237-
depends_on:
238-
- vault-manager
239-
- persys-scheduler
240-
ports:
241-
- "50051:50051"
242-
- "8089:8089"
243-
networks:
244-
- persys-cloud-net
245192

246193
# --- Certificate Authority / Secret Manager ---
247194
vault:
@@ -325,7 +272,7 @@ services:
325272
networks:
326273
- persys-cloud-net
327274

328-
# --- Postgres (Automation policy and audit store) ---
275+
# --- Postgres (Automation policy and audit store/ Gateway Auth Store) ---
329276
postgres:
330277
image: postgres:17-alpine
331278
restart: unless-stopped
@@ -337,25 +284,10 @@ services:
337284
- "5432:5432"
338285
volumes:
339286
- /etc/localtime:/etc/localtime:ro
340-
- automation_postgres_data:/var/lib/postgresql/data
287+
- postgres_data:/var/lib/postgresql/data
341288
networks:
342289
- persys-cloud-net
343290

344-
# --- MongoDB (Database for Persys Gateway) ---
345-
mongodb:
346-
image: mongo:latest
347-
restart: always
348-
environment:
349-
MONGO_INITDB_ROOT_USERNAME: "${MONGO_INITDB_ROOT_USERNAME:-admin}"
350-
MONGO_INITDB_ROOT_PASSWORD: "${MONGO_INITDB_ROOT_PASSWORD:-admin}"
351-
MONGODB_DATABASE: "${MONGODB_DATABASE:-persys-gateway}"
352-
ports:
353-
- 27017:27017
354-
volumes:
355-
- /etc/localtime:/etc/localtime:ro
356-
- mongodb_data_container:/data/db
357-
networks:
358-
- persys-cloud-net
359291

360292
# --- etcd (Key-value store for Persys Scheduler and CoreDNS) ---
361293
etcd:
@@ -374,7 +306,7 @@ services:
374306

375307
# --- Volumes for persistent data ---
376308
volumes:
377-
mongodb_data_container:
309+
postgres_data:
378310
mysql_data:
379311
redis_data:
380312
automation_postgres_data:

infra/docker/grafana/provisioning/datasources/prometheus-datasource.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,11 @@ datasources:
66
access: proxy
77
url: http://prometheus:9090
88
isDefault: true
9+
editable: true
10+
11+
- name: pyroscope
12+
type: pyroscope
13+
access: proxy
14+
url: http://pyroscope:4040
15+
isDefault: true
916
editable: true

infra/docker/sample.env

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,9 @@ VAULT_ROOT_TOKEN=
1313
# Vault auth per service
1414
PERSYS_GATEWAY_VAULT_ADDR=http://vault:8200
1515
PERSYS_GATEWAY_VAULT_AUTH_METHOD=approle
16-
PERSYS_GATEWAY_VAULT_TOKEN=
17-
PERSYS_GATEWAY_VAULT_ROLE_ID=
18-
PERSYS_GATEWAY_VAULT_SECRET_ID=
19-
PERSYS_GATEWAY_MONGO_URI=mongodb://admin:admin@mongodb:27017/persys-gateway?authSource=admin
16+
PERSYS_GATEWAY_JWT_SECRET=
17+
PERSYS_GATEWAY_POSTGRES_DSN=
18+
PERSYS_GATEWAY_DEPLOYMENT_MODE= # self-hosted | managed
2019
PERSYS_GATEWAY_GITHUB_WEBHOOK_SECRET=
2120
PERSYS_GATEWAY_GITHUB_WEBHOOK_SECRET_FILE=
2221
PERSYS_GATEWAY_GITHUB_CLIENT_ID=
@@ -33,10 +32,6 @@ PERSYS_FORGERY_PIPELINE_STATUS_KEY=forge:pipeline_status
3332
PERSYS_FORGERY_OTEL_SERVICE_NAME=persys-forgery
3433
PERSYS_FORGERY_VAULT_ADDR=http://vault:8200
3534
PERSYS_FORGERY_VAULT_AUTH_METHOD=approle
36-
PERSYS_FORGERY_VAULT_TOKEN=
37-
PERSYS_FORGERY_VAULT_TOKEN_FILE=
38-
PERSYS_FORGERY_VAULT_ROLE_ID=
39-
PERSYS_FORGERY_VAULT_SECRET_ID=
4035
PERSYS_FORGERY_GITHUB_WEBHOOK_SECRET=
4136
PERSYS_FORGERY_GITHUB_WEBHOOK_SECRET_FILE=
4237

@@ -69,9 +64,6 @@ AUTOMATION_SERVER_TLS_KEY=/etc/persys/certs/persys_automation/persys_automation-
6964
AUTOMATION_VAULT_ENABLED=true
7065
AUTOMATION_VAULT_ADDR=http://vault:8200
7166
AUTOMATION_VAULT_AUTH_METHOD=approle
72-
AUTOMATION_VAULT_TOKEN=
73-
AUTOMATION_VAULT_APPROLE_ROLE_ID=
74-
AUTOMATION_VAULT_APPROLE_SECRET_ID=
7567
AUTOMATION_VAULT_PKI_MOUNT=pki
7668
AUTOMATION_VAULT_PKI_ROLE=persys-automation
7769
AUTOMATION_VAULT_CERT_TTL=24h
@@ -86,15 +78,9 @@ AUTOMATION_FORGERY_PIPELINE_KEY=pipeline_status
8678

8779
PERSYS_SCHEDULER_VAULT_ADDR=http://vault:8200
8880
PERSYS_SCHEDULER_VAULT_AUTH_METHOD=approle
89-
PERSYS_SCHEDULER_VAULT_TOKEN=
90-
PERSYS_SCHEDULER_VAULT_ROLE_ID=
91-
PERSYS_SCHEDULER_VAULT_SECRET_ID=
9281

9382
COMPUTE_AGENT_VAULT_ADDR=http://vault:8200
9483
COMPUTE_AGENT_VAULT_AUTH_METHOD=approle
95-
COMPUTE_AGENT_VAULT_TOKEN=
96-
COMPUTE_AGENT_VAULT_ROLE_ID=
97-
COMPUTE_AGENT_VAULT_SECRET_ID=
9884

9985
# Scheduler
10086
ETCD_ENDPOINTS=etcd:2379
@@ -116,9 +102,4 @@ DOCKER_SOCK_PATH=/var/run/docker.sock
116102
# Grafana
117103
GF_SECURITY_ADMIN_USER=admin
118104
GF_SECURITY_ADMIN_PASSWORD=admin
119-
GF_USERS_ALLOW_SIGN_UP=false
120-
121-
# MongoDB
122-
MONGO_INITDB_ROOT_USERNAME=admin
123-
MONGO_INITDB_ROOT_PASSWORD=admin
124-
MONGODB_DATABASE=persys-gateway
105+
GF_USERS_ALLOW_SIGN_UP=false

0 commit comments

Comments
 (0)