[구름 k8s] TIL 3-4-1

Peppie·2022년 10월 24일
0

1. Helm 개요/설치/사용

Helm

쿠버네티스의 응용 프로그램 정의/설치/업그레이드를 코드 형태로 관리/제공 (참고)

쿠버네티스 응용 프로그램을 패키지 형태로 손쉽게 관리 가능하도록 도와주는 도구,
deployment/service/ingress 등의 오브젝트에 대한 정의를 템플릿 기반의 YAML로 작성하여 배포

쿠버네티스 패키지 관리자 성격

  • Python의 pip
  • Node.js의 npm

Helm 기능

복잡한 어플리케이션 배포 관리

  • 쿠버네티스 환경에서 Helm chart는 복잡한 어플리케이션 코드 관리 및 자동 배포
  • 빠른 어플리케이션 배포로 다양한 테스트 환경 배포 및 운영환경 배포 시간 줄여서 개발 집중

Hook (어플리케이션 생명 주기 관리)

Helm chart로 설치/업그레이드/삭제/롤백 등의 어플리케이션 생명 주기에 개입가능한 Hook 기능 제공

릴리즈 관리

Helm으로 배포된 어플리케이션은 하나의 릴리즈, 해당 릴리즈는 배포된 응용 프로그램 버전 관리 가능

재사용성

Helm chart는 다른 환경에서 재사용하여 배포 관리 가능

Helm 구성

Helm Server (Tiller)

Helm Client 요청을 처리하기 위해 대기,
요청 발생시 쿠버네티스에 Helm Chart (YAML 형식) 설치 및 릴리즈 관리

Helm Client

외부 저장소에서 Helm Chart를 가져오거나 gRPC로 Helm Server와 통신하여 요청하는 역할

Helm Chart Repository

chart 저장소; chart에 대한 메타데이터를 포함한 저장소

  • public / private repository로 구성 가능

Helm Chart

쿠버네티스에서 리소스를 만들기 위한 템플릿; YAML 형식

Helm 환경 구성

Helm 패키지 설치

https://helm.sh/docs/intro/install/

명령

$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh

설치 확인

helm version

Helm Server (Tiller) 구성

Tiller account 생성

  • kubectl -n kube-system create sa tiller
  • serviceaccount 생성 확인 : kubectl get serviceaccount -n kube-system

cluster-admin role 부여

  • kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
  • clusterrolebinding 확인 : kubectl get clusterrolebinding

Helm 명령

helm

helm <명령> --help : 해당 명령에 대한 도움말

Helm 명령 사용 방법 및 명령 목록

helm env

Helm 환경 정보

helm repo

Helm repository 관련 명령

helm repo add <이름> <레포지토리 URL> : 레포지토리 추가

helm repo add brigade https://brigadecore.github.io/charts
: Helm 공식 stable 차트

helm repo add stable https://brigadecore.github.io/charts
: Helm 공식 stable 차트

helm repo list
: 레포지토리 목록

helm repo update
: 레포지토리 정보 갱신

검색 명령

  • helm search hub <chart 명> : hub에서 chart 검색 (hub는 repository 의미)
  • helm search repo <chart 명> : repository에서 chart 검색, repository 추가 후 가능

helm install

chart를 이용한 어플리케이션 배포

  • helm install repo stable/nginx-ingress : 현재 추가된 레포지토리에서 stable/nginx-ingress chart를 repo 이름으로 배포
  • helm install stable/nginx-ingress --generate-name : 현재 추가된 레포지토리에서 stable/nginx-ingress chart를 임의의 이름으로 배포

helm ls

Helm 설치된 chart 목록 확인

helm history <chart 이름>

chart 릴리즈 관리

helm inspect [command] <chart 이름>

chart 상세 정보

  • helm inspect values stable/nginx-ingress : stable/nginx-ingress chart 상세 정보
  • 해당하는 chart에 설정된 key:value 형식의 속성과 릴리즈 수행시 설정가능한 key 정보 확인

helm status

현재 릴리즈된 chart 상세 정보

  • helm status repo : repo 이름으로 릴리즈된 chart 상세정보

helm uninstall

현재 릴리즈된 chart 삭제

  • helm uninstall repo : repo 이름으로 릴리즈된 chart 삭제

Helm을 이용한 어플리케이션 배포 (release) 방법

기존에 생성된 chart를 이용한 어플리케이션 배포

repository에 저장된 Helm chart 이용

사용자 정의 chart를 이용한 어플리케이션 배포

이건 다음시간에...

0개의 댓글