# 가장 빠른 설치 및 사용 예시
# helm CLI 설치
❯ brew install helm
❯ helm version
version.BuildInfo{Version:"v3.8.2", GitCommit:"6e3701edea09e5d55a8ca2aae03a68917630e91b", GitTreeState:"clean", GoVersion:"go1.18.1"}
# 차트에 대한 repo 추가
❯ helm repo add bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories
# 검색
❯ helm search repo bitnami | grep nginx
bitnami/nginx 10.2.1 1.21.6 NGINX Open Source is a web server that can be a...
bitnami/nginx-ingress-controller 9.1.27 1.2.0 NGINX Ingress Controller is an Ingress controll...
bitnami/nginx-intel 1.0.5 0.4.7 NGINX Open Source for Intel is a lightweight se...
# 적용
❯ helm install helm-nginx bitnami/nginx
NAME: helm-nginx
LAST DEPLOYED: Mon May 9 22:49:20 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: nginx
CHART VERSION: 10.2.1
APP VERSION: 1.21.6
# k8s에 배포된 목록 확인
❯ helm ls
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
helm-nginx default 1 2022-05-09 22:49:20.559748444 +0900 KST deployed nginx-10.2.1 1.21.6
# 예시 - wordpress에 대한 helm chart 구조
wordpress/
Chart.yaml # 차트에 대한 정보를 가진 YAML 파일
values.yaml # 차트에 대한 기본 환경설정 값들
charts/ # 이 차트에 종속된 차트들을 포함하는 디렉터리
crds/ # 커스텀 자원에 대한 정의
templates/ # values와 결합될 때, 유효한 쿠버네티스 manifest 파일들이 생성될 템플릿들의 디렉터리


위처럼 helm CLI와 values.yaml만 있는 경우엔 실제 관리가 어려울 수 있음.
helm Operator를 적용하면 helm chart를 선언적으로 관리할 수 있음.

apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: podinfo
namespace: default
spec:
interval: 5m
chart:
spec:
chart: <name|path>
version: 6.0.2
sourceRef:
kind: <HelmRepository|GitRepository|Bucket>
name: podinfo
namespace: flux-system
interval: 1m
values: # podinfo에 대한 values 파일 내용 정의
replicaCount: 5
logLevel: debug
service:
enabled: true
annotations: {}
type: ClusterIP
metricsPort: 9797
httpPort: 9898
externalPort: 9898
grpcPort: 9999
grpcService: podinfo
nodePort: 31198
redis:
enabled: false
repository: redis
tag: 6.0.8

