-
[Helm] 가이드 - Functions와 Pipelines공부/쿠버네티스&헬름 2025. 3. 9. 20:57
.Values
객체에서 문자열을 템플릿에 삽입할 때 이러한 문자열을 따옴표로 묶어야 합니다. 템플릿 지시문에서quote
함수를 호출하여 이를 수행할 수 있습니다.apiVersion: v1 kind: ConfigMap metadata: name: {{ .Release.Name }}-configmap data: myvalue: "Hello World" drink: {{ quote .Values.favorite.drink }} food: "{{ quote .Values.favorite.food }}" water: "{{ .Values.favorite.water }}"
위와 같이 진행한다면 “drink” , “food”, water 와 같이 출력됩니다.
파이프라인
템플릿 언어의 강력한 기능 중 하나는 파이프라인 개념입니다. UNIX의 개념을 가져온 파이프라인은 일련의 템플릿 명령을 함께 연결하여 일련의 변환을 간결하게 표현하는 도구입니다. 다시 말해, 파이프라인은 여러 작업을 순차적으로 효율적으로 수행하는 방법입니다. 위의 예시를 파이프라인을 사용하여 다시 작성해 보겠습니다.
apiVersion: v1 kind: ConfigMap metadata: name: {{ .Release.Name }}-configmap data: myvalue: "Hello World" drink: {{ .Values.favorite.drink | quote }} food: {{ .Values.favorite.food | quote }}
이 예시에서는
quote ARGUMENT
를 호출하는 대신 순서를 반대로 했습니다. 파이프라인(|)을 사용하여 인수를 함수에 보냅니다. 파이프라인을 사용하면 여러 함수를 함께 연결할 수 있습니다.apiVersion: v1 kind: ConfigMap metadata: name: {{ .Release.Name }}-configmap data: myvalue: "Hello World" drink: {{ .Values.favorite.drink | quote }} food: {{ .Values.favorite.food | upper | quote }}
순서를 반대로 하는 것은 템플릿에서 흔히 사용되는 방식입니다.
quote .val
보다.val | quote
를 더 자주 보게 되지만 두 방식 모두 괜찮습니다.위의 drink 예제를 수정하여 두 개의 인수를 취하는 함수로 설명할 수 있습니다.
apiVersion: v1 kind: ConfigMap metadata: name: {{ .Release.Name }}-configmap data: myvalue: "Hello World" drink: {{ .Values.favorite.drink | repeat 5 | quote }} food: {{ .Values.favorite.food | upper | quote }}
repeat
함수는 주어진 문자열을 주어진 횟수만큼 출력합니다.# Source: mychart/templates/configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: melting-porcup-configmap data: myvalue: "Hello World" drink: "coffeecoffeecoffeecoffeecoffee" food: "PIZZA"
default 사용
템플릿에서 자주 사용되는 함수 중 하나는
default
함수입니다(default DEFAULT_VALUE GIVEN_VALUE
). 이 함수를 사용하면 값이 생략된 경우 템플릿 내부에 기본값을 지정할 수 있습니다. 위 음료 예제를 수정하여 사용해 보겠습니다.drink: {{ .Values.favorite.drink | default "tea" | quote }}
values.yaml에서 다음과 같이 drink 값을 제거해 봅니다.
favorite: #drink: coffee food: pizza
이 차트를 실행하면 다음과 같은 yaml이 실행됩니다.
# Source: mychart/templates/configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: fair-worm-configmap data: myvalue: "Hello World" drink: "tea" food: "PIZZA"
실제 차트에서는 모든 정적 기본값이
values.yaml
에 있어야 하며default
명령어를 사용하여 반복해서는 안 됩니다(그렇지 않으면 중복됩니다). 그러나default
명령어는values.yaml
내에서 선언할 수 없는 계산된 값에 적합합니다.drink: {{ .Values.favorite.drink | default (printf "%s-tea" (include "fullname" .)) }}
어떤 경우에는
default
보다if
조건문이 더 적합할 수 있습니다. 템플릿 함수와 파이프라인은 정보를 변환하여 YAML에 삽입하는 강력한 방법입니다. 하지만 때로는 단순히 문자열을 삽입하는 것보다 약간 더 정교한 템플릿 로직을 추가해야 할 필요가 있습니다.lookup 사용
lookup
함수는 실행 중인 클러스터에서 리소스를 조회하는 데 사용될 수 있습니다.lookup
함수의 요약은 다음과 같습니다.lookup apiVersion, kind, namespace, name -> resource or resource list
추가 function
헬름에는 템플릿에서 활용할 수 있는 많은 템플릿 함수가 포함되어 있고 https://helm.sh/docs/chart_template_guide/function_list/ 에서 확인할 수 있습니다.
레퍼런스
https://helm.sh/docs/chart_template_guide/functions_and_pipelines/