Helm 기본 사항

완료됨

애플리케이션을 배포, 버전 관리 및 업데이트할 때 애플리케이션이 예상대로 작동하도록 올바른 버전의 소프트웨어 라이브러리 및 구성이 있는지 확인해야 합니다.

개발 팀이 애완 동물 가게 회사 웹 사이트를 Kubernetes에 배포하기로 결정했다고 가정해 보겠습니다. 이 프로세스에서 팀이 배포, 서비스 및 수신 YAML 기반 파일을 만듭니다. 각 대상 환경에 대한 각 파일의 정보를 직접 하드 코딩하고 기본. 그러나 기본 각 환경에 대해 세 개의 파일을 포함하는 것은 번거롭고 애플리케이션이 증가함에 따라 복잡성이 증가합니다.

A diagram that shows a container deployed to a Kubernetes node using a deployment, a service, and an ingress YAML file.

Helm을 사용하면 애플리케이션 배포 프로세스를 간소화하고 하드 코딩된 배포 변수와 설정을 피할 수 있습니다.

Helm이란?

Helm은 모든 애플리케이션의 리소스 및 배포 정보를 단일 배포 패키지에 결합하는 Kubernetes 패키지 관리자입니다.

A diagram shows a containerized app deployed to a Kubernetes cluster using a Helm chart.

Helm은 Windows의 Windows 패키지 관리자, Linux의 apt(고급 패키지 도구) 또는 macOS의 Homebrew와 비슷하게 생각할 수 있습니다. 설치, 업데이트 또는 제거하려는 애플리케이션의 이름을 지정하면 Helm이 프로세스를 처리합니다.

Helm을 사용하면 한 번에 하나의 앱을 설치하는 것으로 제한되지 않습니다. Helm은 사람이 읽을 수 있는 템플릿 기반 YAML 스크립트 파일을 만들어서 애플리케이션 배포를 관리할 수 있습니다. 이러한 템플릿 파일을 사용하여 애플리케이션 배포를 성공적으로 관리하는 데 필요한 모든 종속성, 구성 매핑 및 비밀을 지정할 수 있습니다.

Helm은 4개의 구성 요소를 사용하여 Kubernetes 클러스터에서 애플리케이션 배포를 관리합니다.

  • Helm 클라이언트
  • Helm 차트
  • Helm 릴리스
  • Helm 리포지토리

Helm 클라이언트란?

Helm 클라이언트는 Kubernetes 애플리케이션을 배포하는 데 필요한 매니페스트 파일을 만들고 제출하는 클라이언트 설치 이진 파일입니다. 이 클라이언트는 사용자와 Kubernetes 클러스터 간의 상호 작용을 담당합니다.

A diagram shows the communication between three Helm components to create a Helm release; the client, chart, and repository.

Helm 클라이언트는 모든 주요 운영 체제에 사용할 수 있으며 클라이언트 PC에 설치됩니다. Azure에서 Helm 클라이언트는 Cloud Shell에 미리 설치되며 Kubernetes의 모든 보안, ID 및 권한 부여 기능을 지원합니다.

참고 항목

이 모듈에서는 Helm v3의 사용을 가정합니다. helm version 명령을 실행하여 클라이언트 디바이스에서 실행되는 Helm 버전을 확인할 수 있습니다. Helm v2를 실행 중인 경우 이 모듈의 명령 매개 변수 중 일부가 다르다는 점에 주의하세요.

Helm 차트란?

Helm 차트는 관련 Kubernetes 리소스 집합을 설명하는 템플릿 배포 패키지입니다. 애플리케이션을 Kubernetes 클러스터에서 실행하기 위한 매니페스트 파일을 빌드하고 배포하는 데 필요한 모든 정보를 포함하고 있습니다.

Helm 차트는 차트를 설명하는 여러 파일과 폴더로 구성됩니다. 일부 구성 요소는 필수이며 일부는 선택 사항입니다. 앱 구성 요구 사항에 따라 포함할 구성 요소가 달라집니다.

다음 목록에서는 필수 항목이 굵게 표시된 Helm 차트의 파일 및 폴더 구성 요소에 대해 설명합니다.

파일/폴더 설명
Chart.yaml 차트에 대한 정보가 들어 있는 YAML 파일입니다.
values.yaml 차트에 대한 기본 구성 값입니다.
templates/ 차트에 대한 배포 템플릿이 들어 있는 폴더입니다.
LICENSE 차트에 대한 라이선스가 들어 있는 일반 텍스트 파일입니다.
README.md 차트 사용 방법에 대한 지침이 들어 있는 markdown 파일입니다.
values.schema.json** values.yaml 파일에 구조를 적용하는 스키마 파일입니다.
charts/ 기본 차트의 모든 하위 차트가 들어 있는 폴더입니다.
crds/ 사용자 지정 리소스 정의입니다.
templates/Notes.txt 템플릿 사용 메모를 포함하는 텍스트 파일입니다.

Helm 릴리스란?

Helm 릴리스는 차트를 사용하여 배포된 애플리케이션 또는 애플리케이션 그룹입니다. 차트를 설치할 때마다 클러스터에 애플리케이션의 새 인스턴스가 만들어집니다. 각 인스턴스에는 특정 애플리케이션 인스턴스와 상호 작용할 수 있는 릴리스 이름이 있습니다.

A diagram shows the communication between three Helm components to create a Helm release: the client, chart, and repository. The release is highlighted.

예를 들어 차트를 사용하여 Kubernetes 클러스터에 두 개의 Nginx 인스턴스를 설치했다고 가정해 보겠습니다. 나중에 첫 번째 Nginx 인스턴스만 업그레이드하고 두 번째는 업그레이드하지 않기로 결정합니다. 두 릴리스가 서로 다르기 때문에 두 번째 릴리스에 영향을 주지 않고 첫 번째 릴리스를 업그레이드할 수 있습니다.

Helm 리포지토리란?

Helm 리포지토리는 Helm 차트에 정보를 저장하는 전용 HTTP 서버입니다. 서버는 차트와 각 차트를 다운로드할 위치를 설명하는 파일을 호스트합니다.

A diagram shows the communication between three Helm components to create a Helm release: the client, chart, and repository. The repository is highlighted.

Helm 프로젝트는 여러 공용 차트를 호스트하며, 차트를 다시 사용할 수 있는 여러 리포지토리가 있습니다. Helm 리포지토리는 Helm 패키지의 검색 가능성 및 재사용을 간소화합니다.

Helm 사용의 이점

Helm은 클라우드 네이티브 애플리케이션의 개발 및 배포 수명 주기에서 애플리케이션 배포를 간소화하고 생산성을 높이는 다양한 이점이 있습니다. Helm을 사용하면 다음과 같은 애플리케이션 릴리스가 제공됩니다.

  • 반복
  • 신뢰할 수 있는
  • 다중 및 복잡한 환경에서 관리 가능 및
  • 여러 개발 팀에서 재사용 가능

Helm 차트는 설정된 입력 값으로 매개 변수화된 패키지된 템플릿 논리를 사용하여 애플리케이션의 배포를 표준화합니다. 이 템플릿 기반 패키지 디자인은 클라우드 네이티브 애플리케이션을 배포하고 공유하는 환경에 구애받지 않는 접근 방식을 제공합니다.