Helm 설치

Helm 설치

Helm CLI를 설치하고 실행하는 방법에 대한 가이드입니다.

출처: 문서

본문

이 가이드는 Helm CLI를 설치하는 방법을 보여줍니다. Helm은 소스에서 또는 미리 빌드된 바이너리 릴리스에서 설치할 수 있습니다.

Helm 프로젝트에서 설치 (From The Helm Project)

Helm 프로젝트는 Helm을 가져와 설치하는 두 가지 공식 방법을 제공합니다. 이것들이 공식적으로 Helm 릴리스를 얻는 방법입니다. 그 외에도 Helm 커뮤니티는 다양한 패키지 매니저를 통해 Helm을 설치하는 방법을 제공합니다. 그러한 방법으로 설치하는 내용은 공식 방법 아래에서 찾을 수 있습니다.

바이너리 릴리스에서 설치 (From the Binary Releases)

모든 Helm 릴리스는 다양한 OS용 바이너리 릴리스를 제공합니다. 이 바이너리 버전들을 수동으로 다운로드하고 설치할 수 있습니다.

  1. 원하는 버전을 다운로드합니다.
  2. 바이너리를 검증합니다. 이 페이지의 Helm 바이너리 검증을 참조하세요.
  3. 압축을 풉니다(tar -zxvf helm-v4.0.0-linux-amd64.tar.gz).
  4. 압축이 풀린 디렉터리에서 helm 바이너리를 찾아 원하는 위치로 이동합니다(mv linux-amd64/helm /usr/local/bin/helm).

그런 다음 클라이언트를 실행하고 설치할 차트를 찾을 수 있어야 합니다: helm help.

참고: Helm 자동화 테스트는 GitHub Actions 빌드/릴리스 중 Linux AMD64에서만 수행됩니다. 다른 OS 테스트는 해당 OS에서 Helm을 요청한 커뮤니티의 책임입니다.

스크립트에서 설치 (From Script)

Helm에는 Helm의 최신 버전을 자동으로 가져와 로컬에 설치하는 설치 스크립트가 있습니다.

이 스크립트를 가져온 다음 로컬에서 실행할 수 있습니다. 실행 전에 읽고 이해할 수 있도록 잘 문서화되어 있습니다.

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-4
chmod 700 get_helm.sh
./get_helm.sh

네, 원한다면 curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-4 | bash 로 실행할 수도 있습니다(위험을 감수한다면).

패키지 매니저를 통해 설치 (Through Package Managers)

Helm 커뮤니티는 운영 체제 패키지 매니저를 통해 Helm을 설치할 수 있게 해줍니다. 이것들은 Helm 프로젝트가 지원하지 않으며 신뢰할 수 있는 제3자로 간주되지 않습니다.

Homebrew에서 (macOS)

Helm 커뮤니티 구성원들이 Homebrew에 Helm formula 빌드를 기여했습니다. 이 formula는 대체로 최신 상태입니다.

brew install helm

(참고: emacs-helm용 formula도 있는데, 이것은 다른 프로젝트입니다.)

Chocolatey에서 (Windows)

Helm 커뮤니티 구성원들이 ChocolateyHelm 패키지 빌드를 기여했습니다. 이 패키지는 대체로 최신 상태입니다.

choco install kubernetes-helm

Scoop에서 (Windows)

Helm 커뮤니티 구성원들이 ScoopHelm 패키지 빌드를 기여했습니다. 이 패키지는 대체로 최신 상태입니다.

scoop install helm

Winget에서 (Windows)

Helm 커뮤니티 구성원들이 WingetHelm 패키지 빌드를 기여했습니다. 이 패키지는 대체로 최신 상태입니다.

winget install Helm.Helm

Apt에서 (Debian/Ubuntu)

Helm 커뮤니티 구성원들이 Debian/Ubuntu용 Apt 패키지를 기여했습니다. 이 패키지는 대체로 최신 상태입니다. 리포지토리를 호스팅해 준 Buildkite에 감사드립니다.

HELM_BUILDKITE_APT_KEY_ID="DDF78C3E6EBB2D2CC223C95C62BA89D07698DBC6"

sudo apt-get install curl gpg apt-transport-https --yes

