mychart/
Chart.yaml
values.yaml
charts/
templates/
...
templates/
templates/
apiVersion: v2
name: mychart
version: 0.1.0
description: A Helm chart for my app
replicaCount: 1
image:
repository: nginx
tag: stable
pullPolicy: IfNotPresent
templates/
디렉토리의 모든 파일을 템플릿 렌더링 엔진으로 전달한다.values.yaml
의 값에 따라 동적으로 구성을 생성하기 위해 Go 템플릿을 사용할 수 있습니다.apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-nginx
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- containerPort: 80
이 객체는 릴리스 자체를 서술한다.
Release.Name
: 릴리스 이름Release.Namespace
: 릴리스 네임스페이스Release.IsUpgrade
: 현재 작업이 업그레이드 또는 롤백인 경우true
Release.IsInstall
: 현재 작업이 설치일 경우ture
Release.Revision
: 릴리스 리비전 번호Release.Service
: 현재 템플릿을 렌더링하는 서비스. Helm에서는 항상Helm
values.yaml
파일 및 사용자 제공 파일에서 템플릿으로 전달된 값. 기본적으로 비어 있다.
차트 내의 모든 특수하지 않은(non-special) 파일에 대한 접근을 제공한다. 템플릿에 접근하는 데에는 사용할 수 없지만, 차트 내의 다른 파일에 접근하는 데에는 사용할 수 있다
Files.Get
: 이름으로 파일을 가지고 오는 함수이다.
.Files.Get config.ini
Files.GetBytes
: 파일의 내용을 문자열이 아닌 바이트 배열로 가져오는 함수이다. 이미지 같은 것을 다룰 때 유용하다.Files.Glob
: 이름이 주어진 shell glob 패턴과 매치되는 파일 목록을 반환하는 함수이다.Files.Lines
: 파일을 한 줄씩 읽는 함수이다. 이것은 파일 내의 각 행을 순회(iterate)하는데 유용하다.Files.AsSecrets
: 파일 본문을 Base64로 인코딩된 문자열로 반환하는 함수이다.Files.AsConfig
: 파일 본문을 YAML 맵으로 반환하는 함수이다.
쿠버네티스 클러스터가 지원하는 기능에 대한 정보를 제공한다.
Capabilities.APIVersions
: 버전의 집합이다.Capabilities.APIVersions.Has $version
: 버전이나 리소스를 클러스터에서 사용할 수 있는지 여부를 나타낸다.Capabilities.KubeVersion
.Capabilities.KubeVersion.Version
: 쿠버네티스 버전이다.Capabilities.KubeVersion.Major
: 쿠버네티스 메이저 버전이다.Capabilities.KubeVersion.Minor
: 쿠버네티스 마이너 버전이다
Name
: 현재 템플릿에 대한 네임스페이스 파일 경로mychart/templates/mytemplate.yaml
BasePath
: 현재 차트의 템플릿 디렉토리에 대한 네임스페이스 경로mychart/templates
template package - text/template - Go Packages
quote
repeat
default
upper
lower
lookup
eq
ne
lt
gt
favorite:
drink: coffee
food: pizza
pizzaToppings:
- mushrooms
- cheese
- peppers
- onions
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: "Hello World"
drink: {{ .Values.favorite.drink | default "tea" | quote }}
food: {{ .Values.favorite.food | upper | quote }}
{{ if eq .Values.favorite.drink "coffee" }}mug: true{{ end }}
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: eyewitness-elk-configmap
data:
myvalue: "Hello World"
drink: "coffee"
food: "PIZZA"
mug: true
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: "Hello World"
drink: {{ .Values.favorite.drink | default "tea" | quote }}
food: {{ .Values.favorite.food | upper | quote }}
{{- if eq .Values.favorite.drink "coffee" }}
mug: true
{{- end }}
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: telling-chimp-configmap
data:
myvalue: "Hello World"
drink: "coffee"
food: "PIZZA"
mug: true
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: "Hello World"
{{- with .Values.favorite }}
drink: {{ .drink | default "tea" | quote }}
food: {{ .food | upper | quote }}
{{- end }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: "Hello World"
{{- with .Values.favorite }}
drink: {{ .drink | default "tea" | quote }}
food: {{ .food | upper | quote }}
{{- end }}
toppings: |-
{{- range .Values.pizzaToppings }}
- {{ . | title | quote }}
{{- end }}
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: edgy-dragonfly-configmap
data:
myvalue: "Hello World"
drink: "coffee"
food: "PIZZA"
toppings: |-
- "Mushrooms"
- "Cheese"
- "Peppers"
- "Onions"
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: "Hello World"
{{- $relname := .Release.Name -}}
{{- with .Values.favorite }}
drink: {{ .drink | default "tea" | quote }}
food: {{ .food | upper | quote }}
release: {{ $relname }}
{{- end }}
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: test-configmap
data:
myvalue: "Hello World"
drink: "coffee"
food: "BANANA"
release: test