Jump to section

Helm이란?

URL 복사

쿠버네티스에서 애플리케이션을 개발하는 것은 본질적으로 복잡합니다. 애플리케이션 종류에 상관없이 수백 개의 구성을 설치, 관리, 업데이트해야 할 수도 있습니다. 

Helm은 Helm 차트라는 패키징 형식을 사용하여 애플리케이션 배포를 자동화함으로써 이 프로세스를 간소화합니다. YumRed Hat® Enterprise Linux®용 RPM 패키지를 관리하는 방식과 매우 유사하게, Helm은 쿠버네티스용 Helm 차트를 관리합니다. 차트는 컨테이너 간에 일관성을 유지하는 동시에 애플리케이션의 특정 요구 사항을 충족하는 방법을 결정합니다.

쿠버네티스의 패키지 관리자인 Helm은 특정 구성에 가장 중요한 항목을 기반으로 변수를 재정의하여 여러 인스턴스에 동일한 구성 프레임워크를 적용할 수 있습니다. 

Helm logo

흥미로운 사실HelmCloud Native Computing Foundation(CNCF)에서 나온 오픈소스 프로젝트라는 점입니다. Helm은 2015년에 열린 첫 번째 KubeCon에서 처음 소개되었으며 쿠버네티스와 함께 CNCF로 마이그레이션되었습니다.

Helm은 이른바 Helm 차트로 애플리케이션을 정의부터 업그레이드까지 설명하는 방식으로 작동합니다. Helm은 차트(템플릿과 유사)를 사용하여 쿠버네티스 API를 통해 리소스를 쿠버네티스 클러스터로 전달합니다. 

Helm은 helm이라는 단일 커맨드라인 인터페이스(CLI) 툴을 사용하여 애플리케이션을 생성, 관리, 구성할 수 있는 간단한 몇 가지 커맨드와 더불어 Helm 차트를 관리합니다. 

Helm 차트는 쿠버네티스 클러스터의 리소스를 기술하고 이를 하나의 애플리케이션으로 패키징하는 파일 컬렉션으로, 다음 세 가지 기본 구성 요소로 이루어져 있습니다. 

  • 차트 - Chart.yaml은 이름, 버전, 종속성 등 애플리케이션 메타데이터를 정의합니다. 
  • - values.yaml은 값을 설정합니다. 설정된 값에 따라 차트 재사용을 위한 변수 대체 값을 설정하게 됩니다.
    • 또한 값 파일의 구조를 설명하는 값 JSON 스키마가 있을 수 있으며, 이는 동적 양식을 생성하고 값 매개변수의 유효성을 검사하는 데 도움이 될 수 있습니다.
  • 템플릿 디렉터리 - templates/ 디렉터리는 템플릿을 보관하며, 템플릿을 values.yaml 파일에 설정되어 있는 값과 결합하여 매니페스트를 생성합니다.
  • 차트 디렉터리 - charts/Chart.yaml에서 정의한 모든 차트 종속성을 저장하고 Helm 종속성 빌드 또는 Helm 종속성 업데이트를 사용하여 재구성합니다.

Helm 차트를 설치할 때마다 릴리스라고 하는 해당 차트의 인스턴스도 생성합니다. Helm 차트는 릴리스가 새로 생성될 때마다 유지 관리되며, 차트의 이전 버전들을 손쉽게 사용하여 선호하는 구성으로 롤백할 수 있습니다.

Helm 차트의 실제 적용 사례를 보려면 Red Hat OpenShift®에서 Helm 사용에 대해 설명하는 Ask a Product Manager Office Hours의 이 에피소드를 확인해 보세요.

Helm CLI를 설치한 후에는 사전 정의된 리소스와 값이 있는 기존 차트를 사용하거나, 사용자 정의 차트를 생성하여 자체 애플리케이션 리소스를 패키징할 수 있습니다.

기존 차트 사용

기존 차트를 사용하려면 먼저 Helm 클라이언트에 Helm 리포지토리를 추가한 다음, 설치 시 값 파일에 특정 구성 매개변수를 설정합니다.

