HELM

둥냥둥냥둥·2024년 1월 9일
0
post-thumbnail

Helm


Helm 이란

Helm은 Kubernetes 어플리케이션을 패키징하고 배포하기 위한 오픈소스 도구이다. Helm은 "차트"라고 불리는 패키지로 구성되며, 이러한 차트들은 Kubernetes 자원들을 설명하는데 사용된다. 간단히 말해, Helm은 Kubernetes 애플리케이션을 구성하고 배포하기 위한 패키지 매니저로 볼 수 있다.

Helm 공식 사이트


Helm에는 세 가지 중요한 개념

  • 차트 는 Kubernetes 애플리케이션의 인스턴스를 생성하는 데 필요한 정보 묶음이다.
  • 구성 에는 릴리스 가능한 개체를 생성하기 위해 패키지 차트에 병합할 수 있는 구성 정보가 포함되어 있다.
  • 릴리스 는 특정 구성 과 결합되어 실행 중인 차트 인스턴스이다.

목적

Helm은 차트 라는 Kubernetes 패키지를 관리하기 위한 도구이다.

  • 처음부터 새 차트 만들기
  • 차트를 차트 아카이브(tgz) 파일로 패키징
  • 차트가 저장된 차트 저장소와 상호 작용
  • 기존 Kubernetes 클러스터에 차트 설치 및 제거
  • Helm과 함께 설치된 차트의 릴리스 주기를 관리합니다.

구성요소

  • 지역 차트 개발
  • 저장소 관리
  • 릴리스 관리
  • Helm 라이브러리와의 인터페이스
    • 설치할 차트 보내기
    • 기존 릴리스의 업그레이드 또는 제거 요청

설치

Script에서 설치

$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3

$ chmod 700 get_helm.sh

$ ./get_helm.sh

설치 확인
helm version


자주 사용

"repo" 관련 명령어

  • helm repo add <repository_name> <repository_url> : 새로운 차트 리포지토리를 추가합니다.
  • helm repo list : 현재 구성된 차트 리포지토리 목록을 표시합니다.
  • helm repo update : 구성된 모든 차트 리포지토리를 업데이트합니다.
  • helm repo remove <repository_name> : 지정된 차트 리포지토리를 제거합니다

"pull", "install", "uninstall"

  • helm pull <chart_name> : 차트를 로컬로 다운로드합니다.
  • helm install <release_name> <chart_name> : 지정된 차트를 K8s 클러스터에 설치하여 배포합니다.
  • helm uninstall <release_name> : 특정 배포를 삭제하고 차트를 제거합니다.
  • helm list : 현재 배포된 차트의 목록을 표시합니다.

chart 검색

  • helm search hub
  • helm search repo

저장소 등록

  • helm repo add 저장소_주소

패키지 설치

  • helm install <release명> <저장소명> 또는 <URL>

변수(옵션) 확인 및 변경

  • helm show values <저장소명> > 파일명
    변수(옵션) 수정 후 설치시 적용 가능
helm install -f 수정파일명 <저장소명> --generate-name

목록 확인

  • heml list / helm repo list

helm help 번역

주요 작업

  • helm search: 차트를 검색합니다
  • helm pull: 로컬 디렉터리로 차트를 다운로드하여 볼 수 있도록 합니다
  • helm install: 차트를 Kubernetes에 업로드합니다
  • helm list: 차트의 배포 목록을 표시합니다

환경 변수

