
Helm 차트
project /
Chart.yaml
README.md
values.yaml
templates/
/* Optional */
chart/
...
chart.yaml
필드 | 설명 | 예시 |
---|
apiVersion | Helm이 사용할 api version | v2 |
name | heml 차트 이름 | project |
versionn | helm 차트 버전 | 1.1.1 |
templates/*
- 쿠버네티스 리소스의 매니페스트의 템플릿이 저장된 폴더
- values.yaml에 설정된 값을 원하는 필드에 저장
예시
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Values.name }}-configmap
data:
type: {{ .Values.configType }}
values.yaml
- 차트 템플릿에서 사용할 설정의 기본 값을 저장
- YAML 문법을 사용해 Key와 Value 지정
- 차트 설치시 필요한 값을 오버라이드하여 설치
chart/*
- Helm chart에서 같이 설치되어야 할 차트를 저장
- Chart.yaml 파일에
dependencies
로 지정
차트 작성 예시
helm lint [PATH]
명령어를 통해서 확인할 수 있다.
chart.yaml
apiVersion: v2
name: my-chart
version: 0.1.0
values.yaml
app:
name: myapp
pod:
image: nginx
service:
name: myservice
port: 80
targetPort: 80
protocol: TCP
type: LoadBalancer
templates/pod.yaml
- 기본 nginx pod 선언
- 기본 로드밸런서 선언
apiVersion: v1
kind: Pod
metadata:
labels:
run: {{ .Values.app.name }} # values.yaml의 app의 name의 value = nginx
name: {{ .Values.app.name }}
spec:
containers:
- image: {{ .Values.pod.image }}
name: {{ .Values.app.name }}
---
apiVersion: v1
kind: Service
metadata:
labels:
app: {{ .Values.service.name }}
name: {{ .Values.service.name }}
spec:
selector:
run: {{ .Values.app.name }}
type: {{ .Values.service.type }}
ports:
- name: "80"
port: {{ .Values.service.port }}
protocol: {{ .Values.service.protocol }}
targetPort: {{ .Values.service.targetPort }}
value 오버라이드 명령어
helm upgrade <chart-name> -f <custom-value-path>