helm을 사용하여 ConfigMap을 배포하려고 할 때, 전달한 변수의 값에 따라 동일한 리소스를 여러 개 만들고 싶은 케이스가 있다. 예를 들면여러 네임스페이스에 걸쳐서 도커 이미지를 받을 수 있는 시크릿을 배포하려고 할 때가 그렇다. 시크릿의 내용은 모두 동일하지만 리소스의 metadata.namespace만 달라지는 경우를 말한다.

secret:
  dockerConfigJson: ABCD...
  namespaces:
  - service
  - service-test
  - service-qa

이런 형태의 values.yaml 있다면 이를 다음과 같은 형태의 차트로 작성하여 여러 네임스페이스에 배포할 수 있다.

{{- $top := . -}}
{{- range .Values.secret.namespaces }}
---
apiVersion: v1
kind: Secret
type: kubernetes.io/dockerconfigjson
metadata:
  name: private-registry-secret
  namespace: {{ . }}
data:
  .dockerconfigjson: {{ $top.Values.secret.dockerConfigJson }}
{{- end }}

루프야 당연한 거고 여기서 중요한 건 ---를 통해 매 루프마다 yaml의 끝을 알려야 한다는 것이다.