79 lines
3.4 KiB
YAML
79 lines
3.4 KiB
YAML
{{- $values := (mustMergeOverwrite .Values.alloy (or .Values.agent dict)) -}}
|
|
{{- if and (or (eq .Values.controller.type "deployment") (eq .Values.controller.type "statefulset" )) .Values.controller.autoscaling.enabled }}
|
|
{{- if not (empty .Values.controller.autoscaling.targetMemoryUtilizationPercentage)}}
|
|
{{- $_ := $values.resources.requests | required ".Values.alloy.resources.requests is required when using autoscaling." -}}
|
|
{{- $_ := $values.resources.requests.memory | required ".Values.alloy.resources.requests.memory is required when using autoscaling based on memory utilization." -}}
|
|
{{- $_ := .Values.configReloader.resources.requests | required ".Values.configReloader.resources.requests is required when using autoscaling." -}}
|
|
{{- $_ := .Values.configReloader.resources.requests.memory | required ".Values.configReloader.resources.requests.memory is required when using autoscaling based on memory utilization." -}}
|
|
{{- end}}
|
|
{{- if not (empty .Values.controller.autoscaling.targetCPUUtilizationPercentage)}}
|
|
{{- $_ := $values.resources.requests | required ".Values.alloy.resources.requests is required when using autoscaling." -}}
|
|
{{- $_ := $values.resources.requests.cpu | required ".Values.alloy.resources.requests.cpu is required when using autoscaling based on cpu utilization." -}}
|
|
{{- $_ := .Values.configReloader.resources.requests | required ".Values.configReloader.resources.requests is required when using autoscaling." -}}
|
|
{{- $_ := .Values.configReloader.resources.requests.cpu | required ".Values.configReloader.resources.requests.cpu is required when using autoscaling based on cpu utilization." -}}
|
|
{{- end}}
|
|
apiVersion: autoscaling/v2
|
|
kind: HorizontalPodAutoscaler
|
|
metadata:
|
|
name: {{ include "alloy.fullname" . }}
|
|
labels:
|
|
{{- include "alloy.labels" . | nindent 4 }}
|
|
app.kubernetes.io/component: availability
|
|
spec:
|
|
scaleTargetRef:
|
|
apiVersion: apps/v1
|
|
kind: {{ .Values.controller.type }}
|
|
name: {{ include "alloy.fullname" . }}
|
|
{{- with .Values.controller.autoscaling }}
|
|
minReplicas: {{ .minReplicas }}
|
|
maxReplicas: {{ .maxReplicas }}
|
|
behavior:
|
|
{{- with .scaleDown }}
|
|
scaleDown:
|
|
{{- if .policies }}
|
|
policies:
|
|
{{- range .policies }}
|
|
- type: {{ .type }}
|
|
value: {{ .value }}
|
|
periodSeconds: {{ .periodSeconds }}
|
|
{{- end }}
|
|
selectPolicy: {{ .selectPolicy }}
|
|
{{- end }}
|
|
stabilizationWindowSeconds: {{ .stabilizationWindowSeconds }}
|
|
{{- end }}
|
|
{{- with .scaleUp }}
|
|
scaleUp:
|
|
{{- if .policies }}
|
|
policies:
|
|
{{- range .policies }}
|
|
- type: {{ .type }}
|
|
value: {{ .value }}
|
|
periodSeconds: {{ .periodSeconds }}
|
|
{{- end }}
|
|
selectPolicy: {{ .selectPolicy }}
|
|
{{- end }}
|
|
stabilizationWindowSeconds: {{ .stabilizationWindowSeconds }}
|
|
{{- end }}
|
|
metrics:
|
|
# Changing the order of the metrics will cause ArgoCD to go into a sync loop
|
|
# memory needs to be first.
|
|
# More info in: https://github.com/argoproj/argo-cd/issues/1079
|
|
{{- with .targetMemoryUtilizationPercentage }}
|
|
- type: Resource
|
|
resource:
|
|
name: memory
|
|
target:
|
|
type: Utilization
|
|
averageUtilization: {{ . }}
|
|
{{- end }}
|
|
{{- with .targetCPUUtilizationPercentage }}
|
|
- type: Resource
|
|
resource:
|
|
name: cpu
|
|
target:
|
|
type: Utilization
|
|
averageUtilization: {{ . }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end }}
|