if 함수
values.yaml
dev:
env: dev
log: info
qa:
env: qa
log: info
prod:
env: prod
log:
templates 내의 특정 yaml
{{- if eq .Values.dev.env "dev" }}
log: debug
{{- else if .Values.dev.env }}
log: {{ .Values.dev.log }}
{{- else }}
log: error
{{- end }}
------------------------------ Result
log: debug
print / ternary / indent 함수
values.yaml
print:
a: "1"
b: "2"
ternary:
case1: true
case2: false
data:
- a
- b
- c
templates 내의 특정 yaml
print: {{ print "Hard cording" }} # print: Hard Cording
printf: {{ printf "%s-%s" .Values.print.a .Values.print.b }} # printf: 1-2
case1: {{ .Values.ternary.case1 | ternary "1" "2" }} # case1: "1"
case2: {{ .Values.ternary.case2 | ternary "1" "2" }} # case2: "2"
data:
indent:
{{- .Values.data | toYaml | nindent 4 }}
----------------------------------------- Result
data:
indent:
- a
- b
- c
typels, coalesce 함수
values.yaml
typels1: "text"
typels2: true
data1:
data2:
data3: "text3"
templates 내의 yaml
{{- if typels "string" .Values.typels1 }}
typels1: {{ .Values.typels1 }} # typels1: "text"
{{- end }}
{{- if typels "bool" .Values.typels2 }}
typels2: {{ .Values.typels2 }} # typels2: true
{{- end }}
coalesce1: {{ coalesce .Values.data1 .Values.data2 "text1" }} # coalesce1: "text1"
coalesce2: {{ coalesce .Values.data1 "text2" .Values.data3 }} # coalesce2: "text2"
dict, include 함수
_helpers.tpl
{{- define "mychart.include" -}}
key: {{ .key1 }}
dict: {{ get . "key1" }}
{{- end }}
values. yaml
include: "value2"
templates내 yaml
{{- $myDict := dict "key1" "value1" }}
dict: {{ get $myDict "key1" }} # dict: "value1"
include1: {{- include "mychart.include" (dict "key1" "value1") | indent 4 }}
# include1:
# key: value1
# dict: value1
include2: {{- include "mychart.include" (dict "key1" .Values.include) | indent 4 }}
# include2
# key: value2
# dict: value2
With 함수
values.yaml
dev:
env: dev
log: info
qa:
env: qa
log: info
prod:
env: prod
log:
templates 내의 특정 yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: variables-with
data:
dev:
{{- $relname := .Release.Name -}}
{{- with .Values.dev }}
env: {{ .env }}
release: {{ $relname }}
log: {{ .log }}
{{- end }}
-------------------------------- Result
dev:
env: dev
release: mychart
log: info
tpl 함수
values.yaml
defaultLevel: info
dev:
env: dev
log: "{{ .Values.defaultLevel }}"
qa:
env: qa
log: "{{ .Values.defaultLevel }}"
templates 내 yaml
normal: "{{ .Values.dev.log }}" # normal: "{{ .Values.defaultLevel }}"
tpl: "{{ tpl .Values.dev.log }}" # tpl: "info"
Range 함수
(Case1) values.yaml
list:
- a
- b
- c
(Case1) templates 내의 yaml 파일
apiVersion: v1
kind: configMap
metadata:
name: variables-range
data:
index:
{{- range $index, $value := .Values.list }}
{{ $index }}: {{ $value }}
{{- end }}
---------------------------------------- Result
index:
0: a
1: b
2: c
(Case2) values.yaml
map:
env: dev
log: info
(Case2) templates 내의 yaml 파일
key-value:
{{- range $key, $value := .value.map }}
{{ $key }}: {{ $value | quota }}
{{- end }}
----------------------------------- Result
key-value:
env: "dev"
log: "info"
Default 함수
values.yaml
default:
nil:
list: []
object: {}
number: 0
string: ""
boolean: false
templates 내의 특정 yaml
nil: {{ .Values.default.nil | default "default" }}
# nil: default
list: {{ .Values.default.list | default (list "default1" "default2") | toYaml | nindent 6 }}
# list
# - default 1
# - default 2
object: {{ .Values.default.object | default "default: 1" | toYaml | nindent 6 }}
# object:
# default: 1
number: {{ .Values.default.number | default 1 }} # number: 1
string: {{ .Values.default.string | default "default" }} # string: default
boolean: {{ .Values.default.boolean | default true }} # boolean: true
기타 함수
trim: {{ trim " hello " }} # hello
trimPrefix: {{ trimPrefix "-" "-hello" }} # hello
trimSuffix: {{ trimSuffix "-" "hello-" }} # hello
trunc: {{ trunc 5 "hello world" }} # hello
replace: {{ "hello world" | replace " " "-" }} # hello-world
contains: {{ contains "cat" "catch" }} # true
b64enc: {{ b64enc "hello" }} # aCVsbG8
'잡학IT' 카테고리의 다른 글
SSH 터널링 (포트 포워딩) (0) | 2023.04.10 |
---|