Kubernetes

Kubernetes 기초 - Helm(3)

사실 나도 모름 2024. 1. 30. 01:29
  1. GitHub Chart 저장소 만들기
  2. GitHub를 통해 Chart 배포하기
  3. 배포된 Chart 사용하기

1. GitHub Chart 저장소 만들기

Helm Chart 저장소

  • 패키지형 차트를 저장하고 공유할 수 있는 HTTP 서버
  • Index.yaml 파일과 패키지화 된 차트(name-version.tgz)를 이용해 배포
  • 클라이언트의 GET 요청에 응답하는 구글 스토리지 버킷(GCS), Amazon S3 버킷, GitHub Page, 웹 서버 등에서 운영 가능

 

 

 

GitHub Repository 만들기

일단 github에서 리포지토리를 만드려면 회원가입은 해야하니 회원가입 후 로그인부터 한다.

그리고 메인화면에서 상단바에 Repositories를 클릭한다.

 

 

 

Repositories로 들어간 후 우측 상단에 New를 클릭한다.

 

 

 

원하는 리포지토리 이름과 Description 설명을 넣고 public/private를 선택한 후 아래 Create Repository를 클릭하여 생성한다.

  • Public : 소스 공유를 위한 외부에 노출되는 리포지토리
  • Private : 기업 내 조직에서 사용하기 위한 외부에 노출되지 않는 리포지토리

리포지토리를 생성하면 리포지토리 화면 아래에 명령어들이 있는데 그 명령어들로 파일들을 업로드하거나 하는 작업을 수행할 수 있다.

 

 

 

Token 생성하기

이제 연결을 위한 토큰을 생성한다.

우측 상단 프로필을 클릭하여 Settings - Developer Settings 를 클릭한다.

 

 

 

Personal access tokens 를 클릭하고 tokens (classic) 을 클릭한다.

 

 

 

우측 상단에 Generate new tokens을 클릭하고 Generate new tokens (classic)을 클릭한다.

생성 화면에서 원하는 토큰 이름을 지정하고 workflow를 체크한 후 맨 아래 Generate token을 클릭하여 생성한다.

생성하면 토큰의 정보가 나오는데 그것을 복사해서 메모장 등에 잠시 기록해둔다.

페이지를 떠나면 더이상 토큰 정보를 볼 수 없으니 반드시 메모해둔다.

잃어버렸으면 삭제하고 다시 만들면된다.

토큰의 정보는 다른 사람에게 절대로 노출되어서는 안되며 노출될 시 해킹의 우려가 있으니 조심한다.

 

 

 


2. GitHub를 통해 Chart 배포하기

마스터 노드에서 다음 명령을 실행하여 git을 설치하고 디렉토리를 github과 연결하기 위한 사전 준비를 한다.

config 명령으로 사용자 정보를 기재하는데 email은 본인이 github email, name은 본인 계정의 이름을 기재한다.

나의 경우는 ThreeCircle이 계정의 이름이다.

apt-get install -y git
mkdir my-helm-repo; cd my-helm-repo/
git init
git config --global user.email "Your_mail_address"
git config --global user.name "GIT_Name"
git은 버전 관리 소프트웨어로 배포하기 이전 상태로 되돌릴 수도 있고 과거의 작업 내용을 열람할 수도 있는 유용한 소프트웨어다.

 

 

 

github에 파일을 배포할 때 함께 배포할 README.md 파일을 생성한다.

대충 원하는 대로 아무렇게나 적어도 상관없다.

cat <<EOF > README.md

# My Helm Chart

Helm chart repository provided by ttabae

      helm repo add my-helm-repo https://threecircle.github.io/my-helm-repo/
      helm repo list
      helm repo update
      helm search repo mynginx
      helm install webserver my-helm-repo/mynginx
EOF

 

 

 

이전 포스터에서 생성한 mynginx-0.1.0.tgz 파일을 git init했던 디렉토리로 옮겨온 후 index.yaml 파일을 생성한다.

cp ~/mynginx-0.1.0.tgz .
helm repo index .

 

 

 

helm repo index . 명령은 index.yaml 파일을 작업 디렉토리 내부의 파일에 대한 정보들이 들어있는 파일인데 반드시 github 리포지토리에 함께 업로드해야 한다.

순서대로 했다면 아래와 같이 파일 3개가 있어야 한다.

 

 

 

