KEDA
목적
KEDA는 CPU 또는 RabbitMQ 큐 깊이를 기준으로 스케일링하는 Lumie 워크로드에 autoscaling을 제공합니다. 플랫폼 계 층은 KEDA operator를 설치하고, 개별 애플리케이션은 각자 ScaledObject 매니페스트를 소유합니다.
이 페이지는 autoscaling trigger, trigger auth, 큐 깊이 기반 스케일링 임계값을 변경하는 개발자를 위한 레퍼런스 문서입니다.
소스 경로
| 경로 | 역할 |
|---|---|
lumie-infra/platform/keda/argocd.yaml | KEDA용 Argo CD 애플리케이션 |
lumie-infra/platform/keda/helm-values.yaml | KEDA operator, metrics server, webhook 이미지와 리소스 |
lumie-infra/applications/lumie/backend/manifests/scaled-object.yaml | 백엔드 CPU autoscaling |
lumie-infra/applications/lumie/frontend/manifests/scaled-object.yaml | 프런트엔드 CPU autoscaling |
lumie-infra/applications/lumie/worker/grading-svc/manifests/{scaled-object.yaml,trigger-auth.yaml} | grading 큐 깊이 기반 스케일링과 공유 RabbitMQ trigger auth |
lumie-infra/applications/lumie/worker/report-svc/manifests/scaled-object.yaml | report 큐 깊이 기반 스케일링 |
퍼블릭 표면
| 표면 | 네임스페이스 | 비고 |
|---|---|---|
| KEDA operator | keda-system | ScaledObject와 TriggerAuthentication 리소스를 조정 |
| Metrics API server | keda-system | HPA에 외부 메트릭 제공 |
| Admission webhook | keda-system | KEDA 리소스 검증 및 변형 |
ScaledObject CR | 앱 네임스페이스 | 실제 autoscaling 계약을 정의 |
런타임 흐름
활성 ScaledObject
| 워크로드 | 네임스페이스 | 트리거 | 최소 | 최대 | 소스 |
|---|---|---|---|---|---|
lumie-backend | lumie-backend | CPU utilization 70 | 2 | 5 | applications/lumie/backend/manifests/scaled-object.yaml |
lumie-frontend | lumie-frontend | CPU utilization 70 | 2 | 5 | applications/lumie/frontend/manifests/scaled-object.yaml |
grading-svc | lumie-worker | RabbitMQ queue grading.omr-request, queue length 20 | 4 | 8 | applications/lumie/worker/grading-svc/manifests/scaled-object.yaml |
report-svc | lumie-worker | RabbitMQ queue report.generation-request, queue length 40 | 4 | 5 | applications/lumie/worker/report-svc/manifests/scaled-object.yaml |
백엔드 ScaledObject는 JVM warmup 스파이크가 즉시 최대 replica로 치솟지 않도록 명시적인 scale-up stabilization도 정의합니다.
큐 트리거 인증
검사한 Git 관리 auth 리소스는 다음과 같습니다.
kind: TriggerAuthentication
metadata:
name: rabbitmq-auth
spec:
secretTargetRef:
- parameter: host
name: rabbitmq-connection
key: host
2026년 6월 14일에 확인한 라이브 클러스터에서는 다음을 확인했습니다.
rabbitmq-auth가lumie-worker네임스페이스에 존재함- 그 status에
grading-svc와report-svc가 모두 소비자로 표시됨 - 참조된 Secret
rabbitmq-connection도lumie-worker에 존재함
소유권 경계
| 책임 | 소유자 |
|---|---|
| KEDA 컨트롤러 설치 | platform/keda/** |
| 워크로드 별 스케일링 임계값 | 각 워크로드의 ScaledObject 매니페스트 |
| 큐 트리거가 사용하는 RabbitMQ host 자격 증명 | lumie-worker의 공유 rabbitmq-auth와 rabbitmq-connection Secret |
계약 드리프트
검사한 저장소와 라이브 상태는 완전히 일치하지 않습니다.
| 소스 | 주장 |
|---|---|
applications/lumie/worker/grading-svc/kustomization.yaml | manifests/trigger-auth.yaml 포함 |
applications/lumie/worker/report-svc/kustomization.yaml | report-svc가 rabbitmq-auth를 참조하지만 자체 TriggerAuthentication은 포함하지 않음 |
| 2026년 6월 14일 라이브 클러스터 | rabbitmq-auth.status.scaledobjects에 grading-svc와 report-svc가 모두 포함됨 |
| 검사한 저장소 트리 | lumie-worker/rabbitmq-connection Secret의 Git 관리 소스를 찾지 못함 |
현재는 rabbitmq-auth를 공유 큐 스케일링 의존성으로 취급하고, 소스가 추가되거나 문서화되기 전까지 rabbitmq-connection Secret이 lumie-infra에 완전히 선언되어 있다고 가정하지 마세요.
검증
cd lumie-infra
rg -n "kind: ScaledObject|TriggerAuthentication|rabbitmq-auth|queueName|metricType: Utilization" \
platform/keda applications/lumie
kubectl get scaledobject,triggerauthentication -A
kubectl get triggerauthentication rabbitmq-auth -n lumie-worker -o yaml