-
Helm3 Chart 생성 및 배포 정리 (feat. Github)K8S 2021. 7. 21. 16:00
이번 포스팅은 다음 과정을 다룬다 .
- helm3를 이용하여 차트 생성
- 생성한 차트를 github 레포지토리에 등록하기
- github 레포지토리를 이용하여 helm에 추가하고 클러스터에 배포하기
1. chart 생성하기
mkdir ~/charts && cd ~/charts helm create my-chart cd my-chart
Chart.yaml: 차트에 대한 이름, 버전, 설명등이 정의되어 있다.
charts/ : chart 압축 파일들이 존재하는 디렉토리로 chart에서 사용하는 종속 chart들이 압축파일(tgz)으로 존재. helm dep up 명령 수행시 requirements.yaml을 참조하여 repository에서 다운 받아 생성
templates/: manifest파일들이 들어있는 디렉토리
values.yaml: 기본으로 제공되는 값으로 templates/의 manifest파일들에서 참조
다음과 같은 구조로 구성하자.
(_helper.tpl은 필요한 파일이므로 지우면 안된다)
< test.yaml >
apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: test-pod name: {{.Values.podname}} spec: containers: - command: - sleep - "1000" image: busybox name: test-pod resources: {} dnsPolicy: ClusterFirst restartPolicy: Always status: {}
values.yaml에 podname항목을 추가해준다.
문법에 문제가 없는지 검사
helm lint my-chart
dry-run 옵션을 주어 실제로 클러스터에 배포하지는 않고, 어떤 형태로 배포되는지 확인한다.
helm install test1 my-chart --dry-run
metadata.name을 보면 values.yaml에 지정한 값(test-pod-name)이 추가된 것을 확인할 수 있다.
2. helm repository를 등록해서 사용해보자!
1) 차트 패키징하기
helm 레포지토리에는 위에서 봤던 helm chart가 들어가는게 아니라 위 차트를 패키징한 tgz파일 들어간다.
다음 커맨드를 통해 패키지를 생성해준다.
helm package my-chart
2) github 레포지토리 등록
먼저 깃허브에서 레포지토리를 생성해준 후,
다음 github page에서 master 브랜치로 https를 통해 접근할 수 있도록 설정해준다.
후에 헬름에 레포지토리를 추가할 때 저 url로 한다.
git clone 후, 로컬 레포지토리에 stable, incubator 디렉토리 생성하고
패키징한 차트를 /helm-chart/stable에 복붙해준다.
(/helm-chart는 생성한 깃허브 레포지토리 명)
cp ~/charts/my-chart-0.1.0.tgz ~/helm-chart/stable/
다음 커맨드를 통해 index.yaml 파일을 생성
여기서 Index.yaml 파일이 있어야 local에서 helm 레포지토리로 추가할 수 있다.
helm repo index ~/helm-chart/stable
이제 깃허브에 푸쉬한다.
3) 헬름에 차트를 등록하고 클러스터에 배포하자!
index.yaml이 있는 경로로 레포지토리를 추가해줘야 하기 때문에 뒤에 stable 경로를 단다.
helm repo add github-stable https://sjoh0704.github.io/helm-chart/stable
다음과 같이 잘 추가된 깃허브 레포지토리
깃허브 레포지토리에 추가된 차트가 잘 있는지 확인하자.
추가된 차트를 이용해서 manifest 파일을 배포해보자.
test라는 release-name으로 my-chart를 배포한다.
helm release 상태 확인
클러스터 내부에도 잘 배포된 모습
배포된 헬름 차트 삭제하기
반응형'K8S' 카테고리의 다른 글
K8S Certificate Signing Request 정리 (0) 2021.07.30 K8S TLS Certificate 정리 (0) 2021.07.26 NFS 구축 및 pv, pvc 생성과 K8S MySQL Statefulset 마운트 (0) 2021.07.15 Istioctl를 이용한 istio 설치 (0) 2021.07.11 K8S Nginx-controller를 이용한 Ingress 구성 정리 (0) 2021.07.09