[k8s] helm
helm์ ์ฟ ๋ฒ๋คํฐ์ค ํ๊ฒฝ์์ ์ฃผ๋ก ์ฌ์ฉํ๋ ์ผ์ข
์ ํ๋ก์ ํธ ๋งค๋์ ๋ค.
์ฟ ๋ฒ๋คํฐ์ค ๋ฐฐํฌ์ ์ฌ์ฉ๋๋ yaml ์ฝ๋๋ ์ค์ ์ ํ
ํ๋ฆฟ์ผ๋ก ๊ตฌ์ฑํด์ ์ฌ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๊ณ , ์ฌ๋ฌ๊ฐ์ controller ๋จ์๋ฅผ ๋ฌถ์ด์ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ ๋์ปค์ฒ๋ผ remote ๋ ์ง์คํธ๋ฆฌ๊ฐ ์๊ณ , push/pull์ด ๊ฐ๋ฅํ๋ค. ํ์คํ ๋ฆฌ ๊ด๋ฆฌ๊ฐ ๋๋ค.
๋ด๊ฐ ์ฌ์ฉํ ํ
์คํธ ํ๊ฒฝ์ GKE๋ค.
์จํ๋ ๋ฏธ์ค ํ๊ฒฝ์ผ ๊ฒฝ์ฐ ๋ก๋๋ฐธ๋ฐ์ ์ค์ ์ ๋์ํ์ง ์์ ๊ฒ์ด๋ค.
์ค์น
linux๋ mac ๊ฐ์ unix ๊ณ์ด์์๋ ๋ค์๊ณผ ๊ฐ์ด ์ค์นํ ์ ์๋ค.
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

์ค์น๋๋ฉด ์ด๋ ๊ฒ CLI๋ฅผ ์คํํ ์ ์์ด์ผ ํ๋ค.

windows์ ๊ฒฝ์ฐ์๋ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ง์ ๋ค์ด๋ฐ๊ฑฐ๋. choco ๊ฐ์๊ฑธ ์จ์ผํ๋ค.
https://github.com/helm/helm/releases
์ฐจํธ ๋ง๋ค๊ธฐ
helm์ chart๋ผ๋ ๋จ์๋ก ํ๋ก์ ํธ๋ฅผ ๊ด๋ฆฌํ๋ค.
์ฐจํธ ์์๋ ์ฌ๋ฌ๊ฐ์ ์ฟ ๋ฒ yaml ํ์ผ๊ณผ, ๊ทธ yaml์ ๋ณด์ํ๋ ํ
ํ๋ฆฟ(tpl)๋ค๋ก ๊ตฌ์ฑ๋ ์ ์๋ค.
ํ๋ก์ ํธ, ์ฐจํธ ์์ฑ์ ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์๋ค.
helm create ์ฐจํธ๋ช

