From ae4ef6e992c9a1c57e22e4d83c448ea06e969262 Mon Sep 17 00:00:00 2001 From: Jerome Meyer Date: Thu, 11 Jan 2024 05:19:41 -0500 Subject: [PATCH] Update HorizontalPodAutoscaler API to autoscaling/v2 (#153) --- .../templates/hpa.yaml | 20 ++++++++++------- .../charts/spire-server/templates/hpa.yaml | 22 +++++++++++-------- charts/spire/templates/_spire-lib.tpl | 14 ++++++++++++ 3 files changed, 39 insertions(+), 17 deletions(-) diff --git a/charts/spire/charts/spiffe-oidc-discovery-provider/templates/hpa.yaml b/charts/spire/charts/spiffe-oidc-discovery-provider/templates/hpa.yaml index fcacb3f..0a6dfa3 100644 --- a/charts/spire/charts/spiffe-oidc-discovery-provider/templates/hpa.yaml +++ b/charts/spire/charts/spiffe-oidc-discovery-provider/templates/hpa.yaml @@ -1,5 +1,5 @@ {{- if .Values.autoscaling.enabled }} -apiVersion: autoscaling/v2beta1 +apiVersion: {{ include "spire-lib.autoscalingVersion" . }} kind: HorizontalPodAutoscaler metadata: name: {{ include "spiffe-oidc-discovery-provider.fullname" . }} @@ -14,16 +14,20 @@ spec: minReplicas: {{ .Values.autoscaling.minReplicas }} maxReplicas: {{ .Values.autoscaling.maxReplicas }} metrics: - {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} - - type: Resource - resource: - name: cpu - targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} - {{- end }} {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} - type: Resource resource: name: memory - targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} {{- end }} {{- end }} diff --git a/charts/spire/charts/spire-server/templates/hpa.yaml b/charts/spire/charts/spire-server/templates/hpa.yaml index 921abf6..4c1c41c 100644 --- a/charts/spire/charts/spire-server/templates/hpa.yaml +++ b/charts/spire/charts/spire-server/templates/hpa.yaml @@ -1,5 +1,5 @@ {{- if .Values.autoscaling.enabled }} -apiVersion: autoscaling/v2beta1 +apiVersion: {{ include "spire-lib.autoscalingVersion" . }} kind: HorizontalPodAutoscaler metadata: name: {{ include "spire-server.fullname" . }} @@ -9,7 +9,7 @@ metadata: spec: scaleTargetRef: apiVersion: apps/v1 - kind: Deployment + kind: StatefulSet name: {{ include "spire-server.fullname" . }} minReplicas: {{ .Values.autoscaling.minReplicas }} {{- if and (eq .Values.dataStore.sql.databaseType "sqlite3") .Values.autoscaling.enabled (gt (int .Values.autoscaling.maxReplicas) 1) }} @@ -17,16 +17,20 @@ spec: {{- end }} maxReplicas: {{ .Values.autoscaling.maxReplicas }} metrics: - {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} - - type: Resource - resource: - name: cpu - targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} - {{- end }} {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} - type: Resource resource: name: memory - targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} {{- end }} {{- end }} diff --git a/charts/spire/templates/_spire-lib.tpl b/charts/spire/templates/_spire-lib.tpl index 71c2ad9..614e05e 100644 --- a/charts/spire/templates/_spire-lib.tpl +++ b/charts/spire/templates/_spire-lib.tpl @@ -318,3 +318,17 @@ priorityClassName: {{ .Values.priorityClassName }} priorityClassName: system-cluster-critical {{- end }} {{- end }} + +{{/* +Use autoscaling/v2 (Kubernetes 1.23 and newer) or autoscaling/v2beta2 (Kubernetes 1.12-1.25) based on cluster capabilities. +Anything lower has an incompatible API. +*/}} +{{- define "spire-lib.autoscalingVersion" -}} +{{- if (.Capabilities.APIVersions.Has "autoscaling/v2") }} +{{- print "autoscaling/v2" }} +{{- else if (.Capabilities.APIVersions.Has "autoscaling/v2beta2") }} +{{- print "autoscaling/v2beta2" }} +{{- else }} +{{- fail "Unsupported autoscaling API version" }} +{{- end }} +{{- end }}