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

+ Recent posts