-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
141 lines (123 loc) · 5.22 KB
/
Copy path.env.example
File metadata and controls
141 lines (123 loc) · 5.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# ============================================================================
# Core Application Configuration
# ============================================================================
APP_NAME="Lablet Cloud Manager"
ENVIRONMENT=development
DEBUG=true
LOG_LEVEL=DEBUG
APP_HOST=127.0.0.1
APP_PORT=8030
APP_URL=http://localhost:8030
IMAGE_TAG=latest
# ============================================================================
# Logging Configuration
# ============================================================================
# Enable file logging (set to true to write logs to file)
LOG_TO_FILE=true
# Path to log file (relative to app directory or absolute path)
# Each service should have its own log file:
# control-plane-api: logs/control-plane-api.log
# resource-scheduler: logs/resource-scheduler.log
# lablet-controller: logs/lablet-controller.log
# worker-controller: logs/worker-controller.log
LOG_FILE=logs/debug.log
# Truncate log file on startup (always starts fresh)
LOG_FILE_TRUNCATE_ON_START=true
# ============================================================================
# Security & Authentication
# ============================================================================
ENABLE_CORS=true
CORS_ORIGINS=["http://localhost:8020","http://localhost:3000"]
# Keycloak
KEYCLOAK_URL=http://localhost:8031
KEYCLOAK_REALM=lablet-cloud-manager
KEYCLOAK_CLIENT_ID=lablet-cloud-manager-public
KEYCLOAK_ADMIN_USERNAME=admin
KEYCLOAK_ADMIN_PASSWORD=admin # pragma: allowlist secret
KEYCLOAK_PORT=8031
# Token Validation
VERIFY_ISSUER=true
EXPECTED_ISSUER="http://localhost:8031/realms/lablet-cloud-manager"
VERIFY_AUDIENCE=true
EXPECTED_AUDIENCE=["lablet-cloud-manager"]
REFRESH_AUTO_LEEWAY_SECONDS=60
# Session
SESSION_MAX_DURATION_MINUTES=15
SESSION_EXPIRATION_WARNING_MINUTES=10
# ============================================================================
# Database & Persistence
# ============================================================================
# MongoDB
MONGODB_PORT=8032
MONGODB_ROOT_USERNAME=root
MONGODB_ROOT_PASSWORD=password123 # pragma: allowlist secret
MONGODB_DATABASE=lablet_cloud_manager
MONGODB_EXPRESS_PORT=8033
# Redis
REDIS_ENABLED=true
# ============================================================================
# AWS & CML Worker Configuration
# ============================================================================
# AWS Credentials - REQUIRED for worker management
AWS_ACCESS_KEY_ID=your-aws-access-key-id # pragma: allowlist secret
AWS_SECRET_ACCESS_KEY=your-aws-secret-access-key # pragma: allowlist secret
CML_WORKER_AMI_NAME_DEFAULT=cisco-cml2.9-lablet-v0.1.7
CML_WORKER_INSTANCE_TYPE_DEFAULT=m5zn.metal
CML_WORKER_SECURITY_GROUP_IDS=["sg-xxxxxxxxxxxxxxxxx"]
CML_WORKER_SUBNET_ID=subnet-xxxxxxxx
CML_WORKER_KEY_NAME=your-key-pair-name
CML_WORKER_USERNAME=sysadmin
CML_WORKER_API_USERNAME=admin
CML_WORKER_API_PASSWORD=your-cml-password # pragma: allowlist secret
CML_WORKER_AMI_IDS={"us-east-1":"ami-xxxxxxxxxxxxxxxxx"}
# ============================================================================
# Monitoring & Background Jobs
# ============================================================================
WORKER_MONITORING_ENABLED=true
WORKER_METRICS_POLL_INTERVAL=180
LABS_REFRESH_INTERVAL=300
AUTO_IMPORT_WORKERS_ENABLED=true
AUTO_IMPORT_WORKERS_INTERVAL=60
AUTO_IMPORT_WORKERS_REGION=us-east-1
AUTO_IMPORT_WORKERS_AMI_NAME=cisco-cml2.9-lablet-v0.1.*
# ============================================================================
# Controller Services - Reconciliation
# ============================================================================
# Set polling to false to rely exclusively on watch-triggered reconciliation (reactive)
# Set to true (default) to also run periodic polling reconciliation
# Resource Scheduler
RESOURCE_SCHEDULER_RECONCILE_INTERVAL=30
RESOURCE_SCHEDULER_RECONCILE_POLLING_ENABLED=false
RESOURCE_SCHEDULER_TIMESLOT_LEAD_TIME_MINUTES=35
# Lablet Controller
LABLET_CONTROLLER_RECONCILE_INTERVAL=30
LABLET_CONTROLLER_RECONCILE_POLLING_ENABLED=false
LABLET_CONTROLLER_SCALE_DOWN_GRACE_PERIOD_MINUTES=30
LABLET_CONTROLLER_WORKER_BOOTUP_DELAY_MINUTES=20
# Worker Controller
WORKER_CONTROLLER_RECONCILE_INTERVAL=30
WORKER_CONTROLLER_RECONCILE_POLLING_ENABLED=false
WORKER_CONTROLLER_METRICS_POLL_INTERVAL=60
WORKER_CONTROLLER_LABS_SYNC_INTERVAL=300
WORKER_CONTROLLER_IDLE_CHECK_INTERVAL=60
WORKER_CONTROLLER_IDLE_THRESHOLD_MINUTES=30
# ============================================================================
# Observability
# ============================================================================
OTEL_COLLECTOR_GRPC_PORT=4337
OTEL_COLLECTOR_HTTP_PORT=4338
OTEL_COLLECTOR_METRICS_PORT=8838
OTEL_COLLECTOR_HEALTH_PORT=13333
# ============================================================================
# Infrastructure
# ============================================================================
DOCKER_NETWORK_NAME=lablet-cloud-manager-net
EVENT_PLAYER_PORT=8034
# ============================================================================
# Documentation Settings
# ============================================================================
DOCS_SITE_NAME="Lablet Cloud Manager"
DOCS_SITE_URL="https://bvandewe.github.io/lablet-cloud-manager/"
DOCS_FOLDER=./docs
DOCS_DEV_PORT=8000
PYTHONPATH=./src