1. Kubernetes
1.1 Kubernetes๋?
Kubernetes๋ Google์์ ๋ง๋ ์ปจํ ์ด๋ Orchestration ์์คํ ์ด๋ค. ๋ง์ ํ์ฌ๋ค์ด ๊ธฐ์ฌํ๊ณ ์ฌ์ฉ ํ ์ ์๋๋ก CNCF์ ๊ธฐ๋ถ ๋์๊ณ , ํ์ฌ ์ ์ธ๊ณ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ Orchestration ๊ธฐ์ ์ด๋ค
์๋ ๋ฐฐํฌ ๋ฐ ์ค์ผ์ผ๋ง: ํธ๋ํฝ์ ๋ฐ๋ผ ์ปจํ ์ด๋๋ค์ ์๋์ผ๋ก ์ ์ค์ผ์ผ๋ง ๋๋ ๋ค์ด์ค์ผ์ผ๋ง ํ ์ ์๋ค.์๊ฐ์น์ (self-healing): ์ปจํ ์ด๋๊ฐ ๋ฐ์์ด ์์ด์ง๋ฉด ์๋์ผ๋ก ์๋ก์ด ์ปจํ ์ด๋๋ก ๊ต์ฒดํ๋ค.Load Balancing: ์ฌ๋ฌ ์ปจํ ์ด๋์ ํธ๋ํฝ์ ์๋์ผ๋ก ๋ถ์ฐ์ํจ๋ค.Service Discovery: ๋ณต์กํ ์ ์ฐจ ์์ด ์๋์ผ๋ก ์ปจํ ์ด๋๊ฐ ํต์ ์ ์ ๊ณตํ๋ค.Resource Management: CPU์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ฐฐ๋ถํ์ฌ ํ๋์จ์ด ์ฌ์ฉ์ ์ต์ ํํ๋ค.Rolling Update / Rollback: ๋ค์ดํ์ ์์ด ๋กค๋ง ์ ๋ฐ์ดํธ๋ฅผ ์งํํ๊ณ ์์ฝ๊ฒ ๋กค๋ฐฑ์ ํ ์ ์๋ค
1.2 Kubernetes Node

Kubernetes๊ฐ ์ฌ์ฉ ํ ์ ์๋ ๋ฌผ๋ฆฌ์ ์ธ ์ปดํจํฐ ์์์ Node๋ผ๊ณ ๋ช ์นญํ๋ค.
Node์ ์ข ๋ฅ
Master Node (Control Plane Node): API Server, Scheduler, Controller, Manager ๋ฑ์ด ์คํ๋๊ณ ์์ผ๋ฉฐ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ ํฐ ์ ์ฒด๋ฅผ ํต์ ํ๋ค. Master Node์๋ Pod๋ฅผ ์คํํ์ง ์๋๋ค.Worker Node: ์ฌ์ฉ์๊ฐ ์ ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์ด๋๋ค์ด ์คํ๋๋ Node์ด๋ค
Worker Node์ ๊ตฌ์ฑ
Kubelet: Master Node์ ํต์ ํ๋ ์ญํ ์ ํ๋ค. ์ ํํ ์คํ์ผ๋ก Pod๊ฐ ์คํ๋๊ณ ์๋์ง ํ์ธํ๊ณ Pod๋ค์ ๋ผ์ดํ ์ฌ์ดํด์ ํธ๋กคํ๋ค.Container Runtime: Docker, ContainerD๊ฐ์ ์ปจํ ์ด๋๋ฅผ ์คํํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐํ์์ด๋ค.Kube Proxy: ๊ฐ ๋ ธ๋์ ๋คํธ์ํฌ ๋ฃฐ์ ์ ์ํ๊ณ ์๋คPod:์ฟ ๋ฒ๋คํฐ์ค์์ ์ฌ์ฉํ๋ ์ฉ์ด์ค ๊ฐ์ฅ ์์ ๋จ์์ด๋ค. ํ๋์ Pod์ ์ฌ๋ฌ๊ฐ์ ์ปจํ ์ด๋๊ฐ ์คํ ๋ ์ ์์ผ๋ ๋ณดํต ํ๋์ Po ๋ง ์คํํ๊ฒ ๋๋ค.
1.3 Kubernetes Pod

