prvng_platform/config/examples/orchestrator.enterprise.example.ncl
Jesús Pérez 09a97ac8f5
chore: update platform submodule to monorepo crates structure
Platform restructured into crates/, added AI service and detector,
       migrated control-center-ui to Leptos 0.8
2026-01-08 21:32:59 +00:00

152 lines
3.7 KiB
Plaintext

# Orchestrator Configuration Example - Enterprise Deployment Mode
#
# This example shows large-scale enterprise deployments with full HA,
# 3 replicas, distributed storage, and comprehensive monitoring.
#
# Usage:
# nickel export --format toml orchestrator.enterprise.example.ncl > orchestrator.enterprise.toml
# nickel export --format json orchestrator.enterprise.example.ncl | jq
{
workspace = {
root_path = "/var/provisioning/workspace",
data_path = "/mnt/provisioning/workspace/data",
state_path = "/mnt/provisioning/workspace/state",
cache_path = "/var/cache/provisioning",
isolation_level = 'kubernetes,
execution_mode = 'distributed,
},
server = {
address = "0.0.0.0",
port = 8080,
tls = true,
tls_cert = "/etc/provisioning/certs/server.crt",
tls_key = "/etc/provisioning/certs/server.key",
tls_client_cert = "/etc/provisioning/certs/client-ca.crt",
tls_require_client_cert = true,
cors = {
enabled = true,
allowed_origins = [
"https://control-center.production.svc:8081",
"https://api.provisioning.example.com",
],
allowed_methods = ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD"],
},
rate_limiting = {
enabled = true,
requests_per_second = 5000,
burst_size = 500,
},
request_timeout = 30000,
keepalive_timeout = 75000,
},
storage = {
backend = 's3,
s3 = {
bucket = "provisioning-enterprise",
region = "us-east-1",
endpoint = "https://s3.us-east-1.amazonaws.com",
},
max_size = 1099511627776, # 1TB
cache_enabled = true,
cache_ttl = 14400, # 4 hours
replication = {
enabled = true,
regions = ["us-west-2"],
},
},
queue = {
max_concurrent_tasks = 100,
retry_attempts = 7,
retry_delay = 30000,
retry_backoff = 'exponential,
task_timeout = 14400000, # 4 hours
persist = true,
dead_letter_queue = {
enabled = true,
max_size = 100000,
retention_days = 30,
},
priority_queue = true,
metrics = true,
distributed = true,
redis = {
cluster = "redis-provisioning",
nodes = ["redis-1", "redis-2", "redis-3"],
},
},
database = {
host = "postgres-primary.provisioning.svc",
port = 5432,
username = "provisioning",
pool_size = 50,
pool_idle_timeout = 900,
connection_timeout = 30000,
ssl = true,
},
logging = {
level = 'info,
format = 'json,
output = 'file,
file = "/var/log/provisioning/orchestrator.log",
max_size = 1073741824, # 1GB
retention_days = 90,
},
monitoring = {
enabled = true,
metrics_port = 9090,
health_check_interval = 5,
prometheus = {
enabled = true,
scrape_interval = "10s",
remote_write = {
url = "https://prometheus-remote.example.com/api/v1/write",
queue_capacity = 10000,
},
},
jaeger = {
enabled = true,
endpoint = "http://jaeger-collector.observability.svc:14268/api/traces",
sample_rate = 0.1,
},
},
security = {
enable_auth = true,
auth_backend = 'local,
token_expiry = 1800,
enable_rbac = true,
enable_audit_log = true,
audit_log_path = "/var/log/provisioning/audit.log",
},
mode = 'enterprise,
resources = {
cpus = "4.0",
memory = "4096M",
disk = "1T",
},
# Enterprise HA setup: 3 replicas with leader election
replicas = 3,
replica_sync = {
enabled = true,
sync_interval = 1000, # Faster sync for consistency
quorum_required = true,
},
leader_election = {
enabled = true,
backend = 'etcd,
etcd_endpoints = ["etcd-0.etcd", "etcd-1.etcd", "etcd-2.etcd"],
lease_duration = 15,
},
}