From cba92711a12779f4351c73861145f76f40f7bd77 Mon Sep 17 00:00:00 2001 From: Daniel Fenert Date: Thu, 11 Sep 2025 15:54:00 +0200 Subject: [PATCH] Fix chart empty annotations in APIService Latest chart version adds empty (null) `annotations` to APIService object. This causes problem (constant diff) when metrics servers is deployed from ArgoCD using helm chart. What causes this: 1. helm template produces such yaml ```yaml --- apiVersion: apiregistration.k8s.io/v1 kind: APIService metadata: name: v1beta1.metrics.k8s.io labels: helm.sh/chart: metrics-server-3.13.0 app.kubernetes.io/name: metrics-server app.kubernetes.io/instance: test app.kubernetes.io/version: "0.8.0" app.kubernetes.io/managed-by: Helm spec: group: metrics.k8s.io groupPriorityMinimum: 100 insecureSkipTLSVerify: true service: name: test-metrics-server namespace: default port: 443 version: v1beta1 versionPriority: 100 ``` 1. After applying this yaml to Kubernetes, api server removes empty `annotations:` 1. ArgoCD sees diff and tries to apply again and cycle repeats. --- charts/metrics-server/templates/apiservice.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/metrics-server/templates/apiservice.yaml b/charts/metrics-server/templates/apiservice.yaml index d1f437042..d15fe7ea8 100644 --- a/charts/metrics-server/templates/apiservice.yaml +++ b/charts/metrics-server/templates/apiservice.yaml @@ -38,7 +38,7 @@ metadata: name: v1beta1.metrics.k8s.io labels: {{- include "metrics-server.labels" . | nindent 4 }} - {{- if or .Values.apiService.annotations .Values.tls.certManager.addInjectorAnnotations }} + {{- if or .Values.apiService.annotations (and .Values.tls.certManager.addInjectorAnnotations (eq .Values.tls.type "cert-manager")) }} annotations: {{- if and (eq .Values.tls.type "cert-manager") .Values.tls.certManager.addInjectorAnnotations }} cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "metrics-server.fullname" . }}