ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Helm] Helm 설치
    공부/쿠버네티스&헬름 2025. 3. 3. 23:11

    Helm 설치

    Helm(이하 헬름)을 성공적으로 설치하려면 다음과 같은 전제 조건이 필요합니다.

    1. 쿠버네티스 클러스터
    2. 설치를 위해 어떤 보안 구성을 사용할 것인지 결정하기(필요시)
    3. 헬름 설치 및 구성

    맥OS 기준으로 설치는 homebrew를 사용하면 간단합니다.

    $ brew install helm

    Helm 사용하기

    주요 개념 3가지

    Helm은 쿠버네티스 애플리케이션의 패키지 관리 도구로 다음 세 가지 핵심 개념을 중심으로 작동합니다.

    1. 차트 (Chart)
    • 쿠버네티스 애플리케이션을 구성하는 모든 리소스 정의(YAML 파일)를 담고 있는 패키지
    • 쿠버네티스에서의 Homebrew 포뮬러, Apt dpkg, YUM RPM 파일과 유사하게 애플리케이션 배포에 필요한 모든 요소를 묶어 제공
    1. 저장소 (Repository)
    • Helm 차트를 모아두고 공유하는 저장소
    • Perl의 CPAN 아카이브나 페도라 패키지 데이터베이스처럼 쿠버네티스 패키지들을 관리하고 제공하는 역할
    1. 릴리스 (Release)
    • 쿠버네티스 클러스터에 설치된 차트의 인스턴스
    • 하나의 차트를 여러 번 설치하여 동일한 클러스터 내에 여러 인스턴스를 생성할 수 있으며 각 설치는 고유한 릴리스 이름을 가짐
      • 예를 들어, MySQL 차트를 두 번 설치하면 두 개의 릴리스가 생성되어 각각 별도의 MySQL 데이터베이스 인스턴스를 운영할 수 있음

    명령어

    helm search: 차트 찾기

    Helm은 강력한 검색 명령어를 제공하여 사용자가 원하는 Helm 차트를 쉽게 찾을 수 있도록 돕습니다. Helm 검색 명령어는 크게 두 가지 소스를 검색할 수 있습니다.

    1. helm search hub
    • Helm Hub 검색
      • 여러 Helm 저장소에 있는 차트를 포괄적으로 검색하는 명령어
      • 다양한 공개 Helm 차트를 한 번에 검색하여 원하는 차트를 찾을 수 있음
    $ helm search hub wordpress
    URL                                                   CHART VERSION    APP VERSION    DESCRIPTION
    https://hub.helm.sh/charts/bitnami/wordpress          7.6.7            5.2.4          Web publishing platform for building blogs and ...
    https://hub.helm.sh/charts/presslabs/wordpress-...    v0.6.3           v0.6.3         Presslabs WordPress Operator Helm Chart
    https://hub.helm.sh/charts/presslabs/wordpress-...    v0.7.1           v0.7.1         A Helm chart for deploying a WordPress site on ...

    위와 같이 하면 헬름 허브에서 모든 wordpress 차트를 찾습니다. 만약 필터 없이 helm search hub을 실행하면 사용 가능한 모든 차트를 보여줍니다.

    1. helm search repo
    • 로컬 저장소 검색:
      • helm repo add 명령어를 사용하여 로컬 Helm 클라이언트에 추가된 저장소를 검색하는 명령어
      • 로컬에 저장된 데이터베이스를 기반으로 검색하므로 인터넷 연결 없이도 빠르게 검색할 수 있음
      • 자신이 추가한 저장소에서만 검색이 가능
    $ helm repo add brigade https://brigadecore.github.io/charts
    "brigade" has been added to your repositories
    $ helm search repo brigade
    NAME                            CHART VERSION    APP VERSION    DESCRIPTION
    brigade/brigade                 1.3.2            v1.2.1         Brigade provides event-driven scripting of Kube...
    brigade/brigade-github-app      0.4.1            v0.2.1         The Brigade GitHub App, an advanced gateway for...
    brigade/brigade-github-oauth    0.2.0            v0.20.0        The legacy OAuth GitHub Gateway for Brigade
    brigade/brigade-k8s-gateway     0.1.0                           A Helm chart for Kubernetes
    brigade/brigade-project         1.0.0            v1.0.0         Create a Brigade project
    brigade/kashti                  0.4.0            v0.4.0         A Helm chart for Kubernetes

    helm repo add: 로컬에 저장소 추가

    helm repo add 명령어는 새로운 Helm 저장소를 로컬 Helm 클라이언트에 추가하는 데 사용됩니다. 이를 통해 사용자는 특정 저장소에서 차트를 검색하고 설치할 수 있습니다. 명령어 형식은 helm repo add [저장소 이름] [저장소 URL] 로 사용합니다. 추가된 저장소는 helm search repo 명령어를 사용하여 검색할 수 있습니다.

    helm install: 패키지 설치

    helm install 명령어는 Helm 차트를 쿠버네티스 클러스터에 설치하는 데 사용됩니다. 이 명령어는 차트를 다운로드하고 필요한 쿠버네티스 리소스를 생성하여 애플리케이션을 배포합니다. 명령어 형식은 helm install [릴리스 이름] [차트 이름] 입니다. 릴리스 이름은 설치된 차트의 인스턴스를 식별하는 데 사용되며 차트 이름은 설치할 차트를 지정합니다.

    helm install 명령어를 사용하여 여러 소스에서 설치를 수행할 수 있습니다.

    • 차트 저장소
      • helm install happy-panda stable/mariadb
    • 로컬 차트 압축파일
      • helm install foo foo-0.1.1.tgz
    • 압축해제된 차트 디렉토리
      • helm install foo path/to/foo
    $ helm install happy-panda stable/mariadb
    Fetched stable/mariadb-0.3.0 to /Users/mattbutcher/Code/Go/src/helm.sh/helm/mariadb-0.3.0.tgz
    happy-panda
    Last Deployed: Wed Sep 28 12:32:28 2016
    Namespace: default
    Status: DEPLOYED
    
    Resources:
    ==> extensions/Deployment
    NAME                     DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    happy-panda-mariadb   1         0         0            0           1s
    
    ==> v1/Secret
    NAME                     TYPE      DATA      AGE
    happy-panda-mariadb   Opaque    2         1s
    
    ==> v1/Service
    NAME                     CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
    happy-panda-mariadb   10.0.0.70    <none>        3306/TCP   1s
    
    Notes:
    MariaDB can be accessed via port 3306 on the following DNS name from within your cluster:
    happy-panda-mariadb.default.svc.cluster.local
    
    To connect to your database run the following command:
    
       kubectl run happy-panda-mariadb-client --rm --tty -i --image bitnami/mariadb --command -- mysql -h happy-panda-mariadb

    위 코드는 helm install 명령어를 사용하여 MariaDB 차트를 설치하면 새로운 릴리스 오브젝트가 생성됩니다. 릴리스 이름은 사용자가 지정하거나 -generate-name 옵션을 사용하여 Helm이 자동으로 생성하도록 할 수 있습니다. 예시에서 릴리스의 이름은 happy-panda입니다.

    Helm 클라이언트는 설치 과정에서 생성되는 리소스, 릴리스 상태, 추가 설정 단계 등 유용한 정보를 출력합니다. Helm은 모든 리소스가 완전히 실행될 때까지 기다리지 않습니다. 많은 차트가 대용량 Docker 이미지를 필요로 하므로, 설치 완료까지 상당한 시간이 소요될 수 있습니다.

    helm upgrade 및 helm rollback: 릴리스 업그레이드 및 실패 복구

    새로운 버전의 차트가 릴리스되었을 때나 릴리스의 구성을 변경하고자 할 때, helm upgrade 명령어를 사용할 수 있습니다.

    업그레이드는 현존하는 릴리스를 가지고 사용자가 입력한 정보에 따라 업그레이드합니다. 쿠버네티스 차트는 크고 복잡할 수 있기 때문에 헬름은 최소한의 개입으로 업그레이드를 수행하려고 합니다. 최근 릴리스 이후로 변경된 것들만 업데이트하게 됩니다.

    $ helm upgrade -f panda.yaml happy-panda stable/mariadb
    Fetched stable/mariadb-0.3.0.tgz to /Users/mattbutcher/Code/Go/src/helm.sh/helm/mariadb-0.3.0.tgz
    happy-panda has been upgraded. Happy Helming!
    Last Deployed: Wed Sep 28 12:47:54 2016
    Namespace: default
    Status: DEPLOYED
    ...

    위의 경우, happy-panda 릴리스의 차트가 업그레이드되는데 새 YAML 파일도 반영됩니다.

    mariadbUser: user1

    helm get values를 사용하여 새로운 설정이 적용되었는지 확인해 볼 수 있습니다.

    $ helm get values happy-panda
    mariadbUser: user1

    helm get 명령어는 클러스터에서 릴리스 정보를 확인할 때 유용한 도구입니다. 위의 예에서 panda.yaml의 새로운 값이 클러스터에 배포되었음을 확인할 수 있습니다.

    릴리스가 계획대로 되지 않는다면 helm rollback [RELEASE] [REVISION]를 사용하여 이전 릴리스로 간단히 롤백할 수 있습니다.

    $ helm rollback happy-panda 1

    위와 같이 하면 happy-panda가 맨 첫번째 릴리스 버전으로 롤백됩니다. 릴리스 버전은 증분 리비전(incremental revision)을 나타냅니다. 설치, 업그레이드, 롤백 등이 실행될 때마다 리비전 번호는 1씩 증가합니다. 첫 번째 리비전 번호는 항상 1이며 특정 릴리스의 리비전 번호를 확인하기 위해서는 helm history [RELEASE]를 사용할 수 있습니다.

    레퍼런스

    https://helm.sh/ko/docs/intro/quickstart/

    https://helm.sh/ko/docs/intro/using_helm/

    https://helm.sh/ko/docs/chart_template_guide/getting_started/

    댓글