diff --git a/examples/operator/templates/deployment.yaml b/examples/operator/templates/deployment.yaml index 6df49480..84003366 100644 --- a/examples/operator/templates/deployment.yaml +++ b/examples/operator/templates/deployment.yaml @@ -53,9 +53,9 @@ spec: key: VAR1 name: {{ include "operator.fullname" . }}-secret-vars - name: VAR2 - value: {{ .Values.controllerManager.manager.var2 }} + value: {{ .Values.controllerManager.manager.env.var2 }} - name: VAR3_MY_ENV - value: {{ .Values.controllerManager.manager.var3MyEnv }} + value: {{ .Values.controllerManager.manager.env.var3MyEnv }} - name: VAR4 valueFrom: configMapKeyRef: @@ -74,6 +74,7 @@ spec: value: {{ .Values.kubernetesClusterDomain }} image: {{ .Values.controllerManager.manager.image.repository }}:{{ .Values.controllerManager.manager.image.tag | default .Chart.AppVersion }} + imagePullPolicy: {{ .Values.controllerManager.manager.imagePullPolicy }} name: manager resources: {{- toYaml .Values.controllerManager.manager.resources | nindent 10 }} securityContext: diff --git a/examples/operator/values.yaml b/examples/operator/values.yaml index 30ecb821..80956840 100644 --- a/examples/operator/values.yaml +++ b/examples/operator/values.yaml @@ -12,6 +12,7 @@ controllerManager: image: repository: controller tag: latest + imagePullPolicy: Always resources: limits: cpu: 100m diff --git a/pkg/processor/deployment/deployment.go b/pkg/processor/deployment/deployment.go index 266f5e1e..b463ba3e 100644 --- a/pkg/processor/deployment/deployment.go +++ b/pkg/processor/deployment/deployment.go @@ -47,7 +47,9 @@ const selectorTempl = `%[1]s {{- include "%[2]s.selectorLabels" . | nindent 6 }} %[3]s` -const envValue = "{{ .Values.%[1]s.%[2]s.%[3]s }}" +const imagePullPolicyTemplate = "{{ .Values.%[1]s.%[2]s.imagePullPolicy }}" +const envValue = "{{ .Values.%[1]s.%[2]s.%[3]s.%[4]s }}" + // New creates processor for k8s Deployment resource. func New() helmify.Processor { @@ -284,6 +286,14 @@ func processPodContainer(name string, appMeta helmify.AppMetadata, c corev1.Cont return c, errors.Wrap(err, "unable to set container resources value") } } + + if c.ImagePullPolicy != "" { + err = unstructured.SetNestedField(*values, string(c.ImagePullPolicy), name, containerName, "imagePullPolicy") + if err != nil { + return c, errors.Wrap(err, "unable to set container imagePullPolicy") + } + c.ImagePullPolicy = corev1.PullPolicy(fmt.Sprintf(imagePullPolicyTemplate, name, containerName)) + } return c, nil } @@ -306,7 +316,7 @@ func processEnv(name string, appMeta helmify.AppMetadata, c corev1.Container, va if err != nil { return c, errors.Wrap(err, "unable to set deployment value field") } - c.Env[i].Value = fmt.Sprintf(envValue, name, containerName, strcase.ToLowerCamel(strings.ToLower(c.Env[i].Name))) + c.Env[i].Value = fmt.Sprintf(envValue, name, containerName, "env", strcase.ToLowerCamel(strings.ToLower(c.Env[i].Name))) } return c, nil } diff --git a/test_data/k8s-operator-kustomize.output b/test_data/k8s-operator-kustomize.output index 40756564..dc3c1233 100644 --- a/test_data/k8s-operator-kustomize.output +++ b/test_data/k8s-operator-kustomize.output @@ -635,6 +635,7 @@ spec: resourceFieldRef: resource: limits.cpu image: controller:latest + imagePullPolicy: Always livenessProbe: httpGet: path: /healthz