{{- if and .Values.keda.enabled (not .Values.autoscaling.enabled) }} apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: {{ include "litellm.fullname" . }} labels: {{- include "litellm.labels" . | nindent 4 }} {{- if .Values.keda.scaledObject.annotations }} annotations: {{ toYaml .Values.keda.scaledObject.annotations | nindent 4 }} {{- end }} spec: scaleTargetRef: name: {{ include "litellm.fullname" . }} pollingInterval: {{ .Values.keda.pollingInterval }} cooldownPeriod: {{ .Values.keda.cooldownPeriod }} minReplicaCount: {{ .Values.keda.minReplicas }} maxReplicaCount: {{ .Values.keda.maxReplicas }} {{- with .Values.keda.fallback }} fallback: failureThreshold: {{ .failureThreshold | default 3 }} replicas: {{ .replicas | default $.Values.keda.maxReplicas }} {{- end }} triggers: {{- with .Values.keda.triggers }} {{- toYaml . | nindent 2 }} {{- end }} {{- $prom := .Values.keda.prometheus }} {{- if or $prom.requestsPerSecond $prom.tokensPerSecond }} {{- if not $prom.serverAddress }} {{- fail "keda.prometheus.serverAddress is required when keda.prometheus.requestsPerSecond or tokensPerSecond is set" }} {{- end }} {{- $selector := printf "namespace=%q,job=%q" .Release.Namespace (printf "%s%s" (include "litellm.fullname" .) (ternary "-metrics" "" .Values.metricsServer.enabled)) }} {{- with $prom.requestsPerSecond }} - type: prometheus metadata: serverAddress: {{ $prom.serverAddress | quote }} threshold: {{ toJson . | trimAll "\"" | quote }} query: {{ printf "sum(rate(litellm_proxy_total_requests_metric_total{%s}[1m]))" $selector | quote }} {{- end }} {{- with $prom.tokensPerSecond }} - type: prometheus metadata: serverAddress: {{ $prom.serverAddress | quote }} threshold: {{ toJson . | trimAll "\"" | quote }} query: {{ printf "sum(rate(litellm_total_tokens_metric_total{%s}[1m]))" $selector | quote }} {{- end }} {{- end }} advanced: restoreToOriginalReplicaCount: {{ .Values.keda.restoreToOriginalReplicaCount }} {{- if .Values.keda.behavior }} horizontalPodAutoscalerConfig: behavior: {{- with .Values.keda.behavior }} {{- toYaml . | nindent 8 }} {{- end }} {{- end }} {{- end }}