๊ทธ๋ผ ์ด๋ฐ์์ผ๋ก ํ๋ก์ ํธ๊ฐ ๊ตฌ์ฑ๋๋ค.
๋ฃจํธ๊ฒฝ๋ก์ ์๋ Chart.yaml์ ํด๋น ์ฐจํธ ์์ฒด์ ๋ํ ๋ฉํ ์ ๋ณด๋ฅผ ์ ์ํ๊ณ , values๋ ์ฌ๋ฌ๊ฐ์ง ์์๊ฐ๋ค์ ํฌํจํ๋ค.
templates/*.yaml๋ค์ ์ฟ ๋ฒ๋คํฐ์ค ๋ฐฐํฌ์ฉ yaml ํ์ผ๋ค์ด๋ค.
์ผ๋จ ๋ ๋ฆฌ๊ณ ์ฒ์๋ถํฐ ํ๋์ฉ ํด๋ณด์.
rm -rf templates/*์๋ฒ ๋์ฐ๊ธฐ
์ฐจํธ๋ฅผ ์ด์ฉํด์ ํ๋ฒ ์๋ฒ๋ฅผ ๋์๋ณด์.
์๋๋ ๋ด๊ฐ ๋ง์๋์ node.js ๊ธฐ๋ฐ ์๋ฒ๋ฅผ ๋์ฐ๋ ๊ฐ๋จํ ๊ตฌ์ฑ์ด๋ค.
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-deploy
spec:
replicas: 3
selector:
matchLabels:
app: test-server
template:
metadata:
labels:
app: test-server
spec:
containers:
- name: test-server
image: myyrakle/node-server-for-test
๋ค๋ฅธ๊ฑฐ๋ผ๋ฉด {{}} ์ค๊ดํธ ํํ์์ผ๋ก ํน์ํ ๊ฐ์ ๋ฉํ๋ฐ์ดํฐ์ ์ง์ด๋ฃ์๋ค๋ ๊ฒ ์ ๋๋ค.
์ ๊ฐ์ ๋ฐฐํฌ์์ ์ ๋ฌ๋๋ ๊ฐ์ด๋ค.
์ ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก ๋ ์ด๋ธ๋ช
๊ฐ์๊ฑธ ์ง์ ํด์ ์ถฉ๋ํ์ง ์๊ฒ ํ๋ ์ฉ๋๋ค. ๊ทธ๋์ ๋ง์ฝ ์ค์ ํ๋ก๋์
๋ฐฐํฌ๋ฅผ ํ๋ค๋ฉด ์ ์์ ์์ labels ์ค์ ์๋ ๋ถ์ฌ์ฃผ๋๊ฒ ์ข๊ฒ ๋ค.
๋ฐฐํฌํ๊ธฐ
์ด๊ธฐ ๋ฐฐํฌ์ ๊ฒฝ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ ํํ๋ก ์ํํ ์ ์๋ค.
helm install ๋ฆด๋ฆฌ์ฆ๋ช
์ฐจํธ๊ฒฝ๋ก
๊ทธ๋ผ ์ฐจํธ ๋จ์๋ก ๋ฆฌ์์ค๊ฐ ๋ฐ ๊ฒ์ด๋ค.
helm list ๋ช ๋ น์ผ๋ก ๋ฐฐํฌ๋ ์ ์ฒด ์ฐจํธ ๋ฆฌ์์ค ๋ชฉ๋ก์ ์กฐํํ ์ ์๊ณ

status๋ก ๊ฐ๋ต ์กฐํ

get all๋ก ์์ธ ์กฐํ๊ฐ ๊ฐ๋ฅํ๋ค.

์ฌ๋ฐฐํฌํ๊ธฐ
์ด๊ธฐ ๋ฐฐํฌ ์ดํ์ ์ฌ๋ฐฐํฌ๋ฅผ ํ ๊ฒฝ์ฐ, upgrade ๋ช ๋ น๋ง ์ฌ์ฉํ๋ฉด ๋๋ค.

๋ก๋๋ฐธ๋ฐ์ ์ถ๊ฐํด๋ณด๊ธฐ
์์์ ๋ง๋ค์๋ ์์ ๋ ์๋ฒ ์ธ์คํด์ค๋ง ๋๋ ์๋๊ฑฐ๋ผ์, ๋ญ๊ฐ ์ ๋์๊ฐ๋์ง ํ์ธ์ด ์ด๋ ค์ ๋ค.
์ด๋ฒ์๋ ์ ์์ ๋ฌ์์ค ๋ก๋๋ฐธ๋ฐ์๋ฅผ ์ ์ํ๊ณ , ์ด๊ฑธ๋ก ์๋ํฌ์ธํธ๋ฅผ ์ด์ฌ์ฃผ์.
apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name }}-lb-service
spec:
selector:
app: test-server
ports:
- protocol: TCP
port: 80
type: LoadBalancer
templates์ ์ถ๊ฐํ๋ฉด ๋๋ค.
์ ๊ฒฝ๋ก ์๋ฉ ๋์ด๋๊ธฐ๋ง ํ๋ฉด ์์์ ์ฝ์ด์ ์ถ๊ฐํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๋ฐฐํฌ๋ฅผ ํ๋ฉด

์ ๋ ๊ฒ์ด๋ค.

๋ฆด๋ฆฌ์ฆ ๋กค๋ฐฑํ๊ธฐ
rollback ๋ช
๋ น์ ์ฌ์ฉํ๋ฉด ์ด์ ๋ฐฐํฌ ๋ฒ์ ์ผ๋ก ๋๋ฆฌ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
๊ทธ๋ฆฌ ์ด๋ ต์ง ์๋ค.
helm rollback ๋ฆด๋ฆฌ์ฆ๋ช

๋ฆด๋ฆฌ์ฆ ์ญ์ ํ๊ธฐ
uninstall ๋ช ๋ น์ ์ฌ์ฉํ๋ฉด ๋ฆด๋ฆฌ์ฆ๋ฅผ ํต์งธ๋ก ๋ ๋ ค๋ฒ๋ฆด ์ ์๋ค.

์ฐธ์กฐ
Helm | ํต์คํํธ ๊ฐ์ด๋
Helm | ํฌ๋ฆ ์ฌ์ฉํ๊ธฐ
Helm | ํฌ๋ฆ ์ค์นํ๊ธฐ
https://malwareanalysis.tistory.com/195