Helm (2) - 차트

이것저것 개발자·2023년 4월 12일
0

helm

목록 보기
2/3

Helm 차트

  • 차트 내부에 필수적으로 있어야 되는 요소
project /
	Chart.yaml
    README.md
    values.yaml
   	templates/
    
    /* Optional */
    chart/
    ...

chart.yaml

  • 필수 요소
필드설명예시
apiVersionHelm이 사용할 api versionv2
nameheml 차트 이름project
versionnhelm 차트 버전1.1.1
  • 옵션 요소
필드설명예시
appVersionhelm 차트에서 사용하는 app 의 버전v0.0.11
sourcehelm 차트와 관련된 소스https://docker.repository ...

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

  • 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>
profile
조호영, Developing something

0개의 댓글