- Kubernetes Node์๋ Pod๋ฅผ ์คํ ํ ์ ์๋ค.
- Pod๋ Kubernetes์์ ์ฌ์ฉํ๋ ๊ฐ์ฅ ์์ ์ ํ๋ฆฌ์ผ์ด์ ๋จ์์ด๋ค.
1.4 Multiple Kubernetes Pod

- ๋ฆฌ์์ค๋ง ํ๋ฝํ๋ค๋ฉด ์ฌ๋ฌ๊ฐ์ Pod๋ฅผ Node์์ ์คํ ํ ์ ์๋ค. (์ค์ ๋ชฉ์ )
- ์ฌ๋ฌ๊ฐ์ Node์ ๊ท ๋ฑํ๊ฒ ๋๋ ์ค์ ์ ํตํด ํน์ Node์๋ง Pod๊ฐ ์คํ๋๋๋ก ํ ์ ์๋ค.
1.5 Multiple Containers in Pod

- Pod ํ๋์๋ ํ๋์ ์ปจํ ์ด๋๋ฅผ ์คํํ๋๊ฒ ์ผ๋ฐ์ ์ด๋ค.
- ํ์ง๋ง ์ปจํ ์ด๋์ ๋ฐ์ ํ ํต์ ์ ์๊ตฌํ๋ ๊ฒฝ์ฐ Pod์ ์ฌ๋ฌ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ์คํ ํ ์๋ ์๋ค.

