공대생 정리노트
Helm 본문
참고자료
sktelecom-oslab.github.io/Virtualization-Software-Lab/Helm/
helm.sh/ko/docs/topics/architecture/
Helm?
도커 : 컨테이너 플랫폼 중 하나(rkt와 같은 플랫폼도 있다)로 가장 성공적인 컨테이너 플랫폼
쿠버네티스 : 컨테이너화된 애플리케이션을 쉽게 배포하고 관리할 수 있게 해주는 소프트웨어 시스템. 컨테이너 오케스트레이션 시스템
Helm : 쿠버네티스 패키지를 관리하는 도구. 여기서 쿠버네티스 패키지는 chart라고 하며 새로운 chart를 생성하거나 chart repository와 상호작용 등을 할 수 있다
Helm Chart
Helm chart는 쿠버네티스 리소스들의 related set을 의미하는 파일 collection이다.
chart는 한 개의 파드를 나타낼수도, 엄청 복잡한 웹 어플리케이션을 나타낼 수도 있다.
다음 구조는 공식 document의 예이다
wordpress/
Chart.yaml # A YAML file containing information about the chart
LICENSE # OPTIONAL: A plain text file containing the license for the chart
README.md # OPTIONAL: A human-readable README file
values.yaml # The default configuration values for this chart
values.schema.json # OPTIONAL: A JSON Schema for imposing a structure on the values.yaml file
charts/ # A directory containing any charts upon which this chart depends.
crds/ # Custom Resource Definitions
templates/ # A directory of templates that, when combined with values,
# will generate valid Kubernetes manifest files.
templates/NOTES.txt # OPTIONAL: A plain text file containing short usage notes
디렉토리에 있는 각 파트의 자세한 내용은 공식 document에 잘 나와 있다.(helm.sh/docs/topics/charts/)
Helm Architecture
Helm Client
엔드 유저용 명령줄 클라이언트이다.
로컬 차트 개발, repository 관리, release 관리, 헬름 라이브러리와 인터페이스 제공을 맡는다.
헬름 라이브러리는 쿠버네티스 API 서버에 대한 인터페이스 역할을 한다
- 릴리즈 빌드 위해 차트와 configuration 결합
- 쿠버네티스에 차트를 설치, 릴리즈 객체 제공
- 쿠버네티스와 상호작용해 업그레이드 및 uninstall
Tiller Server
Helm Server. 쿠버네티스 위헤 pod 형태로 위치한다
Helm Client가 gRPC 프로토콜을 이용해 tiller와 통신한다.
사용자가 chart 배포를 요청하면 tiller는 chart를 render해서 쿠버네티스 객체 정보를 정의하는 manifest 정보를 만든다.
이 manifest 파일을 쿠버네티스 API 서버를 통해 쿠버네티스에 앱을 배포한다.