curl -fsSL https://packages.buildkite.com/helm-linux/helm-debian/gpgkey > "${TMPDIR:-/tmp}/helm.gpg"

# Ensure that the key ID matches to prevent a repository compromise from establishing an attacker controlled key
if [ "$(gpg --show-keys --with-colons "${TMPDIR:-/tmp}/helm.gpg" | awk -F: '$1 == "fpr" {print $10}' | head -n 1)" != "${HELM_BUILDKITE_APT_KEY_ID}" ]; then echo "ERROR: Unexpected Helm APT key ID: potential key compromise"; exit 1; fi

cat "${TMPDIR:-/tmp}/helm.gpg" | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/helm.gpg] https://packages.buildkite.com/helm-linux/helm-debian/any/ any main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list

sudo apt-get update
sudo apt-get install helm

dnf/yum에서 (fedora)

Fedora 35부터 Helm은 공식 리포지토리에서 사용할 수 있습니다. Helm은 다음을 실행해 설치할 수 있습니다.

sudo dnf install helm

Snap에서

Snapcrafters 커뮤니티가 Helm 패키지의 Snap 버전을 유지보수합니다.

sudo snap install helm --classic

pkg에서 (FreeBSD)

FreeBSD 커뮤니티 구성원들이 FreeBSD Ports CollectionHelm 패키지 빌드를 기여했습니다. 이 패키지는 대체로 최신 상태입니다.

pkg install helm

개발 빌드 (Development Builds)

다운로드하거나 설치할 수 있는 릴리스 외에도 Helm의 개발 스냅샷을 사용할 수 있습니다.

Canary 빌드에서 (From Canary Builds)

"Canary" 빌드는 최신 main 브랜치에서 빌드된 Helm 소프트웨어 버전입니다. 이들은 공식 릴리스가 아니며 안정적이지 않을 수 있습니다. 하지만 최첨단 기능을 테스트할 기회를 제공합니다.

Canary Helm 바이너리는 get.helm.sh에 저장됩니다. 일반적인 빌드 링크는 다음과 같습니다.

소스에서 (Linux, macOS)

소스에서 Helm을 빌드하는 것은 조금 더 많은 작업이 필요하지만, 최신 Helm 버전을 테스트하려면 가장 좋은 방법입니다.

동작하는 Go 환경이 있어야 합니다.

git clone https://github.com/helm/helm.git
cd helm
make

필요하면 의존성을 가져와 캐시하고 구성을 검증합니다. 그런 다음 helm을 컴파일해 bin/helm에 배치합니다.

Helm 바이너리 검증 (Verifying Helm Binaries)

각 Helm 릴리스는 바이너리가 Helm 유지보수자가 빌드하고 서명했음을 확인하는 암호화 서명을 포함합니다. 공급망 공격으로부터 보호하기 위해 설치 전에 항상 Helm 바이너리의 진위를 검증해야 합니다.

get.helm.sh에 게시된 릴리스 자산(CDN을 통해 제공)은 GitHub 릴리스가 게시된 후 일반적으로 변경될 수 없습니다. 그러나 공급망은 여러 구성 요소(CDN, 호스팅 인프라 등)를 포함하므로 이전 버전이나 고정된 버전에서도 서명 검증이 중요합니다.

요구 사항 (Requirements)

Helm 바이너리를 검증하려면 다음이 필요합니다.

  • 바이너리 아카이브(예: helm-v4.0.0-linux-amd64.tar.gz)
  • 해당 서명 파일(예: helm-v4.0.0-linux-amd64.tar.gz.asc)
  • Helm 유지보수자의 공개 PGP 키

검증 단계 (Verification Steps)

