Helm
https://github.com/helm/charts
Table of Contents
Install
Repository 를 통한 설치
- Repository 추가
\xE2
▒ helm repo add stable https://kubernetes-charts.storage.googleapis.com/
▒ helm repo update
- chart 검색 및 설치
# 검색
▒ helm search repo nginx
stable/nginx-ingress 1.33.5 0.30.0 An nginx Ingress controller that uses ConfigMap...
stable/nginx-ldapauth-proxy 0.1.3 1.13.5 nginx proxy with ldapauth
stable/nginx-lego 0.3.1 Chart for nginx-ingress-controller and kube-lego
stable/gcloud-endpoints 0.1.2 1 DEPRECATED Develop, deploy, protect and monitor...
# 설치
▒ helm install nginx-devel stable/nginx-ingress
# 조회
▒ helm list
Chart 파일 (.tgz) 지정 설치
▒ helm install release-devel https://raw.githubusercontent.com/itnpeople/k8s.docs/master/charts/httpbin-devel.tgz
Github을 Repository로 구성하기
- helm chart의 tgz 파일 생성 helm package
▒ helm package <CHART_PATH> # packaging (tgz file 생성)
- index.yaml 생성/ 수정
▒ helm repo index .
# Url 지정하는 경우
▒ helm repo index --url "https://itnpeople.github.io/helmcharts" .
- 생성한 index.yaml, tgz 파일 push
▒ git add .
▒ git commit -m "feat : Helm Chart"
▒ git push origin master
Development
Install 정상동작 여부 확인
--dry-run
,--debug
옵션 사용
▒ helm install --dry-run --debug release-devel . --set service.internalPort=8080
Yaml로 출력해보기
▒ helm template --debug release-devel . --set service.internalPort=8080
Template - default value
persistentVolumeClaim:
claimName: { { default "acornsoft-dashboard-metrics-scraper" .Values.metricsScraper.persistence.existingClaim } }
Accessing Files Inside Templates
- 공식문서 : https://helm.sh/docs/chart_template_guide/accessing_files
- 사용예 : https://github.com/bitnami/charts/blob/master/bitnami/influxdb/templates/influxdb/configmap.yaml
data:
app-conf.yaml: |-
{ { .Files.Get "files/conf/app-config.yaml" | indent 4 } }
{ {- $files := .Files } }
{ {- range tuple "config1.toml" "config2.toml" "config3.toml" } }
{ { . } }: |-
{ { $files.Get . } }
{ {- end } }
data:
{ { (.Files.Glob "files/conf/influxdb.conf").AsConfig | indent 2 } }
Sub-chart
Chart.yaml(recommended, 또는 requirements.yaml)
dependencis
속성에 지정된 dependency charts
- list : https://helm.sh/docs/helm/helm_dependency_list/
- build : https://helm.sh/docs/helm/helm_dependency_build/
- update : https://helm.sh/docs/helm/helm_dependency_update/
▒ helm dep list # dependency 리스트 와 상태 조회
▒ helm dep build # dependency sub-chart charts 빌드
▒ helm dep up # dependency sub-chart charts 업데이트
Sub-chart 에 대한 속성 지정
-
values.yaml
파일에 Hierarchy 구조로 지정 가능 -
아래는 sub-chart로 정의된
grafana
chart의testFramework.enabled
Configuration 속성 값을false
로 지정하는 예제
# Chart.yaml
dependencies:
- name: grafana
version: ~5.0.25
repository: "https://kubernetes-charts.storage.googleapis.com"
condition: grafana.enabled
# values.yaml
grafana:
enabled: true
testFramework:
enabled: false
Hook
https://helm.sh/ko/docs/topics/charts_hooks/
-
릴리스 수명주기의 특정 지점에 동작 처리 (전처리, 후처리)
- pre-install, post-install
- pre-delete, post-delete
- pre-upgrade, post-upgrade
- pre-rollback, post-rollback
- test
posted at 2022/03/18 09:42