Judaeng

Helm Tutorial 본문

DevOps/Helm

Helm Tutorial

Judaeng 2023. 6. 22. 22:00

오늘은 Helm에 대해서 더 알아보고 공부하는 시간을 가지자.

우선 공부하게 된 계기는 ArgoCD 배포를 하고 localhost:4000(내가 지정한 port)으로 "Hello World!"가 잘 화면에 뜨기까지를 보고 싶었다.

하지만 문제가 있었는지 잘 뜨지 않았다.

그전에는 Helm이 아닌 Yaml 파일을 직접 만들어서 배포하는 과정을 보고 Ngrok으로 IP를 지정해 Webhook을 그 IP로 보내 배포하게 만드는 것을 ArgoCD 플랫폼으로 확인하는 과정이었다.

하지만 나는 "Helm을 튜토리얼까지는 해본 것 같아!" 이런 마음을 가지고 있었는데 그게 아니었나 보다.

Helm Yaml을 만들어주는 명령어도 있었고, 그 명령어로 만드니 완전 다른 Yaml 파일들이었다.

그 파일로 다시 Chart를 만들었고, 그 속성들을 검색해 가면서 Yaml 파일을 완성해 다시 배포하는 시간을 가졌다.

시작하기 전에 나는 argocd를 구축했었다! 궁금하다면 여기!

시작해 보자.

 

Helm Chart로 ArgoCD에 배포하기

1. Helm 설치

2. Helm Chart 만들기

3. Helm 배포하기

4. Github push

5. ArgoCD NEW APP 등록

6. ArgoCD Dashboard 확인하기

 

Helm 설치


brew install helm

자세한 내용은 여기 -> Helm 설치가이드

 

Helm Chart 만들기


차트를 만들어 줄 프로젝트 경로에서 아래 명령어를 입력하면 기본적으로 차트를 생성해 준다.

helm create NAME [flags]

helm create 명령어 사용

helm create 명령어를 실행하면 위처럼 차트들이 생성된 걸 확인할 수 있다.

기본적으로 생성되는 차트 파일들에 대해서 알아보자.

 

  1. deployment.yaml : 쿠버네티스 디플로이먼트를 생성하기 위한 기본 매니페스트
  2. service.yaml : 디플로이먼트의 서비스 엔드포인트를 생성하기 위한 기본 매니페스트
  3. serviceaccount.yaml : pod를 식별하기 위한 리소스 매니페스트
  4. hpa.yaml : HorizontalPodAutoscaler의 줄임말이며, pod 오토 스케일링을 위한 매니페스트
  5. ingress.yaml : ingress 관련 매니페스트. ingress는 클러스터 내의 서비스에 대한 외부 접근을 관리하는 API 오브젝트이며, 일반적으로 HTTP를 관리함. 인그레스는 부하 분산, SSL 종료, 명칭 기반의 가상 호스팅을 제공할 수 있다.
  6. NOTES.txt : 차트의 "도움말". 이것은 helm install을 실행할 때 사용자에게 표시.
  7. _helpers.tpl : 차트 전체에서 다시 사용할 수 있는 템플릿 헬퍼를 지정하는 공간
  8. values.yaml : 차트에 전달되는 환경설정 정의
  9. chart.yaml : 차트에 대한 정보를 가지고 있다.

차트 구조에 대해서는 여기! 를 확인해 보자.

 

우리는 value.yaml을 확인해 보자.

value.yaml 설정

기본적으로 nginx 이미지로 되어있을 것이다.

respository에는 docker image를 가져올 repository를 정의하면 된다.

나는 dockerhub에 있는 이미지를 가져와서 사용할 것이라서 위에처럼 선언했다.🙂

 

이 외에도 deployment.yaml을 확인해 보면 containers에 ports를 4000번으로 설정했기 때문에 80에서 바꾸었다.

containers, port 설정

Helm 배포하기


helm install <pod이름> <차트경로> --namespace=<네임스페이스 이름>

# 공식문서 예시
helm install deis-workflow ./deis-workflow-0.1.0.tgz

나는 공식문서 예시처럼 따라 했다.

 

Github push


git add <프로젝트 경로>

git commit -m "자신만의 커밋 내용"

git push origin main

 

ArgoCD NEW APP 등록


NEW APP! 클릭!

아래처럼 프로젝트 설정을 자신의 설정대로 해준 뒤에 CREATE 버튼을 꾸욱 눌러주면 SYNC 된다.

ArgoCD APP 배포 설정

ArgoCD Dashboard 확인하기


이제 APP 설정까지 마친 후에 CREATE 버튼을 눌러주었다면! 조금 기다리자.

조금 기다린 후에 배포가 잘 되었다면! 아래 이미지처럼 녹색 Synced가 뜨면 성공이다.

이후에 replicaCount 속성을 사용하여 1~3개로 설정해 보면서 잘 배포되는지 확인해 보면 된다.

 

🤔 블로그 정리 후, 느낀 점

이 블로그 전에 Helm을 사용해서 ArgoCD에 배포할 땐 service, deployment, Chart, value.yaml을 직접 손으로 작성했었다.

그렇게 하는 줄만 알았던 것이다.

하지만 그 방법 외에 자동으로 helm yaml을 generate 해주는 명령어가 있는 줄 전혀 몰랐다.

내가 만든 Helm Chart는 너무 허접해서 몇 번 배포 연습을 하다 보면 에러가 나는 경우가 많았다.

아예 배포가 안되거나 파일 이름 설정도 많이 이상한 부분도 많았다.

하지만 Helm Create, package, install을 사용해서 만들면 속성들은 너무 많고 어렵지만 배울 점은 많아졌다.

이렇게 한번 만들어보니까 되게 쉽지만(?) 어려웠던(?) 그런 느낌이 들었다.

알고 있으면 되게 쉬운 것이지만 모른다면 한없이 삽질해야 되는... 그런 상황이었다.🥲

어쨌든 Helm Chart를 만들어 ArgoCD에 배포하는 것까지 성공했다.

Yaml 속성과 쿠버네티스를 일단 공부를 많이 해야 더 이해가 잘돼서 배포도 잘할 수 있을 것 같은 느낌도 들었다.

계속 공부하다 보면 다 연결되는 부분이 있을 것 같아서 깊게 들어가진 않았다!

잘 마무리한 것 같아 기분이 좋았고 피드백이 하고 싶으시다면 댓글에 달아주시면 피드백 달게 받겠습니다🙏🏻

 

 

📝 이번 게시물을 만들기 위해 참고한 사이트

1. 다른 사람의 블로그

2. 다른 사람의 블로그_2

3. Helm 공식 문서

4. Helm 공식 문서_2

'DevOps > Helm' 카테고리의 다른 글

Helm 알아보기(2) - Chart  (0) 2022.06.16
Helm 알아보기(1) - 설치  (0) 2022.06.16
Comments