chart/templates/worker/_hpa.yaml (44 lines of code) (raw):
# SPDX-License-Identifier: Apache-2.0
# Copyright 2022 The HuggingFace Authors.
{{- define "hpaWorker" -}}
{{- if .workerValues.autoscaling.enabled }}
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
labels: {{ include "labels.worker" (merge (dict "workerValues" .workerValues) $ ) | nindent 4 }}
name: "{{ include "name" . }}-worker-{{ .workerValues.deployName }}"
namespace: {{ .Release.Namespace }}
spec:
behavior:
scaleDown:
stabilizationWindowSeconds: 0
policies:
- type: Pods
value: 1
periodSeconds: 60
scaleUp:
stabilizationWindowSeconds: 0
policies:
- type: Pods
value: 1
periodSeconds: 60
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: "{{ include "name" . }}-worker-{{ .workerValues.deployName }}"
minReplicas: {{ .workerValues.autoscaling.minReplicas }}
maxReplicas: {{ .workerValues.autoscaling.maxReplicas }}
metrics:
{{- range $index, $target := .workerValues.autoscaling.targets }}
- type: External
external:
metric:
name: {{ $target.targetQueueName | quote }}
selector:
matchLabels:
worker_size: {{ $target.targetWorkerSize | quote }}
target:
value: {{ $target.targetQueueLength | int }}
type: Value
{{- end }}
{{- end }}
{{- end -}}