현재 디렉토리의 파일들을 github 리포지토리에 업로드하자.

add는 파일들을 업로드하기 위해 임시저장하는 것인데 add 명령을 실행했다해서 바로 되는 것이 아니고 commit까지 해야된다.

git commit -m "COMMENT" 부분의 COMMENT는 원하는 코멘트를 넣어도 된다.

git add .
git commit -m "Create mynginx helm chart"
git add로 작업 디렉토리에서 파일들을 업로드할 때 파일들은 바로 업로드되지 않고 Staging Area라고 불리는 위치로 이동한다.
git commit 명령을 통해 Staging Area에 있는 파일들이 Repository라는 저장소 공간으로 이동하여 업로드된다.

 

 

 

이번에는 작업디렉토리와 내 github 리포지토리를 동기화하는 작업을 해야하는데 다음의 명령을 수행한다.

연동하는 공간의 이름은 test라고 지정했는데 이는 원하는대로 바꿔도 상관없다.

git push 명령을 통해 작업 디렉토리에서 커밋한 파일들을 test라는 공간에 master 브랜치라는 이름으로 리포지토리에 푸시한다.

push 명령을 사용할 때 사용자 이름과 토큰 정보를 물어보는데 토큰 정보는 이전에 메모했던 토큰 정보를 그대로 붙여 넣으면 된다.

git remote add test https://github.com/237summit/my-helm-repo.git
git push -u test master

 

 

 

이제 생성한 github 리포지토리 화면을 리로드하면 업로드된 파일을 볼 수 있다.

 

 

 

외부에서 우리가 배포한 파일에 접근하려면 HTTP 프로토콜로 요청이 가능한 웹 페이지가 있어야 한다.

현재 리포지토리에서 Settings - Pages 를 클릭하고 Branch의 정보를 None이 아니라 master로 변경하고 Save를 클릭한다.

생성되는데 조금의 시간이 걸리지만 잠시후 페이지를 리로드하면 URL 주소가 아래와 같이 하나 나온다.

이 URL 정보가 앞으로 리포지토리의 파일들을 요청할 때 사용될 주소가 된다.

만약 한참 기다렸는데 안나온다면 Branch에서 master로 설정된 것을 None으로 변경 후 Save했다가 위 과정을 다시 시도해보고 기다리면 될 것이다.

 

 

 


3. 배포된 Chart 사용하기

생성되었다면 확인해보자.

방금 생성된 URL을 가지고 helm repo add 명령으로 원하는 이름을 입력하고 URL을 붙여넣는다.

helm repo update는 추가한 리포지토리의 최신 정보로 업데이트하는 명령이다.

helm repo add <Repository_Name> <Your_Page_URL>
helm repo list
helm repo update

 

 

 

우리가 추가한 리포지토리 내에서 mynginx라는 차트가 존재하는지 확인하려면 helm search 명령을 사용한다.

이번에는 추가한 리포지토리로 mynginx라는 차트를 실행해보자.

helm search repo mynginx
helm install webserver my-helm-repo/mynginx

문제없이 잘 실행된다.

 

 

우리가 생성한 차트의 내용대로 실행이 되었는지 확인한다.

kubectl get all
curl localhost:32133

성공

 

 

 

확인까지 완료했다면 생성한 차트 리소스를 다시 정리한다.

helm uninstall webserver

 

 

 

이와 같이 우리가 생성한 차트를 리포지토리에 업로드하여 다른 사람과 공유하기 위해 git과 github를 사용했다.

본인만의 차트를 배포하기 위해 github와 같은 리포지토리를 잘 활용하면 좋을 듯하다.

 

 


 

 

 

아래 영상을 참조하였습니다.

https://youtube.com/playlist?list=PLApuRlvrZKohLYdvfX-UEFYTE7kfnnY36&si=QfnuyP_2OpoDOsX1

 

[따배쿠 Advance] 쿠버네티스 심화 시리즈

 

www.youtube.com

 

'Kubernetes' 카테고리의 다른 글

Kubernetes - Network Policy  (0) 2024.03.04
Kubernetes - Metrics Server, PodAutoScaling  (0) 2024.02.03
Kubernetes 기초 - Helm(2)  (0) 2024.01.27
Kubernetes 기초 - Helm(1)  (0) 2024.01.25
Kubernetes 기초 - Custom Resources  (0) 2024.01.24