From 1d48226873b90b112aa863329f5d0af17fee753b Mon Sep 17 00:00:00 2001 From: Zhiwei Yin Date: Tue, 17 Dec 2024 17:23:31 +0800 Subject: [PATCH] override images in helm chart (#771) Signed-off-by: Zhiwei Yin --- .../cluster-manager/templates/_helpers.tpl | 51 +++++++++++++++++-- .../templates/cluster_manager.yaml | 8 +-- .../cluster-manager/templates/operator.yaml | 2 +- .../chart/cluster-manager/values.yaml | 10 ++++ .../chart/klusterlet/templates/_helpers.tpl | 31 +++++++++-- .../klusterlet/templates/klusterlet.yaml | 6 +-- .../chart/klusterlet/templates/operator.yaml | 2 +- .../klusterlet/chart/klusterlet/values.yaml | 8 +++ 8 files changed, 99 insertions(+), 19 deletions(-) diff --git a/deploy/cluster-manager/chart/cluster-manager/templates/_helpers.tpl b/deploy/cluster-manager/chart/cluster-manager/templates/_helpers.tpl index 7644ffc8c..5063d9781 100644 --- a/deploy/cluster-manager/chart/cluster-manager/templates/_helpers.tpl +++ b/deploy/cluster-manager/chart/cluster-manager/templates/_helpers.tpl @@ -13,11 +13,52 @@ -{{/* Define the image tag. */}} -{{- define "imageTag" }} -{{- if .Values.images.tag }} -{{- printf "%s" .Values.images.tag }} +{{- define "registrationImage" }} +{{- if .Values.images.overrides.registrationImage }} +{{- printf "%s" .Values.images.overrides.registrationImage }} +{{- else if .Values.images.tag }} +{{- printf "%s/registration:%s" .Values.images.registry .Values.images.tag }} {{- else }} -{{- printf "%s" .Chart.AppVersion }} +{{- printf "%s/registration:%s" .Values.images.registry .Chart.AppVersion }} +{{- end }} +{{- end }} + +{{- define "workImage" }} +{{- if .Values.images.overrides.workImage }} +{{- printf "%s" .Values.images.overrides.workImage }} +{{- else if .Values.images.tag }} +{{- printf "%s/work:%s" .Values.images.registry .Values.images.tag }} +{{- else }} +{{- printf "%s/work:%s" .Values.images.registry .Chart.AppVersion }} +{{- end }} +{{- end }} + +{{- define "addOnManagerImage" }} +{{- if .Values.images.overrides.addOnManagerImage }} +{{- printf "%s" .Values.images.overrides.addOnManagerImage }} +{{- else if .Values.images.tag }} +{{- printf "%s/addon-manager:%s" .Values.images.registry .Values.images.tag }} +{{- else }} +{{- printf "%s/addon-manager:%s" .Values.images.registry .Chart.AppVersion }} +{{- end }} +{{- end }} + +{{- define "placementImage" }} +{{- if .Values.images.overrides.placementImage }} +{{- printf "%s" .Values.images.overrides.placementImage }} +{{- else if .Values.images.tag }} +{{- printf "%s/placement:%s" .Values.images.registry .Values.images.tag }} +{{- else }} +{{- printf "%s/placement:%s" .Values.images.registry .Chart.AppVersion }} +{{- end }} +{{- end }} + +{{- define "operatorImage" }} +{{- if .Values.images.overrides.operatorImage }} +{{- printf "%s" .Values.images.overrides.operatorImage }} +{{- else if .Values.images.tag }} +{{- printf "%s/registration-operator:%s" .Values.images.registry .Values.images.tag }} +{{- else }} +{{- printf "%s/registration-operator:%s" .Values.images.registry .Chart.AppVersion }} {{- end }} {{- end }} diff --git a/deploy/cluster-manager/chart/cluster-manager/templates/cluster_manager.yaml b/deploy/cluster-manager/chart/cluster-manager/templates/cluster_manager.yaml index 39d96b9be..7f330c977 100644 --- a/deploy/cluster-manager/chart/cluster-manager/templates/cluster_manager.yaml +++ b/deploy/cluster-manager/chart/cluster-manager/templates/cluster_manager.yaml @@ -4,10 +4,10 @@ kind: ClusterManager metadata: name: cluster-manager spec: - registrationImagePullSpec: {{ .Values.images.registry }}/registration:{{ template "imageTag" . }} - workImagePullSpec: {{ .Values.images.registry }}/work:{{ template "imageTag" . }} - placementImagePullSpec: {{ .Values.images.registry }}/placement:{{ template "imageTag" . }} - addOnManagerImagePullSpec: {{ .Values.images.registry }}/addon-manager:{{ template "imageTag" . }} + registrationImagePullSpec: "{{ template "registrationImage" . }}" + workImagePullSpec: "{{ template "workImage" . }}" + placementImagePullSpec: "{{ template "placementImage" . }}" + addOnManagerImagePullSpec: "{{ template "addOnManagerImage" . }}" deployOption: mode: {{ .Values.clusterManager.mode }} {{- with .Values.clusterManager.resourceRequirement }} diff --git a/deploy/cluster-manager/chart/cluster-manager/templates/operator.yaml b/deploy/cluster-manager/chart/cluster-manager/templates/operator.yaml index c360fc18b..5d6e55de9 100644 --- a/deploy/cluster-manager/chart/cluster-manager/templates/operator.yaml +++ b/deploy/cluster-manager/chart/cluster-manager/templates/operator.yaml @@ -32,7 +32,7 @@ spec: serviceAccountName: cluster-manager containers: - name: registration-operator - image: "{{ .Values.images.registry }}/registration-operator:{{ template "imageTag" . }}" + image: "{{ template "operatorImage" . }}" imagePullPolicy: {{ .Values.images.imagePullPolicy }} args: - "/registration-operator" diff --git a/deploy/cluster-manager/chart/cluster-manager/values.yaml b/deploy/cluster-manager/chart/cluster-manager/values.yaml index b4c855503..0a9388420 100644 --- a/deploy/cluster-manager/chart/cluster-manager/values.yaml +++ b/deploy/cluster-manager/chart/cluster-manager/values.yaml @@ -4,6 +4,14 @@ replicaCount: 3 # image configurations for all images used in operator deployment and clusterManager CR. images: + # the overrides can replace the corresponding image if not empty. + overrides: + registrationImage: "" + workImage: "" + placementImage: "" + addOnManagerImage: "" + operatorImage: "" + # registry and tag work on all images, but the image will be replaced by overrides if the image in overrides is not empty. # The registry name must NOT contain a trailing slash. registry: quay.io/open-cluster-management # The image tag is the appVersion by default, can be replaced by this version. @@ -11,6 +19,8 @@ images: imagePullPolicy: IfNotPresent # The image pull secret name is open-cluster-management-image-pull-credentials. # Please set the userName/password or the dockerConfigJson if you use a private image registry. + # The registry will be set in the generated credential if you set userName/password. + # Suggest to use dockerConfigJson if you set overrides here. # The image pull secret is fixed into the serviceAccount, you can also set # `createImageCredentials` to `false` and create the pull secret manually. imageCredentials: diff --git a/deploy/klusterlet/chart/klusterlet/templates/_helpers.tpl b/deploy/klusterlet/chart/klusterlet/templates/_helpers.tpl index d402a8e46..29959e66e 100644 --- a/deploy/klusterlet/chart/klusterlet/templates/_helpers.tpl +++ b/deploy/klusterlet/chart/klusterlet/templates/_helpers.tpl @@ -14,11 +14,32 @@ Create secret to access docker registry {{- end }} {{- end }} -{{/* Define the image tag. */}} -{{- define "imageTag" }} -{{- if .Values.images.tag }} -{{- printf "%s" .Values.images.tag }} +{{- define "registrationImage" }} +{{- if .Values.images.overrides.registrationImage }} +{{- printf "%s" .Values.images.overrides.registrationImage }} +{{- else if .Values.images.tag }} +{{- printf "%s/registration:%s" .Values.images.registry .Values.images.tag }} {{- else }} -{{- printf "%s" .Chart.AppVersion }} +{{- printf "%s/registration:%s" .Values.images.registry .Chart.AppVersion }} +{{- end }} +{{- end }} + +{{- define "workImage" }} +{{- if .Values.images.overrides.workImage }} +{{- printf "%s" .Values.images.overrides.workImage }} +{{- else if .Values.images.tag }} +{{- printf "%s/work:%s" .Values.images.registry .Values.images.tag }} +{{- else }} +{{- printf "%s/work:%s" .Values.images.registry .Chart.AppVersion }} +{{- end }} +{{- end }} + +{{- define "operatorImage" }} +{{- if .Values.images.overrides.operatorImage }} +{{- printf "%s" .Values.images.overrides.operatorImage }} +{{- else if .Values.images.tag }} +{{- printf "%s/registration-operator:%s" .Values.images.registry .Values.images.tag }} +{{- else }} +{{- printf "%s/registration-operator:%s" .Values.images.registry .Chart.AppVersion }} {{- end }} {{- end }} diff --git a/deploy/klusterlet/chart/klusterlet/templates/klusterlet.yaml b/deploy/klusterlet/chart/klusterlet/templates/klusterlet.yaml index 3367be46b..d0b97aa88 100644 --- a/deploy/klusterlet/chart/klusterlet/templates/klusterlet.yaml +++ b/deploy/klusterlet/chart/klusterlet/templates/klusterlet.yaml @@ -10,9 +10,9 @@ metadata: spec: deployOption: mode: {{ .Values.klusterlet.mode | default "Singleton" }} - registrationImagePullSpec: "{{ .Values.images.registry }}/registration:{{ template "imageTag" . }}" - workImagePullSpec: "{{ .Values.images.registry }}/work:{{ template "imageTag" . }}" - imagePullSpec: "{{ .Values.images.registry }}/registration-operator:{{ template "imageTag" . }}" + registrationImagePullSpec: "{{ template "registrationImage" . }}" + workImagePullSpec: "{{ template "workImage" . }}" + imagePullSpec: "{{ template "operatorImage" . }}" clusterName: {{ .Values.klusterlet.clusterName }} {{- if or ( eq .Values.klusterlet.mode "Hosted") (eq .Values.klusterlet.mode "SingletonHosted") }} namespace: "open-cluster-management-{{ .Values.klusterlet.clusterName }}" diff --git a/deploy/klusterlet/chart/klusterlet/templates/operator.yaml b/deploy/klusterlet/chart/klusterlet/templates/operator.yaml index 15b724d9e..6301f4586 100644 --- a/deploy/klusterlet/chart/klusterlet/templates/operator.yaml +++ b/deploy/klusterlet/chart/klusterlet/templates/operator.yaml @@ -35,7 +35,7 @@ spec: {{- toYaml .Values.podSecurityContext | nindent 8 }} containers: - name: klusterlet - image: "{{ .Values.images.registry }}/registration-operator:{{ template "imageTag" . }}" + image: "{{ template "operatorImage" . }}" imagePullPolicy: {{ .Values.images.imagePullPolicy }} args: - "/registration-operator" diff --git a/deploy/klusterlet/chart/klusterlet/values.yaml b/deploy/klusterlet/chart/klusterlet/values.yaml index eb3f368fd..a4dab739b 100644 --- a/deploy/klusterlet/chart/klusterlet/values.yaml +++ b/deploy/klusterlet/chart/klusterlet/values.yaml @@ -3,6 +3,12 @@ replicaCount: 3 # image configurations for all images used in operator deployment and klusterlet CR. images: + # the overrides can replace the corresponding image if not empty. + overrides: + registrationImage: "" + workImage: "" + operatorImage: "" + # registry and tag work on all images, but the image will be replaced by overrides if the image in overrides is not empty. # The registry name must NOT contain a trailing slash. registry: quay.io/open-cluster-management # The image tag is the appVersion by default, can be replaced by this version. @@ -10,6 +16,8 @@ images: imagePullPolicy: IfNotPresent # The image pull secret name is open-cluster-management-image-pull-credentials. # Please set the userName/password or the dockerConfigJson if you use a private image registry. + # The registry will be set in the generated credential if you set userName/password. + # Suggest to use dockerConfigJson if you set overrides here. # The image pull secret is fixed into the serviceAccount, you can also set # `createImageCredentials` to `false` and create the pull secret manually. imageCredentials: