본문 바로가기
IT KNOWLEDGE

Helm

by BTC_보담씨 2023. 9. 29.

베하~~

안녕하세요 항상 웃음이 나는 픠식팀 입니다.

Helm

Kubernetes의 패키지 관리자로, 애플리케이션을 정의, 저장, 관리할 수 있게 해주는 도구이다.

Helm을 사용하면, Kubernetes 리소스들의 정의를 보다 쉽게 생성, 버전 관리, 공유 및 배포할 수 있다.

Helm Concepts

Chart

  • Helm의 패키지
  • 쿠버네티스 애플리케이션의 인스턴스를 생성하는데 필요한 정보의 모든 리소스 정의와 관련된 파일을 포함한다.
    • 애플리케이션의 릴리즈하는데 사용
    • YAML 파일의 모음
  • 시각화를 쉽게하기 위해 헬름 차트는 도커 이미지 처럼 비교할 수 있다.
  • 헬름에는 인기 있는 앱의 차트를 검색하고 공유할 수 있는 헬름 허브도 존재한다.

Config

  • 릴리스 가능한 객체를 생성하기 위해 패키징된 차트로 병합될 수 있는 설정 정보를 가진다.
    • Kubernetes 애플리케이션 릴리스에 명시된 구성이 포함되어 있다.
    • Service, ingress, deployment 등을 위한 구성 혹은 Kafka, Vault, Nats 등 과 같은 특정 애플리케이션에 대한 구성이 될 수 있다.
  • values.yaml은 값을 설정합니다. 설정된 값에 따라 차트 재사용을 위한 변수 대체값을 설정하게 됩니다

Release

  • 차트의 구동중 인스턴스이며, 특정 설정이 결합 되어 있다.
    • Helm 차트의 인스턴스로, Kubernetes 클러스터에 배포된 차트
  • 하나의 차트는 클러스터에서 여러 번 배포될 수 있으며, 각 배포 마다 고유한 릴리즈가 생성된다.

Repository

  • Repository는 차트를 모아두고 공유하는 장소
  • 사용자는 공식 Helm 레포지토리에서 차트를 찾을 수 있고, 자체 레포지토리를 생성하여 차트를 관리할 수도 있다.

Helm Architecture

Helm2

사용자가 직접 사용할 수 있는 명령줄 인터페이스인 Helm Client와 쿠버네티스 클러스터 내부에서 실행되어서 Helm 클라이언트에서 오는 명령을 받아서 쿠버네티스 API 서버와 통신하는 역할인 틸러 서버로 구성되어 있습니다.

Helm Client

  • 개발자가 로컬에서 차트 개발, 구성, 릴리즈, 레포지토리를 작업할 수 있는 명령줄 인터페이스를 제공
  • 틸러 서버와 상호작용하여 차트, 릴리스를 사용한 설치, 업그레이드, 롤백, 삭제 등 다양한 작업을 할 수 있다.
  • 현재 클러스터에서 실행중인 릴리스에 대한 정보를 요청할 수도 있다.
  • helm 클라이언트는 golang으로 개발 되었고 gRPC를 이용해서 통신합니다.

Tiller Server

  • 쿠버네티스 클러스터의 클러스터내 서버로, 헬름 클라이언트와 상호 작용하고 쿠버네티스 API 서버와 통신합니다.
  • 헬름은 쿠버네티스 리소스에 대한 설치, 업그레이드, 쿼리 및 제거와 같은 작업을 통해 쿠버네티스를 쉽게 관리할 수 있다.

Helm3

Helm3의 아키텍처의 가장 큰 차이는 Triller Server의 유무 차이이다.

더 이상 사용하지 않고 Helm Client에서 바로 API 서버로 요청한다.

댓글