값 파일은 개별 구성에 대해 Helm 차트를 재사용하기 위한 핵심 요소입니다. values.yaml에 선언된 모든 변수를 대체할 수 있으며, Helm은 .values 구조를 생성하여 이러한 변수를 템플릿에 보관합니다. 이를 통해 추후 구성에서 해당 변수를 대체할 수 있습니다. 원하는 개수의 값 파일을 차트에 전달할 수 있습니다. Helm은 전달된 값 파일을 결합하고 렌더링하여 변수 파일을 재사용할 수 있도록 합니다.

값 구성을 커밋하거나 푸시한 후에는 일반적인 Helm 명령을 통해 애플리케이션의 라이프사이클을 업데이트, 업그레이드 및 관리할 수 있습니다.

사용자 정의 차트 생성

조직 전체에서 또는 특정 워크로드 내에서 재사용하려는 애플리케이션을 패키징하기 위해 사용자 정의 차트를 생성해야 할 수 있습니다. 여기에는 차트의 templates/ 디렉터리에서 애플리케이션 리소스를 정의하고, 값 파일을 통해 구성 매개변수를 설정하고, Chart.yaml 파일에 메타데이터 및 도큐멘테이션을 추가하는 작업이 포함됩니다.

그런 다음 Helm 패키지를 사용하여 차트를 패키징하고 퍼블릭 또는 프라이빗 Helm 리포지토리에 업로드하거나 직접 배포할 수 있습니다.

Red Hat의 검증된 패턴은 기존 Helm 차트의 유용한 예시로, 사용자 정의할 수도 있습니다. 검증된 패턴은 고객 사이트에 배포되어 테스트 및 유지 관리를 위한 일련의 요구 사항을 충족하는 전체 워크로드를 설명하는 Helm 차트입니다. 이는 직접 사용하거나 자체 구성의 필요에 맞게 수정할 수 있습니다.

전반적인 GitOps 전략에 포함된 Helm은 여러 환경에 걸쳐 민첩성, 보안, 일관성을 제공하는 강력한 툴입니다. Red Hat Service Interconnect와 같은 멀티클라우드 커뮤니케이션 툴과 함께 사용하면 여러 클라우드 제공업체 전반에서 여러 마이크로서비스를 사용하는 복잡한 배포에 특히 유용합니다.

쿠버네티스 개발자들에게 Helm 차트는 애플리케이션을 가동한 다음 재사용하거나 다른 개발자들과 공유할 수 있는 쉽고 간단하고 빠른 방법입니다.  

또한 시스템 관리자와 기타 IT 운영 전문가들에게는 Helm이 지속적 통합/지속적 개발(CI/CD)을 애플리케이션 파이프라인에 구현하고 간소화하기 위한 일관된 툴을 제공합니다. Helm은 일관성과 민첩성을 모두 제공하는 툴입니다.

차트 생성, 값 구성, 차트 배포까지의 전체 프로세스를 체험하려면 Red Hat® Developer에 있는 다음 튜토리얼을 확인해 보세요.

추가 자료

문서

DevSecOps란?

DevOps의 민첩성과 대응 능력을 최대한 활용하려면 IT 보안 팀이 애플리케이션의 전체 라이프사이클에서 주요 역할을 해야 합니다.

문서

CI/CD(지속적 통합/지속적 제공): 개념, 방법, 장점, 구현 과정

CI/CD는 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공합니다.

문서

DevOps 엔지니어는 어떤 사람일까요?

DevOps 엔지니어는 조직 내 협업, 혁신, 문화적인 변화를 지원하는 기술 및 전문성을 두루 갖추고 있습니다.  

DevOps에 대한 자세한 내용

제품

Red Hat 전문가가 참여하는 집중적인 전문 레지던스 환경에서 애자일 방법론과 오픈소스 툴로 기업의 비즈니스 문제를 해결하는 방법을 학습합니다.

다양한 시각으로 고객의 상황을 파악하고 이를 바탕으로 고객의 과제를 분석하여 종합적이고 비용 효율적인 솔루션을 통해 문제를 해결하도록 돕는 전략적인 조언자입니다.

리소스

팟캐스트

Command Line Heroes 시즌 1, 에피소드 4:

"DevOps: Tear down that wall"

체크리스트

DevOps 방법론을 활용한 엔터프라이즈 자동화

백서

Red Hat Ansible Automation Platform으로 CI/CD 파이프라인 간소화

오퍼레이터

Red Hat® OpenShift® GitOps를 사용하여 인프라와애플리케이션 구성 관리