Initial import with GitLab CI/CD and registry deploy flow
This commit is contained in:
@@ -0,0 +1,538 @@
|
||||
namespace: mvp-cc
|
||||
|
||||
image:
|
||||
repository: mvp-cc-platform
|
||||
tag: latest
|
||||
|
||||
global:
|
||||
databaseUrl: postgresql://mvp:mvp@postgresql.mvp-cc.svc.cluster.local:5432/mvpcc
|
||||
schemaManagementMode: migrations
|
||||
runtimeClass: ""
|
||||
imagePullPolicy: IfNotPresent
|
||||
|
||||
migrations:
|
||||
enabled: true
|
||||
backoffLimit: 1
|
||||
activeDeadlineSeconds: 300
|
||||
ttlSecondsAfterFinished: 600
|
||||
hookDeletePolicy: before-hook-creation,hook-succeeded
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 256Mi
|
||||
|
||||
profiles:
|
||||
scale500:
|
||||
enabled: false
|
||||
|
||||
db:
|
||||
poolSize: "15"
|
||||
maxOverflow: "30"
|
||||
poolTimeoutSeconds: "30"
|
||||
poolRecycleSeconds: "1800"
|
||||
|
||||
voiceAdapter:
|
||||
trustedServiceSubjects: svc:asterisk-bridge,svc:ivr-service
|
||||
|
||||
ivrRuntime:
|
||||
trustedServiceSubjects: svc:asterisk-bridge
|
||||
|
||||
recording:
|
||||
importTrustedServiceSubjects: svc:asterisk-bridge
|
||||
importAllowAdmin: "1"
|
||||
|
||||
voiceAI:
|
||||
enabled: "0"
|
||||
queueConfigJson: "{}"
|
||||
asrProvider: openai
|
||||
ttsProvider: openai
|
||||
audioSocketEnabled: "1"
|
||||
audioSocketHost: 0.0.0.0
|
||||
audioSocketPort: "9019"
|
||||
asrModel: gpt-4o-mini-transcribe
|
||||
ttsModel: gpt-4o-mini-tts
|
||||
ttsVoice: alloy
|
||||
ttsCacheEnabled: "1"
|
||||
ttsCacheDir: /var/lib/mvp-cc/data/ai_voice_tts_cache
|
||||
vadMinSpeechMs: "300"
|
||||
vadTrailingSilenceMs: "700"
|
||||
turnMaxMs: "10000"
|
||||
mediaIdleTimeoutSeconds: "15"
|
||||
maxContextSegments: "8"
|
||||
handoffTimeoutSeconds: "8"
|
||||
runtimeTrustedServiceSubjects: svc:ai-voice-runtime
|
||||
|
||||
eventBus:
|
||||
enabled: "0"
|
||||
url: amqp://guest:guest@rabbitmq:5672/
|
||||
exchange: mvpcc.domain.events
|
||||
dispatchBatchSize: "50"
|
||||
maxAttempts: "5"
|
||||
pollIntervalSeconds: "2"
|
||||
consumerEnabled: "1"
|
||||
auditQueue: mvpcc.audit.events
|
||||
reportingQueue: mvpcc.reporting.events
|
||||
|
||||
asteriskBridge:
|
||||
enabled: "0"
|
||||
amiHost: ""
|
||||
amiPort: "5038"
|
||||
amiUsername: ""
|
||||
amiSecret: ""
|
||||
amiEventPrefix: MVPCC
|
||||
queueMapJson: "{}"
|
||||
authMode: legacy_headers
|
||||
authFallbackLegacy: "1"
|
||||
authSubject: svc:asterisk-bridge
|
||||
authUser: asterisk-bridge
|
||||
authRole: admin
|
||||
authTokenTtlSeconds: "300"
|
||||
ivrFastagiEnabled: "0"
|
||||
ivrFastagiHost: 0.0.0.0
|
||||
ivrFastagiPort: "4573"
|
||||
ivrDtmfTimeoutSeconds: "5"
|
||||
ivrMaxNoInputRetries: "2"
|
||||
ivrMaxInvalidRetries: "2"
|
||||
ivrCallLinkWaitSeconds: "5"
|
||||
callcontrolEnabled: "0"
|
||||
callcontrolActionTimeoutSeconds: "10"
|
||||
operatorExtensionMapJson: "{}"
|
||||
transferTargetMapJson: "{}"
|
||||
claimContext: mvpcc-claim
|
||||
transferContext: mvpcc-transfer
|
||||
sftpHost: ""
|
||||
sftpPort: "22"
|
||||
sftpUsername: ""
|
||||
sftpPassword: ""
|
||||
sftpBasePath: /var/spool/asterisk/monitor
|
||||
pollIntervalSeconds: "1"
|
||||
|
||||
rabbitmq:
|
||||
enabled: false
|
||||
image: rabbitmq:3-management
|
||||
replicas: 1
|
||||
user: guest
|
||||
password: guest
|
||||
servicePort: 5672
|
||||
managementPort: 15672
|
||||
|
||||
auth:
|
||||
appTokenSecret: change-me-app-token-secret
|
||||
appTokenTtlSeconds: "3600"
|
||||
allowLegacyHeaderAuth: "1"
|
||||
oidc:
|
||||
enabled: "0"
|
||||
provider: keycloak
|
||||
issuerUrl: https://keycloak.example.local/realms/mvp-cc
|
||||
clientId: mvp-cc
|
||||
clientSecret: change-me-keycloak-client-secret
|
||||
redirectUri: https://cc.example.local/proxy/auth/auth/oidc/callback
|
||||
scopes: openid profile email
|
||||
roleClaim: groups
|
||||
roleMapJson: '{"kc_admin":"admin","kc_supervisor":"supervisor","kc_operator":"operator","kc_analyst":"analyst"}'
|
||||
|
||||
services:
|
||||
auth-service:
|
||||
module: services.auth_service.app:app
|
||||
replicas: 2
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 750m
|
||||
memory: 512Mi
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 2
|
||||
maxReplicas: 2
|
||||
targetCPUUtilizationPercentage: 70
|
||||
podDisruptionBudget:
|
||||
enabled: true
|
||||
minAvailable: 1
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 1Gi
|
||||
audit-service:
|
||||
module: services.audit_service.app:app
|
||||
replicas: 2
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 750m
|
||||
memory: 512Mi
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 2
|
||||
maxReplicas: 2
|
||||
targetCPUUtilizationPercentage: 70
|
||||
podDisruptionBudget:
|
||||
enabled: true
|
||||
minAvailable: 1
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 1Gi
|
||||
customer-service:
|
||||
module: services.customer_service.app:app
|
||||
replicas: 2
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 750m
|
||||
memory: 512Mi
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 2
|
||||
maxReplicas: 2
|
||||
targetCPUUtilizationPercentage: 70
|
||||
podDisruptionBudget:
|
||||
enabled: true
|
||||
minAvailable: 1
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 1Gi
|
||||
interaction-service:
|
||||
module: services.interaction_service.app:app
|
||||
replicas: 4
|
||||
resources:
|
||||
requests:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
limits:
|
||||
cpu: 1500m
|
||||
memory: 1Gi
|
||||
autoscaling:
|
||||
enabled: true
|
||||
minReplicas: 4
|
||||
maxReplicas: 8
|
||||
targetCPUUtilizationPercentage: 70
|
||||
podDisruptionBudget:
|
||||
enabled: true
|
||||
minAvailable: 1
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 1Gi
|
||||
routing-service:
|
||||
module: services.routing_service.app:app
|
||||
replicas: 3
|
||||
resources:
|
||||
requests:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
limits:
|
||||
cpu: 1500m
|
||||
memory: 1Gi
|
||||
autoscaling:
|
||||
enabled: true
|
||||
minReplicas: 3
|
||||
maxReplicas: 6
|
||||
targetCPUUtilizationPercentage: 70
|
||||
podDisruptionBudget:
|
||||
enabled: true
|
||||
minAvailable: 1
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 1Gi
|
||||
voice-adapter-service:
|
||||
module: services.voice_adapter_service.app:app
|
||||
replicas: 2
|
||||
resources:
|
||||
requests:
|
||||
cpu: 250m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 1000m
|
||||
memory: 512Mi
|
||||
autoscaling:
|
||||
enabled: true
|
||||
minReplicas: 2
|
||||
maxReplicas: 4
|
||||
targetCPUUtilizationPercentage: 70
|
||||
podDisruptionBudget:
|
||||
enabled: true
|
||||
minAvailable: 1
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 1Gi
|
||||
recording-service:
|
||||
module: services.recording_service.app:app
|
||||
replicas: 1
|
||||
resources:
|
||||
requests:
|
||||
cpu: 250m
|
||||
memory: 512Mi
|
||||
limits:
|
||||
cpu: 1000m
|
||||
memory: 1Gi
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 1
|
||||
maxReplicas: 1
|
||||
targetCPUUtilizationPercentage: 70
|
||||
podDisruptionBudget:
|
||||
enabled: false
|
||||
minAvailable: 1
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 10Gi
|
||||
ivr-service:
|
||||
module: services.ivr_service.app:app
|
||||
replicas: 2
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 750m
|
||||
memory: 512Mi
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 2
|
||||
maxReplicas: 2
|
||||
targetCPUUtilizationPercentage: 70
|
||||
podDisruptionBudget:
|
||||
enabled: true
|
||||
minAvailable: 1
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 1Gi
|
||||
event-bus-service:
|
||||
module: services.event_bus_service.app:app
|
||||
replicas: 1
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 750m
|
||||
memory: 512Mi
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 1
|
||||
maxReplicas: 1
|
||||
targetCPUUtilizationPercentage: 70
|
||||
podDisruptionBudget:
|
||||
enabled: false
|
||||
minAvailable: 1
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 1Gi
|
||||
asterisk-bridge-service:
|
||||
module: services.asterisk_bridge_service.app:app
|
||||
# Must stay singleton: background AMI consumption and retry/reconcile loops are not multi-replica safe.
|
||||
replicas: 1
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 750m
|
||||
memory: 512Mi
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 1
|
||||
maxReplicas: 1
|
||||
targetCPUUtilizationPercentage: 70
|
||||
podDisruptionBudget:
|
||||
enabled: false
|
||||
minAvailable: 1
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 1Gi
|
||||
telegram-adapter-service:
|
||||
module: services.telegram_adapter_service.app:app
|
||||
replicas: 2
|
||||
resources:
|
||||
requests:
|
||||
cpu: 250m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 1000m
|
||||
memory: 512Mi
|
||||
autoscaling:
|
||||
enabled: true
|
||||
minReplicas: 2
|
||||
maxReplicas: 4
|
||||
targetCPUUtilizationPercentage: 70
|
||||
podDisruptionBudget:
|
||||
enabled: true
|
||||
minAvailable: 1
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 1Gi
|
||||
ai-orchestrator-service:
|
||||
module: services.ai_orchestrator_service.app:app
|
||||
replicas: 2
|
||||
resources:
|
||||
requests:
|
||||
cpu: 250m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 1000m
|
||||
memory: 512Mi
|
||||
autoscaling:
|
||||
enabled: true
|
||||
minReplicas: 2
|
||||
maxReplicas: 4
|
||||
targetCPUUtilizationPercentage: 70
|
||||
podDisruptionBudget:
|
||||
enabled: true
|
||||
minAvailable: 1
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 1Gi
|
||||
ai-voice-runtime-service:
|
||||
module: services.ai_voice_runtime_service.app:app
|
||||
replicas: 1
|
||||
resources:
|
||||
requests:
|
||||
cpu: 250m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 1000m
|
||||
memory: 512Mi
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 1
|
||||
maxReplicas: 1
|
||||
targetCPUUtilizationPercentage: 70
|
||||
podDisruptionBudget:
|
||||
enabled: false
|
||||
minAvailable: 1
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 1Gi
|
||||
webchat-adapter-service:
|
||||
module: services.webchat_adapter_service.app:app
|
||||
replicas: 2
|
||||
resources:
|
||||
requests:
|
||||
cpu: 250m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 1000m
|
||||
memory: 512Mi
|
||||
autoscaling:
|
||||
enabled: true
|
||||
minReplicas: 2
|
||||
maxReplicas: 4
|
||||
targetCPUUtilizationPercentage: 70
|
||||
podDisruptionBudget:
|
||||
enabled: true
|
||||
minAvailable: 1
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 1Gi
|
||||
email-adapter-service:
|
||||
module: services.email_adapter_service.app:app
|
||||
replicas: 2
|
||||
resources:
|
||||
requests:
|
||||
cpu: 250m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 1000m
|
||||
memory: 512Mi
|
||||
autoscaling:
|
||||
enabled: true
|
||||
minReplicas: 2
|
||||
maxReplicas: 4
|
||||
targetCPUUtilizationPercentage: 70
|
||||
podDisruptionBudget:
|
||||
enabled: true
|
||||
minAvailable: 1
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 1Gi
|
||||
kb-service:
|
||||
module: services.kb_service.app:app
|
||||
replicas: 2
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 750m
|
||||
memory: 512Mi
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 2
|
||||
maxReplicas: 2
|
||||
targetCPUUtilizationPercentage: 70
|
||||
podDisruptionBudget:
|
||||
enabled: true
|
||||
minAvailable: 1
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 1Gi
|
||||
reporting-service:
|
||||
module: services.reporting_service.app:app
|
||||
replicas: 2
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 750m
|
||||
memory: 512Mi
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 2
|
||||
maxReplicas: 2
|
||||
targetCPUUtilizationPercentage: 70
|
||||
podDisruptionBudget:
|
||||
enabled: true
|
||||
minAvailable: 1
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 1Gi
|
||||
supervisor-service:
|
||||
module: services.supervisor_service.app:app
|
||||
replicas: 2
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 750m
|
||||
memory: 512Mi
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 2
|
||||
maxReplicas: 2
|
||||
targetCPUUtilizationPercentage: 70
|
||||
podDisruptionBudget:
|
||||
enabled: true
|
||||
minAvailable: 1
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 1Gi
|
||||
api-gateway:
|
||||
module: gateway.app:app
|
||||
gateway: true
|
||||
replicas: 4
|
||||
resources:
|
||||
requests:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
limits:
|
||||
cpu: 1500m
|
||||
memory: 1Gi
|
||||
autoscaling:
|
||||
enabled: true
|
||||
minReplicas: 4
|
||||
maxReplicas: 8
|
||||
targetCPUUtilizationPercentage: 70
|
||||
podDisruptionBudget:
|
||||
enabled: true
|
||||
minAvailable: 1
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 1Gi
|
||||
Reference in New Issue
Block a user