[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