- 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
8편에서는 helm 차트를 Release할 때 namespace를 설정하는 방법을 설명합니다.
영상에서는 30:10 ~ 34:16 내용에 해당합니다.
https://youtu.be/ajcyC_6velc?t=1810
1. helm 차트 release의 namespace는 default
kubectl create 또는 apply를 할 때 namespace를 설정하지 않으면 default namespace로 설정됩니다. helm도 마찬가지로 namespace를 설정하지 않으면 default namespace에 설정됩니다.
2. namespace 설정
namespace를 설정하는 방법은 helm install(또는 upgrade)할 때 --namespace인자를 같이 사용하는 것입니다.
helm install --namespace <namespace> <Release> <Chart 경로>
문제는 helm Release에 namespace가 설정되면 템플릿 리소스의 metadata.namespace에도 namespace가 설정되어야 합니다.
3. 템플릿 namespace 동적 설정
다행히도 템플릿 리소스에서 release할때 사용된 namespace를 가져올 수 있습니다. 7편에서 살펴본 Release Object에서 가져올 수 있습니다. Relase.Namespace로 Release namespace를 얻을 수 있습니다.
7편에서 작성한 차트를 변경해보겠습니다.
templates/deployment.yaml 설정은 아래와 같습니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
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
templates/service.yaml 설정은 아래와 같습니다.
apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
spec:
selector:
app: {{ .Release.Name }}
ports:
- port: 80
targetPort: 80
type: NodePort
values.yaml 설정은 아래와 같습니다.
image: nginx:stable
4. helm 차트 Release
namespace를 생성한 후, helm install(또는 upgrade)의 --namespace에 namespace를 설정합니다. kuebctl get -n <namespace>로 배포된 쿠버네티스 리소스를 확인할 수 있습니다.
kubectl create ns test
helm install --namespace test ./
kubectl get -n test all
5. helm list로 Release 확인
helm list명령어도 default로 namespace에 배포된 리소스만 확인합니다. 특정 namespace에 배포된 리소스를 확인하려면 --namespace(단축어 -n)을 설정해야 합니다.
helm list --namespace <namespace>
'연재 시리즈' 카테고리의 다른 글
Helm 시작하기 - 10편. Rollback (0) | 2021.11.25 |
---|---|
Helm 시작하기 - 9편. Release 업그레이드 (0) | 2021.11.25 |
Helm 시작하기 - 7편. Release Object사용 (0) | 2021.11.25 |
Helm 시작하기 - 6편. values.yaml 오버라이딩 (0) | 2021.11.23 |
Helm 시작하기 - 5편. helm 차트 템플릿 값 동적 수정 (0) | 2021.11.23 |