일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Ansible
- ceph
- kolla
- HTML
- Linux
- ceph-ansible
- k8s
- grafana-loki
- i3
- Arch
- ubuntu
- Kubernetes
- libvirt
- yum
- kolla-ansible
- Kubeflow
- port open
- archlinux
- pacman
- cephadm
- awx
- Docker
- repository
- golang
- cloud-init
- nfs-provisioner
- OpenStack
- terraform
- KVM
- Octavia
- Today
- Total
YJWANG
Helm Chart 만들기 - 1 본문
Refer to
https://helm.sh/docs/chart_template_guide/
구성
Helm Chart를 만드는 가이드가 위 공식 문서에 잘 나와있다. Helm에서 지정한 Value가 없어도 당연히 아주 간단히 사용할 수있다.
우선 아래 명령어를 통해 Dir를 생성한다.
# helm create mychart
그럼 아래와 같은 Directory가 Sample 파일들과 같이 생성되는데 우선 Templates 내에 있는 파일들은 설명하지 않고 지나가려한다.
[root@ha01-master-1 helm]# tree mychart/
mychart/
├── Chart.yaml
├── charts
├── templates
└── values.yaml
대상 | 설명 |
---|---|
Chart.yaml | 해당 Helm Chart에대한 설명이 기록된다. |
charts | 해당 chart와 관련된 chart들이 위치하는 Dir이다. |
templates | 해당 chart를 install할 때 kubernetes에 배포되는 yaml들이 위치한다. |
values | template에서 사용될 values의 default 값이 지정된 파일로 override 할 수 있다. |
이제 Sample로 templates Dir 아래에 sample configmap yaml을 하나 생성한다.
[root@ha01-master-1 mychart]# cat templates/configmap.yaml
---
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
namespace: default
data:
myvalue: "Hello World"
위에 name을 보면 {{ .Release.Name }}
으로 지정된 부분이 있는데 우선 {{ , }}
는 value를 뜻하며 시작 .
는 최 상단의 value를 뜻한다.
values.yaml 파일에서 직접 지정한 value가 아닌 helm 내에서 미리 지정된 value도 존재하는데 .Release.Name
이 이러한 예시이다.
Helm 문서에서는 built-in objects
로 표현된다.
즉 최상단 Value 하위에 있는 Release Value 하단의 Name 값을 가져오는 것이다. 여기서 해당 Name은 Chart install 시 지정하는 Release Nmae이다.
확인을 위해 yjwang-test1
로 chart를 install 해보자. 아래와 같이 지정한 release name으로 configmap의 name이 binding돼 생성됨을 볼 수 있다.
[root@ha01-master-1 mychart]# helm install yjwang-test ./
NAME: yjwang-test
LAST DEPLOYED: Tue Feb 16 04:13:06 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
[root@ha01-master-1 mychart]# helm ls
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
yjwang-test default 1 2021-02-16 04:13:06.711845422 +0000 UTC deployed mychart-0.1.0 1.16.0
[root@ha01-master-1 mychart]# kubectl get configmaps
NAME DATA AGE
kube-root-ca.crt 1 7d20h
yjwang-test-configmap 1 7s
만약 위와 같이 바로 설치하지 않고 binding 되는 값을 직접 확인해보고싶다면 아래와 같이 하면 볼 수 있다.
[root@ha01-master-1 mychart]# helm install --dry-run yjwang-test ./