- A Pod์ ๋ณด์กฐ ์ญํ ์ ํ๋ B Pod๊ฐ ์กด์ฌํ๋ค๊ณ ๊ฐ์ ํ๋ค๋ฉด A Pod๊ฐ ์์ฑ ๋ ๋๋ง๋ค B Pod๋ฅผ ํญ์ ํจ๊ป ์์ฑํด์ผํ๋ค.
- ๋งค๋ฒ ๋๊ฐ์ Pod๋ฅผ ์คํํ๊ณ ์ญ์ ํ๋ ค๋ฉด ๋งค์ฐ ๋ฒ๊ฑฐ๋ฝ๊ณ Pod๊ฐ์ ํต์ ๋ ์ค์ ํด์ค์ผํ๋ค.
- ๊ทธ๋์ ๋ฐ์ ํ ๊ด๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ ํ๋์ Pod์ ์ฌ๋ฌ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ์คํํ๋ค
1.6 ReplicaSet
ReplicaSet์ Kubernetes ์ค์ผ์ผ๋ง ๊ธฐ๋ฅ์ ํต์ฌ์ผ๋ก ๋ช ์๋ Pod ๊ฐฏ์๊ฐ ํญ์ ์คํ๋๊ณ ์์ ์ ์๋๋ก ๋ณด์ฅํด์ฃผ๋ ์ญํ ์ ํ๋ค.
High Availability: ํ๊ตญ์ด๋ก ํํ โ๊ณ ๊ฐ์ฉ์ฑโ์ด๋ผ๊ณ ์ด์ผ๊ธฐํ๋ค.- ๋๊ฐ์ Pod๋ฅผ ์ฌ๋ฌ๊ฐ ๋ณต์ ํด์ ์ด๋ ํ Pod๊ฐ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ฑฐ ์ฃฝ๋๋ผ๋,
- ๋ค๋ฅธ Pod๊ฐ ์ญํ ์ ๋์ฒด ํ ์ ์๋๋ก ์ค๊ณํ๋๊ฑธ ์ด์ผ๊ธฐํ๋ค.
- Kubernetes์์๋ง ์ฌ์ฉํ๋ ์ฉ์ด๊ฐ ์๋๊ณ ๊ณตํ์ ์ธ ๊ฐ๋ ์ด๋ค.
- ๋๊ฐ์ Pod๋ฅผ ์ฌ๋ฌ๊ฐ ๋ณต์ ํด์ ์ด๋ ํ Pod๊ฐ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ฑฐ ์ฃฝ๋๋ผ๋,
Load Balancing:- ์ฌ๋ฌ๊ฐ์ Pod๋ฅผ ์คํํ๋ฉด ๊ฐ์ ์ญํ ์ ํ๊ณ ์๋ Pod๊ฐ ํธ๋ํฝ์ ๋ถ์ฐํด์ค ์ ์๋ ์์คํ ์ด ํ์ํ๋ค.
- Kubernetes๋ ์๋์ผ๋ก Load Balancing์ ํด์ค๋ค
Scaling: ์ค์ ํ Pod์ ๊ฐฏ์๋งํผ ์๋์ผ๋ก Pod ๊ฐฏ์๊ฐ ๋์ด๋๊ณ ์ค์ด๋ค๋๋ก ํด์ค๋ค.- ReplicaSet์ ํ๋์ `Node์ ๊ท์๋์ง ๊ณ ์ฌ๋ฌ Node์ ๊ฑธ์ณ ์ค์ ๋ ์ ์๋ค.
Label Selector: ๋ ์ด๋ธ ์ ์์ ๋ฐ๋ผ ReplicaSet ์ ์์ ์ ๋ ฅํด๋์ง ์์ Pod๋ค๋ ReplicaSet์ ์ํด ๊ด๋ฆฌ๋๋๋ก ํ ์ ์๋ค.

ReplicaSet์ ๊ฐ์ ๋ ์ด๋ธ์ Pod๋ค์ด ์ ์๋ ๊ฐฏ์๋งํผ ํญ์ ์คํ๋๊ณ ์๋๋กํ๋ค.
1.7 Deployment

- Deployment๋ฅผ ์์ฑํ๋ฉด ์๋์ผ๋ก ReplicaSet์ ์์ฑํ๋ค
- Deployment๋ ReplicaSet์ Rolling Update์ Rollback ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ผ์๋ค
1.8 Rolling Update

- Blue Green Update๋ฅผ ์ ๋ฐ์ดํธ ํ ๋ ๋ฆฌ์์ค๊ฐ ๋๋ฐฐ๋ก ํ์ํ๋ค.
- Rolling Update๋ฅผ ํ๋ฉด ์ต์ํ์ ์ถ๊ฐ ๋ฆฌ์์ค๋ก ์ ์ฒด ์ ๋ฐ์ดํธ๋ฅผ ์งํ ํ ์ ์๋ค.
- Blue Green Update๋ ๋คํธ์ํฌ ์ค์ ์ด ์กฐ๊ธ ์๋๊ฐ๋ฉด ์๋น์ค์ ๋ค์ดํ์์ด ์๊ธธ ์ ์๋ค.
- Rolling Update๋ ์์ํ ์ ๋ฐ์ดํธ๋ฅผ ์งํํ๊ธฐ ๋๋ฌธ์ ๋ค์ดํ์์ด ์๊ธฐ์ง ์๋๋ค.

1.9 Namespaces

- Namespace๋ Kubernetes ํด๋ฌ์คํฐ์์ ํ๊ฒฝ์ ๋ถ๋ฆฌํ๋๋ฐ ์ฌ์ฉ๋๋ค.
- Namespace๊ฐ ๋ค๋ฅธ Pod๋ผ๋ฆฌ ํต์ ์ ๊ฐ๋ฅํ์ง๋ง kubectl CLI๋ฅผ ์ฌ์ฉํ ๋ ํ์ฌ ์ง์ ๋ผ์๋ namespace๋ฅผ ๊ธฐ์ค์ผ๋ก ์คํ๋๋ค
1.10 ConfigMaps/Secrets
- ConfigMap๊ณผ Secret์ Kubernetes์์ ์ ํ๋ฆฌ์ผ์ด์ ์ค์ ์ ๊ด๋ฆฌํ๋ ๋ฆฌ์์ค๋ค.
- Pod์ ConfigMap์ด๋ Secret์ ์ค์ ๋ ๊ฐ๋ค์ ํ๊ฒฝ๋ณ์๋ก ์ฃผ์ ํด์ค ์ ์๋ค.
- ConfigMap์ Plain Text๋ก ๋ฏผ๊ฐํ์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์ฌ์ฉ๋๋ค.
- ์ข์ ์์ ๋ก๋ URL, ํฌํธ ์ ๋ณด๋ฑ์ด ์๋ค.
- Secret์ ์ํธํ๊ฐ ํ์ํ ๊ฐ๋ค์ ์ ์ฅํ ๋ ์ฌ์ฉ๋๋ค. ์ข์ ์์ ๋ก๋ ๋น๋ฐ๋ฒํธ, API ํค, ์ธ์ฆ์๋ฑ์ด ์๋ค
1.11 Readiness Probe / Liveness Probe

- Readiness Probe์ Liveliness Probe๋ ๋ชจ๋ Container์ ์ํ๋ฅผ ๋ชจ๋ํฐ๋ง ํ๋๋ฐ ์ฌ์ฉ๋๋ค
1.12 Readiness Probe / Liveness Probe
| Liveness Probe | Readiness Probe | |
|---|---|---|
| ๋ชฉ์ | Container๊ฐ ์ ์๋ํ๊ณ ์ด์์๋์ง ํ์ธํ๋ค | Container๊ฐ ํธ๋ํฝ์ ๋ฐ์ ์ค๋น๊ฐ ๋๋์ง ํ์ธํ๋ค |
| ์คํจ์ ์ก์ | Container๋ฅผ ์ฌ์์ํ๋ค | Pod๋ฅผ ์๋น์ค ์๋ํฌ์ธํธ์์ ์ ๊ฑฐํ๋ค. ๋์ด์ ํธ๋ํฝ์ ๋ฐ์ง ๋ชปํ๊ฒ ๋๋ค (์ฌ์์์ ํ์ง ์๋๋ค) |
1.13 Kubernetes Services
- Kubernetes Service๋ Pod๋ค์ ๋คํธ์ํฌ๋ก ์ฐ๊ฒฐํ ๋ ์ฌ์ฉํ๋ค.
- Kubernetes Service๋ ๋ํ์ ์ผ๋ก NodePort, ClusterIP๊ฐ ์กด์ฌํ๋ค.
1.14 NodePort

- NodePort๋ ๋ง ๊ทธ๋๋ก โ์ธ๋ถ์์โ Node์ ์ ์ ํ ์ ์๊ฒ ํด์ฃผ๋ ํฌํธ๋ฅผ ์๋ฏธํ๋ค.
- 30000๋ฒ ํฌํธ๋ถํฐ 32767๋ฒ ํฌํธ๊น์ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
- ์ฌ๋ฌ๊ฐ์ Pod๋ฅผ Load Balancing ํ ์ ์๊ณ ์ฌ๋ฌ๊ฐ์ Node๋ฅผ ํฌ๊ด ํ ์๋ ์๋ค.
1.15 ClusterIP

- ClusterIP๋ Kubernetes์ Pod๋ผ๋ฆฌ ํต์ ํ ์ ์๋๋ก ํด์ฃผ๋ ์๋น์ค๋ค.
- Kubernetes์์๋ ์์ฐ์ค๋ฝ๊ฒ ๊ฐ์ Pod๋ฅผ ์ฌ๋ฌ๊ฐ ์คํํด์ Horizontal Scaling์ ํ๊ณ ,
- ์ธ์ ๋ Pod๊ฐ ์ฌ๋ผ์ง๊ณ ์๋ก ์๊ฒจ์ IP ๊ฐ ๋ณ๋์ ์ด๋ ๊ฐ์ Pod๋ค์ ๋ฌถ์ด์ฃผ๋ ์ญํ ์ด ํ์ํ๋ค.
- ClusterIP๊ฐ ๋ฐ๋ก ์ด ์ญํ ์ ํด์ค๋ค.
1.16 Ingress

- NodePort ๋์ LoadBalancer๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋ผ์ฐ๋ LoadBalancer๋ฅผ ํ๋ก๋น์ ธ๋ ํ๋๋ก ํ ์ ์๋ค.
- ๋ฌธ์ ๋ ์๋น์ค๊ฐ ๋ง์์ง์๋ก LoadBalancer๊ฐ ๋๋ฌด ๋ง์์ง๊ณ ,
- LoadBalancer ๋ณ๋ก ์ธํ ์ ๋ฐ๋ก ํด์ค์ผํ๋ค๋ ์ ์ด๋ค.

- Ingress๋ ๋ณต์กํ Kubernetes์ ์ธ๋ถ ํธ๋ํฝ์ ํ๋ฒ์ ์ฐ๋ ํด์ค ์ ์๋๋ก ๋์์ค๋ค.
1.17 Persistent Volue & Claim

- Persistent Volume์ ํน์ Pod์ ๊ด๊ณ ์์ด ์ ์ฅ ๋ฆฌ์์ค๋ฅผ ๋ฐฐ์ ํ ๋ ์ฌ์ฉ๋๋ค.
- ์ํ๋ ํฌ๊ธฐ๋ก PV๋ฅผ ๋ฐฐ์ ํด๋๋ฉด Pod์์ PV๊ฐ ํ ์ํ ๋ PVC๋ฅผ ํตํด ์ ์ ํ PV๋ฅผ ํ ๋น๋ฐ๊ฒ ๋๋ค.
- PVC๋ PV๋ฅผ ์ ์ ํ ๋ ์ฌ์ฉ๋๋ค.
- Pod์์ ํ์ํ ์คํ์ ์ ์ฅ ๊ณต๊ฐ์ PVC๋ก ์ ์ํ๋ฉด,
- Kubernetes์์ ์๋์ผ๋ก ํ์ฌ ์ฌ์ฉ ํ ์ ์๋ PV ์ค์ ์ ํฉํ ์ ์ฅ์๋ฅผ ๋ฐฐ์ ํด์ค๋ค
1.18 Pod Definition
1apiVersion: v12kind: Pod3metadata:4name: nginx-pod5labels:6app: proxy7type: back-end89spec:10containers:11- name: nginx-container12image: nginx:1.14.213ports:14- containerPort: 80
1.19 Replicaset
1apiVersion: apps/v12kind: ReplicaSet3metadata:4name: nginx-replicaset5labels:6app: nginx-app7type: back-end89spec:10replicas: 311template:12metadata:13labels:14app: nginx-app15type: back-end16spec:17containers:18- name: nginx-container19image: nginx20ports:21- containerPort: 8022selector:23matchLabels:24app: nginx-app25type: back-end
1apiVersion: v12kind: Pod3metadata:4name: nginx-pod5labels:6app: proxy7type: back-end89spec:10containers:11- name: nginx-container12image: nginx:1.14.213ports:14- containerPort: 80
1.20 Deployment
1apiVersion: apps/v12kind: Deployment3metadata:4name: nginx-deployment5labels:6app: nginx-app7type: back-end89spec:10replicas: 311template:12metadata:13labels:14app: nginx-app15type: back-end16spec:17containers:18- name: nginx-container19image: nginx20ports:21- containerPort: 8022selector:23matchLabels:24app: nginx-app25type: back-end
2. Helm
2.1 Helm ์๊ฐ
Helm์ Kubernetes ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ์ ๊ด๋ฆฌ๋ฅผ ๊ฐ์ํํ๊ธฐ ์ํ ํจํค์ง ๊ด๋ฆฌ ๋๊ตฌ๋ค.
- Helm ์ฃผ์ ๋จ์๋ Chart๋ค. Chart๋ Kubernetes ๋ฆฌ์์ค(YAML ํ์ผ)์ ๋ชจ์์ผ๋ก, Kubernetes ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ์ ํ์ํ ๋ชจ ๋ ์ค์ ๊ณผ ํ ํ๋ฆฟ์ ํฌํจํ๋ค.
- Helm์ ์ฌ์ฉํ๋ฉด ๋ณต์กํ Kubernetes ๋ฐฐํฌ๋ฅผ ์ฝ๋๋ก ๊ด๋ฆฌํ๊ณ ์ฌ์ฌ์ฉํ ์ ์๋ค.
Helm์ ์ฃผ์ ๊ธฐ๋ฅ
Chart ๊ด๋ฆฌ: Helm์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ํจํค์ง๋ก ๊ตฌ์ฑํ๊ณ ๊ณต์ ํ ์ ์๊ณ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ฝ๊ฒ ๊ฐ์ ธ์ ๋ฐฐํฌํ ์ ์๋ค.๊ฐํธํ ๋ฐฐํฌ์ ์ ๊ทธ๋ ์ด๋: Helm ๋ช ๋ น์ด๋ฅผ ํตํด ๊ฐ๋จํ ์ฐจํธ๋ฅผ ์ค์นํ๊ณ ์ค์ ํ ์ ์๊ณ ๋์ผํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ํ๊ฒฝ์ ์ฝ๊ฒ ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํ ์ ์๋ค.๋ฒ์ ๊ด๋ฆฌ: Helm์ ๋ฆด๋ฆฌ์ฆ ๋ฒ์ ์ ํตํด ๋ฐฐํฌ ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค. ์ํ๋ ๋ฒ์ ์ผ๋ก ์ฝ๊ฒ ๋กค๋ฐฑํ๊ฑฐ๋ ์ต์ ์ํ๋ก ์ ๊ทธ๋ ์ด๋ํ ์ ์๋ค. (Kubernetes์ ๋ฉ์ด์ ์ฝ์ ์ค ํ๋)ํ ํ๋ฆฟํ: YAML ํ์ผ์ ํ ํ๋ฆฟํํ์ฌ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค์ํ ์ค์ ์ ์ ์ฉ ํ ์ ์๋ค. ๋์ผํ ์ฐจํธ๋ฅผ ๋ค์ํ ํ๊ฒฝ์ ๋ง๊ฒ ์ปค์คํฐ๋ง์ด์ง ํ ์ ์๋ค.
2.2 Helm Chart์ ๊ตฌ์ฑ
Chart.yaml
- ์ฐจํธ์ ๋ํ ๊ธฐ๋ณธ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํ์ผ์ด๋ค. ์ฐจํธ์ ์ด๋ฆ, ๋ฒ์ , ์ค๋ช , ๊ด๋ฆฌ์, ์ ํ๋ฆฌ์ผ์ด์ ๋ฒ์ ์ ์ ๋ ฅํ๋ ๊ณต๊ฐ์ด๋ค.
- ์ฐจํธ์ ํต์ฌ ์ ๋ณด๋ฅผ ์ ์ํ๊ณ ์์ผ๋ฉฐ ๋ฐฐํฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฒ์ ์ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ค๋ค
values.yaml
- ๊ธฐ๋ณธ ์ค์ ๊ฐ์ ์ ์ํ๋ ํ์ผ์ด๋ค.
- ์ฐจํธ์ ํ ํ๋ฆฟ ํ์ผ์์ ์ด ๊ฐ์ ์ฐธ์กฐํ์ฌ ๋ณ์๋ฅผ ๋์ ์ผ๋ก ๋์ฒด ํ ์ ์๋ค.
- ๊ฐ์ Kubernetes ์ ํ๋ฆฌ์ผ ์ด์ ์ ์ฝ๊ฒ ๋ค์ํ ํ๊ฒฝ์์ ๋ค์ํ ์กฐ๊ฑด์ผ๋ก ์คํ ํ ์ ์๊ฒ ํด์ฃผ๋ ํต์ฌ ์์๋ค.
templates ํด๋
- ์ค์ Kubernetes ๋ฆฌ์์ค๋ฅผ ์ ์ํ๋ YAML ํ ํ๋ฆฟ ํ์ผ๋ค์ด ํฌํจ๋ ๊ณต๊ฐ์ด๋ค.
- Deployment, Service, ConfigMap ๋ฑ ๋ชจ๋ Kubernetes ํ์ผ์ ํฌํจํ ์ ์์ผ๋ฉฐ,
- values.yaml ํ์ผ์ ์ ์๋ ๊ฐ๋ค์ ๋ณ์๋ก ์ฌ์ฉํ์ฌ ๋์ ์ผ๋ก ์ค์ ํ ์ ์๋ค.
helpers.tpl
- ์ฌ๋ฌ ํ ํ๋ฆฟ์์ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ํจ์๋ก ๋ง๋ค์ด ์ ์ฅ ํด๋๋ ํ์ผ์ด๋ค.
{{ include "test-function" . }}๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํธ์ถํ ์ฌ ์ฌ์ฉํ ์ ์๋ค.
Charts ํด๋
- ์ฐจํธ ์์กด์ฑ์ ์ ์ํ๋ ๊ณณ์ด๋ค
2.3 Charts.yaml
1apiVersion: v22name: my-chart3version: 1.0.04description: A Helm chart for Kubernetes5appVersion: 1.0.0
2.4 values.yaml
1replicaCount: 32image:3repository: nginx4tag: latest5service:6type: ClusterIP7port: 80
2.5 values.yaml ์ฌ์ฉ๋ฒ
1apiVersion: apps/v12kind: Deployment3metadata:4name: {{ .Release.Name }}-app5labels:6app : {{ .Release.Name }}-app7spec:8replicas: {{ .Values.replicaCount }}9selector:10matchLabels:11app: {{ .Release.Name }}-app12template:13metadata:14labels:15app: {{ .Release.Name }}-app16spec:17containers:18- name: {{ .Release.Name }}-container19image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"20ports:21- containerPort: {{ .Values.service.port }}22env:23- name: ENVIRONMENT24value: {{ .Values.environment }}
1replicaCount: 223image:4repository: nginx5tag: latest67service:8port: 80910environment: 'development'
2.6 Helm CLI ๊ธฐ๋ฅ - ๋ฐฐํฌ
1# ๋ฌธ๋ฒ2helm install <release-name> <chart-directory> --values <values-file>34# ์์ 5helm install my-app ./my-chart
1NAME: my-app2LAST DEPLOYED: Thu Nov 7 12:00:00 20243NAMESPACE: default4STATUS: deployed5REVISION: 16NOTES:71. Get the application URL by running these commands:8export POD_NAME=$(kubectl get pods --namespace default -l "app=my-app" -o jsonpath="{.items[0].metadata.name}")9echo "Visit http://127.0.0.1:8080 to use youur application"10kubectl port-forward $POD_NAME 8080:80
2.7 Helm CLI ๊ธฐ๋ฅ - ์ ๋ฐ์ดํธ
1# ๋ฌธ๋ฒ2helm upgrade <release-name> <chart-directory> --set <variables>34# ์์ 5helm upgrade my-app ./my-chart --set image.tag=2.0.0
1Release "my-app" has been upgraded. Happy Helming!2NAME: my-app3LAST DEPLOYED: Thu Nov 7 12:05:00 20244NAMESPACE: default5STATUS: deployed6REVISION: 2
2.8 Helm CLI ๊ธฐ๋ฅ - ๋ฆด๋ฆฌ์ค ํ์คํ ๋ฆฌ ํ์ธ
1# ๋ฌธ๋ฒ2helm history <release-name>34# ์์ 5helm history my-app
1REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION21 Thu Nov 7 12:00:00 2024 deployed my-chart-1.0 1.0 Install complete32 Thu Nov 7 12:05:00 2024 superseded my-chart-1.0 2.0 Upgrade complete43 Thu Nov 7 12:10:00 2024 deployed my-chart-1.0 1.0 Rollback to 1
2.9 Helm CLI ๊ธฐ๋ฅ - ๋กค๋ฐฑ
1# ๋ฌธ๋ฒ2helm rellback <release-name> <revision>34# ์์ 5helm rellback my-app 1
1Rollback was a success! Happy Helming!
2.10 Helm CLI ๊ธฐ๋ฅ - ํ์ฌ ๋ฆด๋ฆฌ์ฆ ํ์ธ
1# ๋ฌธ๋ฒ2helm status <release-name>34# ์์ 5helm status my-app
1NAME: my-app2LAST DEPLOYED: Thu Nov 7 12:10:00 20243NAMESPACE: default4STATUS: deployed5REVISION: 36NOTES:71. Get the application URL by running these commands:8export POD_NAME=$(kubectl get pods --namespace default -l "app=my-app" -o jsonpath="{.items[0].metadata.name}")9echo "Visit http://127.0.0.1:8080 to use youur application"10kubectl port-forward $POD_NAME 8080:80
2.11 ๊ธฐํ ๊ธฐ๋ฅ
- Artifact Hub์ Helm Chart๋ฅผ ์ ๋ก๋ํ๊ณ ๊ณต์ ํ ์ ์๋ค.
- Templating์ ์ฌ์ฉํด์ ๋ณต์กํ ๊ธฐ๋ฅ์ ๋ฏธ๋ฆฌ ์ ์ ํด๋ ์ ์๋ค.