File size: 1,872 Bytes
4b1daed
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# Gateway Configuration Example
server:
  bindAddr: ":8443"
  readTimeout: 30s
  writeTimeout: 60s
  idleTimeout: 120s
  shutdownTimeout: 30s
  maxHeaderBytes: 1048576
  enableHttp2: true

tls:
  enabled: false
  certFile: "/certs/tls.crt"
  keyFile: "/certs/tls.key"
  minVersion: "1.2"

rateLimit:
  enabled: true
  requestsPerSec: 100
  burstSize: 200
  perTenant: true
  perUser: true
  redisEnabled: true
  cleanupInterval: 10m

cors:
  allowedOrigins:
    - "https://app.rag-agent.io"
    - "https://admin.rag-agent.io"
    - "http://localhost:3000"
  allowedMethods:
    - "GET"
    - "POST"
    - "PUT"
    - "DELETE"
    - "OPTIONS"
  allowedHeaders:
    - "Authorization"
    - "Content-Type"
    - "X-Request-ID"
    - "X-Client-Version"
  allowCredentials: true
  maxAge: 3600

auth:
  jwtSecret: "${JWT_SECRET}"
  jwtIssuer: "rag-agent"
  jwtAudience: "api"
  tokenDuration: 24h
  opaEnabled: false
  opaAddr: "http://opa:8181"
  opaPolicy: "authz/allow"
  skipPaths:
    - "/admin/health"
    - "/admin/metrics"

cache:
  enabled: true
  redisAddr: "redis:6379"
  redisPassword: ""
  redisDb: 0
  defaultTtl: 5m
  maxEntrySize: 1048576
  keyPrefix: "rag:gateway:"

serviceDiscovery:
  enabled: false
  consulAddr: "consul:8500"
  consulToken: ""
  serviceRefreshInterval: 30s
  agentServiceAddr: "agent-server:9090"
  retrieverServiceAddr: "retriever-server:9091"
  generatorServiceAddr: "generator-server:9092"
  memoryServiceAddr: "memory-server:9093"

circuitBreaker:
  maxRequests: 5
  interval: 60s
  timeout: 30s
  failureThreshold: 3

observability:
  metricsEnabled: true
  metricsPath: "/admin/metrics"
  tracingEnabled: true
  tracingEndpoint: "jaeger:4317"
  serviceName: "api-gateway"
  auditLogEnabled: true

websocket:
  readBufferSize: 1024
  writeBufferSize: 1024
  pingInterval: 30s
  pongWait: 60s
  writeWait: 10s
  maxMessageSize: 524288