환경 변수설명
$HELM_CACHE_HOME캐시 파일을 저장하는 대체 위치를 설정합니다
$HELM_CONFIG_HOMEHelm 구성을 저장하는 대체 위치를 설정합니다
$HELM_DATA_HOMEHelm 데이터를 저장하는 대체 위치를 설정합니다
$HELM_DEBUGHelm이 디버그 모드에서 실행 중인지 여부를 나타냅니다
$HELM_DRIVER백엔드 스토리지 드라이버를 설정합니다. 값은 configmap, secret, memory, sql 등이 있습니다
$HELM_DRIVER_SQL_CONNECTION_STRINGSQL 스토리지 드라이버에 대한 연결 문자열을 설정합니다
$HELM_MAX_HISTORYhelm 릴리스 히스토리의 최대 개수를 설정합니다
$HELM_NAMESPACEHelm 작업에 사용할 네임스페이스를 설정합니다
$HELM_NO_PLUGINS플러그인을 비활성화합니다. 플러그인을 비활성화하려면 HELM_NO_PLUGINS=1로 설정합니다
$HELM_PLUGINS플러그인 디렉터리 경로를 설정합니다
$HELM_REGISTRY_CONFIG레지스트리 구성 파일 경로를 설정합니다
$HELM_REPOSITORY_CACHE리포지토리 캐시 디렉터리 경로를 설정합니다
$HELM_REPOSITORY_CONFIG리포지토리 파일 경로를 설정합니다
$KUBECONFIG대체 Kubernetes 구성 파일의 경로를 설정합니다 (기본값 "~/.kube/config")
$HELM_KUBEAPISERVER인증을 위한 Kubernetes API 서버 엔드포인트를 설정합니다
$HELM_KUBECAFILEKubernetes 인증서 기관 파일을 설정합니다
$HELM_KUBEASGROUPS쉼표로 구분된 사용할 그룹을 설정하여 가장 위임을 사용합니다
$HELM_KUBEASUSER작업에 대한 위임으로 사용할 사용자 이름을 설정합니다
$HELM_KUBECONTEXTkubeconfig 컨텍스트의 이름을 설정합니다
$HELM_KUBETOKEN인증을 위한 Bearer KubeToken을 설정합니다
$HELM_KUBEINSECURE_SKIP_TLS_VERIFYKubernetes API 서버의 인증서 유효성 검사를 건너뛸지 여부를 나타냅니다 (보안 문제가 있을 수 있습니다)
$HELM_KUBETLS_SERVER_NAMEKubernetes API 서버 인증서의 유효성을 검증하는 데 사용할 서버 이름을 설정합니다
$HELM_BURST_LIMIT서버에 많은 CRD가 있는 경우의 기본 버스트 제한을 설정합니다 (기본값 100, -1은 비활성화를 의미합니다)

디렉터리 구성:

운영 체제캐시 경로구성 경로데이터 경로
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 [command]

사용 가능한 명령어

  • completion: 지정된 쉘에 대한 자동완성 스크립트 생성
  • create: 지정한 이름으로 새 차트 생성
  • dependency: 차트의 종속성 관리
  • env: Helm 클라이언트 환경 정보
  • get: 지정된 배포의 확장 정보 다운로드
  • help: 특정 명령어에 대한 도움말
  • history: 배포 히스토리 가져오기
  • install: 차트 설치
  • lint: 가능한 이슈를 검사하는 차트 검사
  • list: 배포 목록 표시
  • package: 차트 디렉터리를 차트 아카이브로 패키지화
  • plugin: Helm 플러그인 설치, 목록, 제거
  • pull: 리포지토리에서 차트 다운로드 (옵션으로 로컬 디렉터리에 압축 해제)
  • push: 차트를 원격으로 푸시
  • registry: 레지스트리 로그인 또는 로그아웃
  • repo: 차트 리포지토리 추가, 목록, 제거, 업데이트, 색인
  • rollback: 이전 버전으로 배포 롤백
  • search: 차트에서 키워드 검색
  • show: 차트 정보 표시
  • status: 지정된 배포 상태 표시
  • template: 로컬로 템플릿 렌더링
  • test: 배포 테스트 실행
  • uninstall: 배포 제거
  • upgrade: 배포 업그레이드
  • verify: 주어진 경로의 차트가 서명되었고 유효한지 확인
  • version: 클라이언트 버전 정보 출력

플래그

  • --burst-limit int: 클라이언트 사이드 기본 쓰로틀링 제한 (기본값 100)
  • --debug: 자세한 출력 활성화
  • -h, --help: 도움말
  • --kube-apiserver string: Kubernetes API 서버의 주소와 포트
  • --kube-as-group stringArray: 작업 위임을 위해 사용할 그룹, 여러 그룹을 지정하려면 해당 플래그를 반복해서 사용
  • --kube-as-user string: 작업 위임을 위해 사용할 사용자 이름
  • --kube-ca-file string: Kubernetes API 서버 연결을 위한 인증서 기관 파일
  • --kube-context string: 사용할 kubeconfig 컨텍스트 이름
  • --kube-insecure-skip-tls-verify: true인 경우 Kubernetes API 서버의 인증서 유효성 검사를 건너뜀 (HTTPS 연결이 무효화됨)
  • --kube-tls-server-name string: Kubernetes API 서버 인증서 유효성 검증에 사용할 서버 이름
  • --kube-token string: 인증에 사용할 Bearer KubeToken
  • --kubeconfig string: kubeconfig 파일 경로
  • -n, --namespace string: 이 요청의 네임스페이스 범위
  • --registry-config string: 레지스트리 구성 파일 경로
    (기본값 "/home/k8s-ksu/.config/helm/registry/config.json")
  • --repository-cache string: 캐시된 리포지토리 인덱스 파일 경로
    (기본값 "/home/k8s-ksu/.cache/helm/repository")
  • --repository-config string: 리포지토리 이름 및 URL이 포함된 파일 경로
    (기본값 "/home/k8s-ksu/.config/helm/repositories.yaml")
profile
Java 먹자

0개의 댓글