서론
해당 글은 일프로 님의 인프런 강의 쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2의 내용을 정리한 글입니다.
해당 글에 사용된 내용, 사진 및 그림은 모두 강의와 강의 자료에 포함된 내용입니다.
Helm & Kustomize
![](https://velog.velcdn.com/images/appti/post/6397d727-0f86-4e8e-9de5-d961fa015f8b/image.png)
- 공통점
- 중복 관리를 최소화하기 위함
- 원인
- 마이크로 서비스로 인해 애플리케이션 종류가 많아졌기 때문
- 다양한 배포 환경이 필요하기 때문
- 다양한 배포 툴에서 지원
- 차이점
- 배포 편의기능 갯수
- Helm < Kustomize
- 다양한 기능 제공 & 직관적인 사용
- 한 패키지 당 활용 범위
- Helm : 마이크로 서비스 AND 다양한 배포 환경
- Kustomize : 마이크로 서비스 OR 다양한 배포 환경
- 활용 범위를 넓힐수록 내부 파일량이 많아지는 구조
- 사용 목적
- Helm : 프로젝트 관리 패키지용 + 기업 제품 패키지용
- Kustomize : 프로젝트 관리 패키지용
- 유즈 케이스
- Helm : 대형 프로젝트(애플리케이션 종류가 5개 이상인 경우)
- Kustomize : 간단한 프로젝트(애플리케이션 종류가 5개 미만인 경우)
- 결론
- 대부분의 오픈소스는 Helm을 사용하므로 Helm 학습은 필수
- Helm을 사용한다면 Kustomize는 사용할 필요 없음
구조
![](https://velog.velcdn.com/images/appti/post/abf6cfd9-912a-474d-86b5-97ef4d680415/image.png)
- Kustomize는 kubectl에 통합된 상태
- Helm은 Artifact HUB를 통해 필요한 패키지 다운로드 가능
사용 방식
![](https://velog.velcdn.com/images/appti/post/2b39805e-be6f-45ef-a83e-d312e8ee9960/image.png)
- Helm : 함수 방식
- Kustomize : 오버레이 방식
Helm 배포 실습
yum install -y tar
curl -O https://get.helm.sh/helm-v3.13.2-linux-arm64.tar.gz
tar -zxvf helm-v3.13.2-linux-arm64.tar.gz
mv linux-arm64/helm /usr/bin/helm
su - jenkins -s /bin/bash
helm
helm create api-tester
![](https://velog.velcdn.com/images/appti/post/0ed5d373-f55c-4ea4-9941-dde3bb78f601/image.png)
![](https://velog.velcdn.com/images/appti/post/71d16cfd-97fd-46a4-9403-700278573326/image.png)
kubectl version --short --client
![](https://velog.velcdn.com/images/appti/post/c15c9037-d490-42b2-8ace-498e8781ab61/image.png)
![](https://velog.velcdn.com/images/appti/post/f9116abc-161d-418a-8e68-e4e17c3e7a55/image.png)
![](https://velog.velcdn.com/images/appti/post/4676397a-e599-471b-a3e1-73c382a89bc0/image.png)
- GitHub project - Project url 설정
![](https://velog.velcdn.com/images/appti/post/eae50993-808b-4b2b-8c93-2fa03831578c/image.png)
![](https://velog.velcdn.com/images/appti/post/72a8686d-f02d-4f9b-99c0-c4f9b95f8bf4/image.png)
![](https://velog.velcdn.com/images/appti/post/ab9007d0-ec88-40ca-93d2-da7d23b42948/image.png)
- Pipeline Script from SCM 설정
![](https://velog.velcdn.com/images/appti/post/225b88c6-a7cb-4e12-96cf-5899e874da98/image.png)
![](https://velog.velcdn.com/images/appti/post/a3fe3d1d-2a13-4270-bb16-2e47cc0cac85/image.png)
![](https://velog.velcdn.com/images/appti/post/59c09d09-5ea2-4cdb-b709-149245fa83ba/image.png)
- 헬름 템플릿 확인 Stage에서 실행하는 yaml 확인 가능
Step1 - init
helm create api-tester
cd api-tester
![](https://velog.velcdn.com/images/appti/post/25cc5a87-e9ee-4c00-966e-45b59cefce08/image.png)
Step2 - deleting
![](https://velog.velcdn.com/images/appti/post/0475583a-5008-453a-9f72-84aab097696e/image.png)
- 필요없는 디렉토리 삭제
- 서브 애플리케이션이 없으므로 charts 삭제
- 애플리케이션 통신 상태를 확인하지 않으므로 tests 삭제
Step3 - modify
![](https://velog.velcdn.com/images/appti/post/7a7d7ccb-4288-4e99-9bff-ed3af72fe743/image.png)
- 애플리케이션 yaml에 맞게 Helm Package 수정
![](https://velog.velcdn.com/images/appti/post/8e9b67ac-93fd-41d8-ba08-e38120e9b2d1/image.png)
![](https://velog.velcdn.com/images/appti/post/e27f250d-91b1-433c-9e7f-e738c180ab6a/image.png)
![](https://velog.velcdn.com/images/appti/post/ef129322-e707-40e2-b1c6-acc5f500db6d/image.png)
![](https://velog.velcdn.com/images/appti/post/19abc246-9ec1-4045-8f7a-355fd913b2c8/image.png)
![](https://velog.velcdn.com/images/appti/post/0e412397-ccd1-432e-b07a-bdd8bd9587ea/image.png)
![](https://velog.velcdn.com/images/appti/post/75b153c7-de26-448b-b93c-81d8e5a8729c/image.png)
![](https://velog.velcdn.com/images/appti/post/2cba3816-897d-4df4-953e-61b42332664c/image.png)
![](https://velog.velcdn.com/images/appti/post/118ed447-5ac1-43b2-8065-c2f0e9644146/image.png)
Step4 - addition
![](https://velog.velcdn.com/images/appti/post/48b30c51-f2ba-42b8-865c-f09dc4b06e78/image.png)
![](https://velog.velcdn.com/images/appti/post/83270c78-e9a6-42eb-82c6-0c0c8ce8a1db/image.png)
- template/configmap.yaml 추가
![](https://velog.velcdn.com/images/appti/post/7d6eb40b-7e84-4c97-b771-c8d3bfd99827/image.png)
![](https://velog.velcdn.com/images/appti/post/78159a1d-879d-4bb4-98c2-6f0d90bc7b64/image.png)
![](https://velog.velcdn.com/images/appti/post/a589f5c7-7ef6-4952-acdb-53cf8e6da1b7/image.png)
![](https://velog.velcdn.com/images/appti/post/33883e4c-46c3-4089-a03e-af4d87e10074/image.png)
![](https://velog.velcdn.com/images/appti/post/e3966d6d-96db-490d-a45d-f1df10f4375d/image.png)
![](https://velog.velcdn.com/images/appti/post/6fbaaa97-ea70-4c35-a0a0-6467066eba30/image.png)
- 배포 정상동작 확인
- helm template : helm yaml 모두 확인
- helm upgrade : helm 배포 명령어
- install 대신 update --install을 자주 사용함