KEDA values#
Values under hw-keda configure KEDA and its HTTP add-on, the autoscaler of Standard-mode model deployments: it scales them on CPU and memory, on the requests at the gateway and on the vLLM engine metrics, and scales them to zero when idle. The subchart is installed when hopsworks.variables.kube_keda_installed is true (the default), which also tells the Hopsworks backend to offer KEDA-backed scaling; without it, Standard-mode deployments fall back to KServe's own Horizontal Pod Autoscaler on CPU and memory. See How To Configure Scaling For A Deployment for what deployments can do with it.
Generated from the Hopsworks Helm chart 5.2.1 (Hopsworks 5.2.1).
Deployed according to the first of these values that is set: hopsworks.variables.kube_keda_installed, global._hopsworks.full_platform.
Upstream charts
- Values under
hw-keda.kedago tokeda2.21.0 fromhttps://kedacore.github.io/charts.
Only the values Hopsworks sets under hw-keda.keda are listed on this page. Any other value of the chart can be set there too; the link opens its documentation for the version Hopsworks pins.
General#
Defaults as YAML
hw-keda:
hopsworkslib: {}
keda:
certificates:
autoGenerated: true
secretName: kedaorg-certs
crds:
install: false
image:
keda:
registry: docker.hops.works/ghcr.io
repository: kedacore/keda
metricsApiServer:
registry: docker.hops.works/ghcr.io
repository: kedacore/keda-metrics-apiserver
pullPolicy: IfNotPresent
webhooks:
registry: docker.hops.works/ghcr.io
repository: kedacore/keda-admission-webhooks
networkPolicy:
enabled: false
podAnnotations:
keda:
prometheus.io/path: /metrics
prometheus.io/port: '8080'
prometheus.io/scrape: 'true'
prometheus:
operator:
enabled: true
port: 8080
watchNamespace: ''
keda-add-ons-http:
crds:
install: false
images:
interceptor: docker.hops.works/ghcr.io/kedacore/http-add-on-interceptor
operator: docker.hops.works/ghcr.io/kedacore/http-add-on-operator
scaler: docker.hops.works/ghcr.io/kedacore/http-add-on-scaler
interceptor:
pullPolicy: IfNotPresent
readinessTimeout: 600s
replicas:
max: 10
min: 1
requestTimeout: 600s
resources:
limits:
cpu: '1'
memory: 256Mi
requests:
cpu: 250m
memory: 64Mi
responseHeaderTimeout: 600s
operator:
pullPolicy: IfNotPresent
podSecurityContext:
fsGroup: 1000
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
supplementalGroups:
- 1000
scaler:
pullPolicy: IfNotPresent
replicas: 1
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
hw-keda#- Type
object, default{}. override hw-keda values hw-keda.hopsworkslib#- Type
object, default{}. override hopsworkslib values hw-keda.keda#-
Type
object, passed to thekeda2.21.0 chart, whose other values are documented there. override keda values. Everything not restated here is the upstream default: https://github.com/kedacore/charts/blob/main/keda/values.yamlDefault
certificates: autoGenerated: true secretName: kedaorg-certs crds: install: false image: keda: registry: docker.hops.works/ghcr.io repository: kedacore/keda metricsApiServer: registry: docker.hops.works/ghcr.io repository: kedacore/keda-metrics-apiserver pullPolicy: IfNotPresent webhooks: registry: docker.hops.works/ghcr.io repository: kedacore/keda-admission-webhooks networkPolicy: enabled: false podAnnotations: keda: prometheus.io/path: /metrics prometheus.io/port: '8080' prometheus.io/scrape: 'true' prometheus: operator: enabled: true port: 8080 watchNamespace: '' hw-keda.keda-add-ons-http#-
Type
object. override keda-add-ons-http values (the KEDA HTTP add-on, HWORKS-3113, always installed with KEDA). Everything not restated here is the upstream default: https://github.com/kedacore/charts/blob/main/http-add-on/values.yamlDefault
crds: install: false images: interceptor: docker.hops.works/ghcr.io/kedacore/http-add-on-interceptor operator: docker.hops.works/ghcr.io/kedacore/http-add-on-operator scaler: docker.hops.works/ghcr.io/kedacore/http-add-on-scaler interceptor: pullPolicy: IfNotPresent readinessTimeout: 600s replicas: max: 10 min: 1 requestTimeout: 600s resources: limits: cpu: '1' memory: 256Mi requests: cpu: 250m memory: 64Mi responseHeaderTimeout: 600s operator: pullPolicy: IfNotPresent podSecurityContext: fsGroup: 1000 runAsNonRoot: true seccompProfile: type: RuntimeDefault supplementalGroups: - 1000 scaler: pullPolicy: IfNotPresent replicas: 1 securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsNonRoot: true seccompProfile: type: RuntimeDefault
cleanupOnUninstall#
Defaults as YAML
hw-keda.cleanupOnUninstall#-
Type
object. uninstall cleanup of what KEDA leaves behind that Helm never tracked. The keda.sh custom resources KServe and Hopsworks created in the project namespaces carry a finalizer only the operator can clear, and Helm deletes the operator before the CRDs, so without this hook every keda.sh CRD stays Terminating, the next install fails on it, and an uninstall that waits for deletion (helm's wait flag, Argo CD) never finishes. It runs pre-delete (deleting the custom resources while the operators can still finalize them) and post-delete (the operator's runtime TLS Secret, leftovers). hw-keda.cleanupOnUninstall.deleteCrds#- Type
bool, defaulttrue. also delete the keda.sh, http.keda.sh and eventing.keda.sh CRDs in the post-delete pass. They ship in crds/, which Helm never deletes, so without this an uninstall leaves the CRD definitions on the cluster. Only the definitions: both passes delete every object of those kinds first, whatever this is set to, since objects left under a finalizer with no operator block the CRDs. Off to keep the definitions for a KEDA installed by other means next; the Hopsworks backend recreates its ScaledObjects when a deployment starts hw-keda.cleanupOnUninstall.enabled#- Type
bool, defaulttrue. enable the KEDA cleanup hook, which runs before the release's resources are deleted (deleting the keda.sh custom resources while their operators can still finalize them, so the CRDs are not left Terminating and an uninstall that waits for deletion, with helm's wait flag or under Argo CD, finishes) and again after (the operator's runtime TLS Secret, anything created in between) hw-keda.cleanupOnUninstall.finalizeTimeoutSeconds#- Type
int, default120. seconds the pre-delete pass waits for the operators to finalize the deleted custom resources before clearing the finalizers itself hw-keda.cleanupOnUninstall.imagePullPolicy#- Type
string, default"IfNotPresent". pull policy of the toolbox image the cleanup Job runs; global._hopsworks.imagePullPolicy takes precedence when set hw-keda.cleanupOnUninstall.nodeSelector#- Type
object, default{}. nodeSelector of the cleanup Job; falls back to global._hopsworks.nodeSelector hw-keda.cleanupOnUninstall.resources#-
Type
object. resources of the cleanup Job container. kubectl fetches each shipped CRD by name (the biggest, scaledjobs.keda.sh, is 668 KB) and lists the objects under it, never the whole CRD list hw-keda.cleanupOnUninstall.tolerations#- Type
list, default[]. tolerations of the cleanup Job; fall back to global._hopsworks.tolerations hw-keda.cleanupOnUninstall.ttlSecondsAfterFinished#- Type
string, defaultnil. TTL in seconds for the cleanup Job. Overrides the global default.
crdUpgradeJob#
Defaults as YAML
hw-keda.crdUpgradeJob#-
Type
object. the pre-upgrade hook that keeps the KEDA and HTTP add-on CRDs current. They ship in crds/ rather than as templates (the ScaledJob CRD alone is 670 KB, which would put the Helm release secret over its 1 MiB limit), and Helm only creates crds/ on install and never touches it on upgrade, so this Job applies the same CRD files server-side on every upgrade, creating them on a release upgraded from a chart without this subchart and patching them on a KEDA bump. hw-keda.crdUpgradeJob.enabled#- Type
bool, defaulttrue. apply the shipped CRDs on upgrade hw-keda.crdUpgradeJob.imagePullPolicy#- Type
string, default"IfNotPresent". pull policy of the toolbox image the Job runs; global._hopsworks.imagePullPolicy takes precedence when set hw-keda.crdUpgradeJob.nodeSelector#- Type
object, default{}. nodeSelector of the Job; falls back to global._hopsworks.nodeSelector hw-keda.crdUpgradeJob.resources#-
Type
object. resources of the Job container hw-keda.crdUpgradeJob.tolerations#- Type
list, default[]. tolerations of the Job; fall back to global._hopsworks.tolerations hw-keda.crdUpgradeJob.ttlSecondsAfterFinished#- Type
string, defaultnil. TTL in seconds for the CRD upgrade Job. Overrides the global default.