apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: forgejo-runner-scaler namespace: forgejo-runners spec: scaleTargetRef: apiVersion: apps/v1 kind: StatefulSet name: forgejo-runner minReplicaCount: 1 # keep at least 1 runner registered maxReplicaCount: 100 # tune based on cluster capacity, not node count pollingInterval: 15 # seconds between KEDA polls cooldownPeriod: 60 # seconds before scaling down after jobs clear triggers: - type: metrics-api metadata: # 1 replica per pending job (capped at maxReplicaCount) targetValue: "1" url: "http://forgejo-metrics-exporter.forgejo-runners.svc.cluster.local:8080" valueLocation: "value"