04. Week4 Helm (미진행) - chuirang/DevOps GitHub Wiki

yaml one more time

yaml 과 kubernetes -> spec 과 status

Helm

The package manager for Kubernetes

background

yaml 지옥

애플리케이션을 위해 여러개의 yaml 필요 (Deployment, hpa, service, configmap, etc)

이러한 애플리케이션이 여러 개 라면?

-> 애플리케이션을 package 개념으로 관리 (chart) _ 최근 다양한 오픈소스는 간단한 설치를 위해 helm chart 를 제공

애플리케이션 빌드에 따른 버저닝, 환경별 yaml 수정 필요

image update를 명령형이 아닌 선언형으로, yaml을 수정해야 한다면?

하나의 애플리케이션이 여러개의 환경에 실행되야 한다면?

-> templating Engine (1) define a common blueprint (2) Dynamic values are replaced by placeholders

Helm illustrated

helm illustrated

architecture

Helm2

helm v2

출처: https://developer.ibm.com/blogs/kubernetes-helm-3/

Helm3

helm v3

출처: https://developer.ibm.com/blogs/kubernetes-helm-3/

terminology

helm (client) : 사용자 CLI 바이너리

tiller : helm client의 요청을 받아 apiserver 로 REST 요청을 전달하는 서버 역할 (Helm v2에서만 사용되며, Helm v3에서는 helm client 가 직접 apiserver로 요청 전달)

chart: 애플리케이션을 구성하는 Kubernetes 객체 정의 및 설정의 묶음

release: Kubernetes 위에 배포된 애플리케이션

Helm Chart Structure

chart 만들기

wonkilee.lee@u2004-master:~/04_helm$ helm create my-nginx
Creating my-nginx
wonkilee.lee@u2004-master:~/04_helm$ ls
my-nginx
wonkilee.lee@u2004-master:~/04_helm$ cd my-nginx
wonkilee.lee@u2004-master:~/04_helm/my-nginx$ tree .
.
┌── charts
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── NOTES.txt
│   ├── serviceaccount.yaml
│   ├── service.yaml
│   └── tests
│       └── test-connection.yaml
└── values.yaml

chart 구조

mychart directory : name of chart

Chart.yaml : metadata of chart

values.yaml : (default) values for the template files (helm install --values=dev-values.yaml )

charts/ directory : chart dependencies

templates/ : template files

Helm Command

CI/CD with Helm

⚠️ **GitHub.com Fallback** ⚠️