- helm 시리즈 목차
- 1편 helm이란? : https://malwareanalysis.tistory.com/193
- 2편 helm 설치 : https://malwareanalysis.tistory.com/194
- 3편 helm차트 생성: https://malwareanalysis.tistory.com/195
- 4편 helm 차트 설치, 조회, 삭제: https://malwareanalysis.tistory.com/196
- 5편 helm 차트 템플릿 값 동적 수정: https://malwareanalysis.tistory.com/197
- 6편 values.yaml 오버라이딩: https://malwareanalysis.tistory.com/198
- 7편 Release Object사용: https://malwareanalysis.tistory.com/200
- 8편 namespace설정: https://malwareanalysis.tistory.com/201
- 9편 Release 업그레이드: https://malwareanalysis.tistory.com/202
- 10편 Rollback: https://malwareanalysis.tistory.com/203
7편에서는 Release Object를 사용하는 방법을 설명합니다.
영상에서는 25:35 ~ 29:45내용에 해당합니다.
https://youtu.be/ajcyC_6velc?t=1536
1. 기존 차트의 문제점
기존 차트는 템플릿의 yaml파일의 이름(metadata.name)이 항상 동일합니다. 그러므로 동일한 helm차트를 helm install을 할 경우 이름이 중복되어 오류가 발생합니다.
2. Release Object란?
해결방법은 간단합니다. yaml파일의 이름(metadata.name)을 서로 다르게 하면 됩니다. helm에서는 default Object 또는 변수를 가지고 있습니다.
helm 차트가 Release되면 해당 정보를 Release라는 Object에 저장합니다. 예를 들어 helm install helloworld로 차트를 release하면, Release Objectd의 name필드에 helloworld값이 저장되어 있습니다.
Releae Object이외에 기본으로 제공되는 Object를 Built-in(내장) Object라고 합니다. 공식문서에서 다양한 Built-in Object를 만나 볼 수 있습니다.
공식문서: https://helm.sh/docs/chart_template_guide/builtin_objects/
3. Relelase Object를 이용하여 템플릿 이름 변경
Release.name필드에는 Release 이름을 가지고 있습니다. 이 점을 이용하여 metadata.name 필드 값을 동적으로 변경할 수 있습니다.
templates/deployment.yaml을 아래와 같이 수정합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}
labels:
app: {{ .Release.Name }}
spec:
replicas: 2
selector:
matchLabels:
app: nginx-test
template:
metadata:
labels:
app: nginx-test
spec:
containers:
- name: nginx
image: {{ .Values.image }}
ports:
- containerPort: 80
template/service.yaml을 아래와 같이 수정합니다.
apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name }}
spec:
selector:
app: {{ .Release.Name }}
ports:
- port: 80
targetPort: 80
type: NodePort
values.yaml파일 설정은 아래와 같습니다.
image: nginx:stable
4. helm 차트 Releae
helm install명령어로 helm 차트를 Releaes합니다. 그리고 kubectl get deploy,po,svc로 배포된 쿠버네티스 리소스이름을 확인해보세요. Release 이름이 쿠버네티스 리소스 이름 사용되고 있는 것을 확인할 수 있습니다.
helm install test ./
kubectl get deploy,po,svc
'연재 시리즈' 카테고리의 다른 글
Helm 시작하기 - 9편. Release 업그레이드 (0) | 2021.11.25 |
---|---|
Helm 시작하기 - 8편. namespace설정 (0) | 2021.11.25 |
Helm 시작하기 - 6편. values.yaml 오버라이딩 (0) | 2021.11.23 |
Helm 시작하기 - 5편. helm 차트 템플릿 값 동적 수정 (0) | 2021.11.23 |
Helm 시작하기 - 4편. helm 차트 설치, 조회, 삭제 (0) | 2021.11.22 |