Helm 바이너리를 검증하려면:

  1. SHA256 체크섬을 검증해 다운로드가 손상되지 않았는지 확인합니다. 예:

    $ sha256sum -c helm-v4.0.0-linux-amd64.tar.gz.sha256sum
    helm-v4.0.0-linux-amd64.tar.gz: OK
    
  2. Helm 유지보수자의 공개 키를 가져옵니다:

    $ curl https://raw.githubusercontent.com/helm/helm/main/KEYS | gpg --import
    

    :::note Helm 바이너리를 검증할 때마다 Helm 리포지토리에서 키를 가져오는 것을 피하세요. 대신 키를 한 번 가져와서 자신이 제어하는 안전한 위치에 저장하세요. 이렇게 하면 리포지토리가 손상되어 키가 교체된 경우에도 로컬 사본으로 변조를 감지할 수 있습니다.

    또한 Helm 유지보수자들이 신원과 PGP 키를 연결하는 프로필을 가진 Keybase에서 유지보수자 키를 교차 확인할 수도 있습니다. :::

  3. 바이너리의 서명을 검증합니다. 예:

    $ gpg --verify helm-v4.0.0-linux-amd64.tar.gz.asc helm-v4.0.0-linux-amd64.tar.gz
    gpg: Signature made [date] using RSA key ID [key-id]
    gpg: Good signature from "Helm Maintainer <[email protected]>"
    

    "Good signature" 메시지는 바이너리가 진짜이며 변조되지 않았음을 확인합니다.

    :::note 공개 키의 신뢰할 수 있는 사본을 갖고 있다면 서명 파일을 업스트림에서 가져와도 안전합니다. 공격자는 개인 키(합법적인 유지보수자만 가짐) 없이는 유효한 서명을 위조할 수 없습니다. :::

FAQ

Fedora나 다른 Linux 배포판용 기본 패키지가 왜 없나요?

Helm 프로젝트는 운영 체제와 환경용 패키지를 유지보수하지 않습니다. Helm 커뮤니티가 네이티브 패키지를 제공할 수 있으며, Helm 프로젝트가 알게 되면 나열됩니다. Homebrew formula도 이렇게 시작되어 나열되었습니다. 패키지를 유지보수하는 데 관심이 있다면 환영합니다.

curl ...|bash 스크립트를 제공하나요?

저장소에 curl ..|bash 스크립트로 실행할 수 있는 스크립트(scripts/get-helm-4)가 있습니다. 모든 전송은 HTTPS로 보호되며, 스크립트는 가져오는 패키지를 일부 감사합니다. 그러나 스크립트는 다른 셸 스크립트와 마찬가지로 일반적인 위험이 있습니다.

유용하기 때문에 제공하지만, 사용자가 먼저 스크립트를 신중히 읽어볼 것을 권합니다. 그리고 우리가 정말 원하는 것은 Helm의 더 나은 패키징 릴리스입니다.

Helm 클라이언트 파일을 기본 위치가 아닌 다른 곳에 두려면 어떻게 하나요?

Helm은 파일 저장에 XDG 구조를 사용합니다. 이러한 위치를 재정의하는 데 사용할 수 있는 환경 변수가 있습니다.

  • $XDG_CACHE_HOME: 캐시 파일 저장을 위한 대체 위치 설정.
  • $XDG_CONFIG_HOME: Helm 구성 저장을 위한 대체 위치 설정.
  • $XDG_DATA_HOME: Helm 데이터 저장을 위한 대체 위치 설정.

기존 리포지토리가 있다면 helm repo add...로 다시 추가해야 합니다.

로컬 Helm을 삭제하고 싶습니다. 파일이 모두 어디에 있나요?

helm 바이너리와 함께 Helm은 다음 위치에 일부 파일을 저장합니다.

  • $XDG_CACHE_HOME
  • $XDG_CONFIG_HOME
  • $XDG_DATA_HOME

다음 표는 OS별 이 각각의 기본 폴더를 보여줍니다.

Operating System Cache Path Configuration Path Data Path
Linux $HOME/.cache/helm $HOME/.config/helm $HOME/.local/share/helm
macOS $HOME/Library/Caches/helm $HOME/Library/Preferences/helm $HOME/Library/helm
Windows %TEMP%\helm %APPDATA%\helm %APPDATA%\helm

결론

대부분의 경우 설치는 미리 빌드된 helm 바이너리를 얻는 것만큼 간단합니다. 이 문서는 Helm으로 더 정교한 일을 하고 싶은 사람들을 위한 추가 사례를 다룹니다.

Helm 클라이언트가 성공적으로 설치되면 Helm으로 차트를 관리하고 설치할 차트를 찾는 단계로 넘어갈 수 있습니다.

더 알아보기 (Learn more)