Helm이란?

2025. 4. 23. 15:59·DevOps&Cloud
서론

이전 쿠버네티스로 프로젝트를 진행하면서, 지겹도록 봤던 단어가 Helm이라는 용어이다.

실제 프로젝트에서 적용했던 경우는 한번 밖에 없었지만, 당시에는 처음이라서 리소스를 만들거나 배포할때 아래 명령어를 사용해서 배포하고 관리했다. 

kubectl apply -f

 

근데 공부를 하고 좀 더 찾아보면, 이 Helm이라는 도구가 kubernetes에서 매우 유용하게 쓰일 수가 있다.

Helm이란 무엇인가

 

정의:

Helm은 Kubernetes용 패키지 매니저로, 애플리케이션을 정의하고 설치하고 업그레이 하는 작업 과정을 코드로 템플릿화하여 수행할 수 있도록 도와준다. Helm을 사용함으로써 복잡한 Kuberenetes 리소스 정의도 하나의 패키지(Chart)로 관리할 수 있고, 배포, 업데이트, 롤백까지 도와준다는 장점이 잇다.

 

좀 더 쉽게 정의해보자면, 기존에 특정 pod나 service를 배포하려고하면 하나하나 "kubectl apply"만으로는 효율적으로 배포하기가 어렵다. 때문에 이러한 불편함을 해결하고자 Helm이라는 패키지 매니저를 사용하는 것이다.

Helm의 3가지 요소

 

Chart:

Helm Package. Kubernetes 클러스터 내에서 application, tool, service를 실행하는데 필요한 모든 리소스 정의

 

Repository:

Chart를 수집하고 공유할 수 있는 장소

 

Release:

Kubernetes Cluster에서 실행되는 차트의 instance이다. 하나의 Chart는 동일한 클러스터에 여러번 설치할 수 있다.

또한 설치될 때마다 새 Release가 생성된다. 

 

Helm Chart 구성요소

Helm Chart에는 총 3가지가 있다.

1. Chart.yaml: 차트 자체에 대한 메타데이터가 포함된 기본 파일

apiVersion: v2
name: my-application
description: A Helm chart for Kubernetes
type: application
version: 1.0.0
appVersion: "1.0.0"
maintainers:
  - name: John Doe
    email: johndoe@example.com
sources:
  - https://github.com/example/my-application

 

2. values.yaml: 차트의 기본 구성 값을 정의.

replicaCount: 3

image:
  repository: nginx
  pullPolicy: IfNotPresent
  tag: "1.19.0"

service:
  name: my-service
  type: ClusterIP
  port: 80

ingress:
  enabled: true
  annotations: {}
  hosts:
    - host: my-app.local
      paths:
        - /

resources:
  limits:
    cpu: "500m"
    memory: "256Mi"
  requests:
    cpu: "250m"
    memory: "128Mi"

persistence:
  enabled: true
  size: 10Gi
  storageClass: standard

 

3. template: Kubernetes의 매니페스트 파일을 생성하는 템플릿의 디렉터리.

 

Helm Template를 Kubernetes Cluster에 배포

 

마지막으로 다음과 같이 Helm으로 배포를 해주면 실제 쿠버네티스 클러스터에 배포가 된다.

helm install <release-name> <chart-path> [--values <values-file>] [--set <key=value>]

 

마무리

사실 쿠버네티스로 인프라를 한번 구축도 해보고, 이후에도 꾸준히 공부하는 중이지만

뭔가 공부를 하면 할 수록 더 여렵게 느껴지는 것 같다. 아직도 이 분야에서는 배우고 공부해야하는 것이 많다고 느낀다

'DevOps&Cloud' 카테고리의 다른 글

Elastic Search 이해하기(Elastic Search vs RDBMS)  (1) 2025.04.26
Kubernetes Architecture: Control Plane 과 Worker Node 이해하기  (0) 2025.04.23
Reverse Proxy, LoadBalancer의 차이 알아보기  (0) 2025.04.14
Kubernetes의 Ingress Controller와 LoadBalancer 역할 이해하기  (0) 2025.04.10
왜 Docker Compose를 써야하는가  (0) 2025.03.25
'DevOps&Cloud' 카테고리의 다른 글
  • Elastic Search 이해하기(Elastic Search vs RDBMS)
  • Kubernetes Architecture: Control Plane 과 Worker Node 이해하기
  • Reverse Proxy, LoadBalancer의 차이 알아보기
  • Kubernetes의 Ingress Controller와 LoadBalancer 역할 이해하기
무엇을해야하는지
무엇을해야하는지
어차피 잘될거지만, 그래도 꾸준히 열심히 최선을 다해서
  • 무엇을해야하는지
    What2Do
    무엇을해야하는지
  • 전체
    오늘
    어제
    • 분류 전체보기 (92)
      • MLOps (5)
        • DeepLearning(연구-논문) (0)
        • MS Azure AI (1)
        • MLOps projects (4)
      • DevOps&Cloud (23)
      • AWS (21)
      • Algorithm(Python) (25)
      • Springboot (8)
      • IT 시사 (2)
      • 운영체제 (4)
      • 네트워크 (2)
      • JAVA (1)
      • 면접&코테 후기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    aws #iam #group #role
    프로세스
    스프링부트
    3차원
    ec2 #instace
    백준
    rockstat
    dp #동적계획법 #백준 #파이썬
    BFS
    EC2
    AWS
    knapsack #가방 #백준 #dp #topdown
    SpringBoot
    tdd #테스트코드 #spring #springboot
    dp #dfs
    clpud
    카엔프
    testcode #spring #단위테스트 #통합테스트
    cors #클라이언트 #서버 #서버사이드 렌더링
    leetcode #codesignal #코테 #그리디 #알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
무엇을해야하는지
Helm이란?
상단으로

티스토리툴바