kkumtree

KV cache์— ๋Œ€ํ•œ ์ดํ•ด

  • kkumtree

2026-06-20T17:57:45+09:00

์ง€๋‚œ ์ฃผ ์ผ์š”์ผ๋ถ€ํ„ฐ CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” (์ดํ•˜, AIDC)์— ์ฐธ์—ฌํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์š”์ƒˆ๋Š” PC์— ๋‹ฌ๋ฆฐ ๊ทธ๋ž˜ํ”ฝ์นด๋“œ ํ™œ์šฉ์„ ์œ„ํ•ด, ์ด๊ฒƒ์ €๊ฒƒ(RAG, ASR ๋ฐ ์ผ๋ฐ˜์ ์ธ ์ถ”๋ก ๋ชจ๋ธ) ๋Œ๋ ค๋ณด๋Š” ์ค‘์ธ๋ฐ ๊ทธ ์ค‘์—์„œ ๋ง‰ํžˆ๋˜๊ฒŒ KV cache์— ๋Œ€ํ•œ ์ดํ•ด ๋ถ€์กฑ์œผ๋กœ Hermes Agent์šฉ ๋ชจ๋ธ ์„ ์ •์— ์• ๋ฅผ ๋จน๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด์™• ํ•˜๋Š” ๊น€์— ํฐ ์š•์‹ฌ์„ ๋ฒ„๋ฆฌ๊ณ  KV cache์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

์˜์ƒ์€ ์Šคํ„ฐ๋””์—์„œ ์ฐธ๊ณ ์šฉ์œผ๋กœ ์ถ”์ฒœํ•ด์ฃผ์‹  ์ˆ˜ ๋งŽ์€ ์˜์ƒ๋“ค ์ค‘์—์„œ [KV cache ์‹œ๊ฐํ™”๋กœ ์„ค๋ช…] ์˜์ƒ์„ ์ฐธ๊ณ  ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

1. KV cache ๋ž€?

์ดํ•ดํ•˜๊ณ  ์žˆ๋Š” ๋‚ด์šฉ์œผ๋กœ๋Š” ์—ญ์‹œ ๋ง ๊ทธ๋Œ€๋กœ Key-Value ํ˜•ํƒœ์˜ ์บ์‹ฑ์ž…๋‹ˆ๋‹ค.

Vault HA ๋ฐ Metric ์ˆ˜์ง‘ ์„ค์ • - CI/CD ์Šคํ„ฐ๋”” 8์ฃผ์ฐจ

  • kkumtree

2025-12-07T05:59:10+09:00

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” CI/CD Study 8์ฃผ์ฐจ์—๋Š” Vault์˜ HA(High Availability)์— ๋Œ€ํ•ด ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ๋ฐฉ๋ฒ•์˜ ์ด๋ก ์  ๋ถ€๋ถ„์€ ๋‹จ์ˆœํ–ˆ์œผ๋‚˜, ์˜ˆ์ƒํ•œ ๊ตฌ์„ฑ ๋ฐฉ๋ฒ•๊ณผ ๋‹ฌ๋ผ์„œ ์ œ๊ฐ€ ๋‚˜์ค‘์— ์ฐธ๊ณ ํ•˜๋ ค๊ณ  ๋ถ€์—ฐ์„ค๋ช…์„ ํ•ด๋‘๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋”๋ถˆ์–ด ๋Œ€์‹œ๋ณด๋“œ์—์„œ Vault ๊ด€๋ จ ๋ฉ”ํŠธ๋ฆญ์„ ๋ณด๊ณ  ์‹ถ์–ด์„œ, Datadog๊ณผ ์—ฐ๋™ํ•˜์—ฌ ๊ด€์ธกํ•˜์˜€์Šต๋‹ˆ๋‹ค.

0. ์‹ค์Šต ํ™˜๊ฒฝ ์ค€๋น„

ํ•ด๋‹น ๊ตฌ์„ฑ๋“ค์€ ์•„๋ž˜ GitHub์— ํƒ‘์žฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/kkumtree/ci-cd-cloudnet-study ์˜ 8w ํด๋” Helm v4 ์ถœ์‹œ ํ›„ ํ•œ ๋‹ฌ๋„ ์•ˆ๋œ ์‹œ์ ์— ์ž‘์„ฑ๋˜์—ˆ๊ธฐ์—, v3์— ํ˜ธํ™˜๋˜๋Š” ์ฐจํŠธ ๋ฒ„์ „์„ ๋ช…์‹œํ•˜์—ฌ ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค.

kind ๋ฐฐํฌ์™€ ingress-nginx, ๊ทธ๋ฆฌ๊ณ  vault-worker ๊นŒ์ง€ ๋ฐฐํฌํ•˜๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์„ฑ๋„๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

Vault 101 in Kubernetes - CI/CD ์Šคํ„ฐ๋”” 7์ฃผ์ฐจ

  • kkumtree

2025-11-30T08:59:34+09:00

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” CI/CD Study 7์ฃผ์ฐจ์—๋Š” Vault๋ฅผ ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ์„ค๋ช…์€ ํ•ด๋‹น ๊ณต์‹ ํŽ˜์ด์ง€์—์„œ ํ•ด์ฃผ๊ณ  ์žˆ์ง€๋งŒ, ๊ทธ์ € 1password ๊ฐ™์€ ํŒจ์Šค์›Œ๋“œ ๊ด€๋ฆฌ ์„œ๋น„์Šค๊ฐ€ ์—”๋“œ์œ ์ € ๋Œ€์ƒ์ด๋ผ๋ฉด Vault๋Š” ์ธํ”„๋ผ ๊ด€๋ฆฌ์ž ๋Œ€์ƒ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ๋Š” ์ œ๊ฒŒ๋Š” ํฅ๋ฏธ๋กœ์šด ์ฃผ์ฐจ์˜€์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ์Šคํ„ฐ๋””์—์„œ๋Š” ๊ณ„์†ํ•ด์„œ kind๋กœ ๋กœ์ปฌ Kubernetes(k8s)๋ฅผ ํ™œ์šฉํ–ˆ๊ธฐ์—, ์ด๋ฒˆ์—๋„ ๋น„์Šทํ•˜๊ฒŒ ๋ฐฐํฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

0. ์‹ค์Šต ํ™˜๊ฒฝ ์ค€๋น„ - kind ํด๋Ÿฌ์Šคํ„ฐ ๋ฐฐํฌ

ํ•ด๋‹น ๊ตฌ์„ฑ๋“ค์€ ์•„๋ž˜ GitHub์— ํƒ‘์žฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/kkumtree/ci-cd-cloudnet-study ์˜ 7w ํด๋”

kind create cluster --name vault --image kindest/node:v1.32.8 --config - <<EOF
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
  labels:
    ingress-ready: true
  extraPortMappings:
  - containerPort: 80
    hostPort: 30080
EOF


echo "[Provisoning..] ingress-nginx in vault cluster"

kubectl config use-context kind-vault

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml

kubectl wait --namespace ingress-nginx \
  --for=condition=ready pod \
  --selector=app.kubernetes.io/component=controller \
  --timeout=90s

sudo tailscale serve -bg localhost:30080

kubectl apply -f whoami.yaml 

์ด๋ฒˆ์—๋Š” UI ๊ด€๋ จํ•ด์„œ 80ํฌํŠธ ํ•˜๋‚˜๋งŒ ๋šซ์–ด๋†“๊ณ  ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ, ๋ญ”๊ฐ€ ํ•˜๋‚˜์”ฉ ๋ง‰ํžˆ๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ traefik/whoami ์ด๋ฏธ์ง€๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋””๋ฒ„๊น…์„ ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

ArgoCD Cluster ๋ฐ Prefix ๊ด€๋ฆฌ - CI/CD ์Šคํ„ฐ๋”” 6์ฃผ์ฐจ

  • kkumtree

2025-11-22T20:56:43+09:00

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” CI/CD Study 6์ฃผ์ฐจ์—๋Š” ArgoCD๋ฅผ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค.
Cluster๋ฅผ ์ถ”๊ฐ€ํ•ด๋ณด๊ณ  Gitea๋ฅผ ๋ถ™์ด๊ธฐ ์ „์—, ArgoCD๋ฅผ Prefix๋กœ ๋ผ์šฐํŒ…ํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ๋กœ๊ทธ์•„์›ƒํ•˜๊ณ  ๋‚˜์„œ ์›์น˜์•Š๋Š” ๊ฒฝ๋กœ๋กœ ๋น ์ง€๋Š” ๋ฐ”๋žŒ์—
์ด๊ฒƒ์ €๊ฒƒ ์‚ดํŽด๋ณด๊ณ  ์ˆ˜์ •์„ ํ•˜์—ฌ ์›ํ•˜๋Š” ๋Œ€๋กœ ๊ตฌ๋™๋˜๋„๋ก ์…‹์—…ํ–ˆ์Šต๋‹ˆ๋‹ค.

0. ์‹ค์Šต ์ค€๋น„

ํ•ด๋‹น ๊ตฌ์„ฑ๋“ค์€ ์•„๋ž˜ GitHub์— ํƒ‘์žฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/kkumtree/ci-cd-cloudnet-study ์˜ 6w ํด๋”

์ด์ „ ํฌ์ŠคํŒ… Tailscale์„ ํƒ€๊ณ , ArgoCD์— ์ ‘๊ทผํ•ด๋ณด๊ธฐ์„ ํ•˜์˜€๋‹ค๋ฉด, ๋ฆฌ์†Œ์Šค ์ •๋ฆฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

kind ๋ฐฐํฌ ์‹œ, ํฌํŠธ ์ ์œ ๋กœ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

sudo tailscale serve --tcp 443 off

disable tailscale tcp 443 serve

Tailscale์„ ํƒ€๊ณ , ArgoCD์— ์ ‘๊ทผํ•ด๋ณด๊ธฐ

  • kkumtree

2025-11-17T10:23:03+09:00

์ด์ „ ๊ฒŒ์‹œ๋ฌผ, ArgoCD with Ingress์˜ ๋„๋ฉ”์ธ ์„ค์ •์„ ํ•˜๋‹ค๊ฐ€ ๋ฌธ๋“, Tailscale์˜ serve๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ Tailscale ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ(์ดํ•˜, tailnet)์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ArgoCD ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๋ฉด ๋˜์ง€ ์•Š์„๊นŒ? ํ•˜์—ฌ ๊ตฌ์„ฑํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

tailnet diagram

kind๋ฅผ ์šด์šฉ ์ค‘์ธ Host์™€ ์ ‘์†ํ•  Client๋“ค์— Tailscale ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

1. Tailscale๊ณผ Serve

์ „ํ†ต์ ์ธ ์ค‘์•™์ง‘์ค‘์‹(Hub-Spoke) VPN์ด ์•„๋ž˜์™€ ๊ฐ™๋‹ค๋ฉด,

A traditional hub-and-spoke VPN

Tailscale์˜ ๊ฒฝ์šฐ, Mesh ๋„คํŠธ์›Œํฌ์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๋ฉฐ Wireguard๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

Tailscale P2P mesh network

๊ตฌ๋ถ„ ์ „ํ†ต์  ์ค‘์•™์ง‘์ค‘์‹ VPN Tailscale (๋ฉ”์‰ฌ VPN)
๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ ์ค‘์•™ ์„œ๋ฒ„๋ฅผ ํ†ตํ•œ ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ ๊ฒฝ์œ โ€‹ P2P ์ง์ ‘ ์—ฐ๊ฒฐ, ๋ถ„์‚ฐํ˜• ๋ฉ”์‰ฌ ๋„คํŠธ์›Œํฌโ€‹
๋ฐ์ดํ„ฐ ๊ฒฝ๋กœ ํด๋ผ์ด์–ธํŠธ โ†’ VPN ์„œ๋ฒ„ โ†’ ๋ชฉ์ ์ง€โ€‹ ํด๋ผ์ด์–ธํŠธ โ†’ ๋ชฉ์ ์ง€ (์ง์ ‘ ์—ฐ๊ฒฐ)โ€‹
ํ”„๋กœํ† ์ฝœ OpenVPN(TCP/UDP), IKEv2, L2TP WireGuard(UDP ๊ธฐ๋ฐ˜)
์„ฑ๋Šฅ ์ค‘์•™ ์„œ๋ฒ„ ๋ณ‘๋ชฉ ๋ฐœ์ƒ, ์ง€์—ฐ ์ฆ๊ฐ€โ€‹ ์ง์ ‘ ์—ฐ๊ฒฐ๋กœ ์ง€์—ฐ ์ตœ์†Œํ™”, ๋น ๋ฅธ ์†๋„
์„ค์ • ๋ณต์žก๋„ ์„œ๋ฒ„ ๊ตฌ์ถ•, ํฌํŠธ ํฌ์›Œ๋”ฉ ํ•„์š”โ€‹ ๋กœ๊ทธ์ธ๋งŒ์œผ๋กœ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅโ€‹
NAT ํ†ต๊ณผ ์ˆ˜๋™ ํฌํŠธ ํฌ์›Œ๋”ฉ ํ•„์š”โ€‹ ์ž๋™ NAT Traversal ์ง€์›
ํ™•์žฅ์„ฑ ์„œ๋ฒ„ ์šฉ๋Ÿ‰์— ๋”ฐ๋ผ ์ œํ•œโ€‹ ๊ฐ ๋…ธ๋“œ ๋…๋ฆฝ์ , ํ™•์žฅ ์šฉ์ด
๋ณด์•ˆ ์ค‘์•™ ์„œ๋ฒ„๊ฐ€ ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ ํ™•์ธ ๊ฐ€๋Šฅโ€‹ ์ข…๋‹จ ๊ฐ„ ์•”ํ˜ธํ™”, P2P ์ „์†กโ€‹

Tailscale์˜ serve์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š”, ngrok์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ๊ณผ ์œ ์‚ฌํ•œ funnel๊ณผ ๋‹ฌ๋ฆฌ
tailnet์— ์†ํ•œ ๊ธฐ๊ธฐ๋งŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ArgoCD with Ingress - CI/CD ์Šคํ„ฐ๋”” 5์ฃผ์ฐจ

  • kkumtree

2025-11-16T17:38:34+09:00

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” CI/CD Study 5์ฃผ์ฐจ์—๋Š” ArgoCD๋ฅผ ์ข€๋” ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค.

0. ์‹ค์Šต ์ค€๋น„

ํ•ด๋‹น ๊ตฌ์„ฑ๋“ค์€ ์•„๋ž˜ GitHub์— ํƒ‘์žฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/kkumtree/ci-cd-cloudnet-study ์˜ 5w ํด๋”

์šฐ์„  80/443 ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์—ฌ์•ผํ•ฉ๋‹ˆ๋‹ค. ์•„๋‹Œ ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ํ•ด๋ณด์•˜์„ ๊ฒฝ์šฐ tailscale์ด ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์˜ค์ธํ•˜์—ฌ ํ•ด๋‹น ์„œ๋น„์Šค๋ฅผ ์ค‘์ง€ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.
๋‹ค๋งŒ, ๋‹จ์ˆœํžˆ kind YAML์„ ์ž˜๋ชป ์ž‘์„ฑํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

stop other processes

(1) kind ๋ฐ kube-ops-view

์ด๋ฒˆ์—๋Š” Ingress์˜ ๋ฐฐํฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ‘์ž‘์—…์œผ๋กœ
Control Node์— ๋ผ๋ฒจ๋ง์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
์ด๋Š” ๋‹ค์Œ์— ์ด์–ด์งˆ ingress-nginx ๋ฐฐํฌ ์‹œ, nodeSeletor ์กฐ๊ฑด์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ArgoCD 101 - CI/CD ์Šคํ„ฐ๋”” 4์ฃผ์ฐจ

  • kkumtree

2025-11-09T08:44:34+09:00

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” CI/CD Study 4์ฃผ์ฐจ์—๋Š” ArgoCD๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

Kubernetes(์ดํ•˜, k8s) ์ƒ์—์„œ ArgoCD๋Š” Controller๋ณด๋‹ค๋Š” Operator์— ๊ฐ€๊นŒ์šด ํฌ์ง€์…˜์„ ๊ฐ–๋Š”๋‹ค๊ณ  ํ•˜์—ฌ,
์ด๋ฒˆ ๊ธฐํšŒ์— ์‹ค์Šต์„ ํ•˜๋ฉด์„œ ์ฒด๊ฐ์„ ํ•˜๋Š” ๊ฒƒ์— ๋ชฉ์ ์„ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

  • Controller: live state(์‹ค์ œ ์ƒํƒœ)์™€ desired state(์›ํ•˜๋Š” ์ƒํƒœ)๊ฐ€ ์ผ์น˜ํ•˜๋Š”์ง€ ๊ด€์ฐฐ ๋ฐ ์ง€์†์  ์กฐ์ •
  • Operator: Controller๊ฐ€ k8s ๋‚ด๋ถ€ object์—์„œ ๋™์ž‘ํ•œ๋‹ค๋ฉด, Operator๋Š” k8s ์™ธ์˜ ๊ฒƒ๋“ค๋„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Œ

ํ•ด๋‹น ๊ตฌ์„ฑ๋“ค์€ ์•„๋ž˜ GitHub์— ํƒ‘์žฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/kkumtree/ci-cd-cloudnet-study ์˜ 4w ํด๋”

0. ์‹ค์Šต ์ค€๋น„

์ด์ „ ๊ฒŒ์‹œ๋ฌผ, Jenkins, git and kubernetes์˜ kind ๋ฐ kube-ops-view ์„ค์ •๊ณผ ๋™์ผํ•˜์—ฌ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค.

Jenkins, git and kubernetes - CI/CD ์Šคํ„ฐ๋”” 3์ฃผ์ฐจ

  • kkumtree

2025-11-02T08:51:39+09:00

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” CI/CD Study 3์ฃผ์ฐจ์—๋Š” Jenkins์™€ ArgoCD์„ ๋‹ค๋ค˜์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ์—๋Š” kubernetes(์ดํ•˜, k8s)์— self-host Git๊ณผ Jenkins๋ฅผ ๋ฐฐํฌ ํ›„ CI/CD ๋ถ€๋ถ„์„ ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ•˜๋‹ค๋ณด๋‹ˆ ๊ฐœ์ธ์ ์œผ๋กœ, ์•„๋ž˜ 3๊ฐ€์ง€๊ฐ€ ์ฃผ๋กœ ๊ธฐ์–ต์— ๋‚จ์•˜๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Docker UDS์˜ GID
  • Gitea์™€ Multibranch Pipeline์˜ ๊ฒฐํ•ฉ
  • Local PV์˜ Taint ๋ฐ Node ์ง€์ •

๋”๋ถˆ์–ด, Gitea์— ๋Œ€ํ•ด Basic Auth๋ฅผ ํ†ตํ•œ CLI ์ ‘๊ทผ์„ ๋ง‰์•„๋ณด๋Š” ๊ฒƒ๋„ ์ƒˆ๋กœ์ด ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๊ตฌ์„ฑ๋“ค์€ ์•„๋ž˜ GitHub์— ํƒ‘์žฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/kkumtree/ci-cd-cloudnet-study ์˜ 3w ํด๋”

0. ์‹ค์Šต ์ค€๋น„

(1) kind

kind ์„ค์น˜์˜ ๊ฒฝ์šฐ ๋‹ค์Œ ํฌ์ŠคํŠธ๋ฅผ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฆฌ๋ˆ…์Šค์— KIND ์„ค์น˜ํ•˜๊ธฐ w/golang
Docs: https://kind.sigs.k8s.io/

Helm ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์žฌ์‚ฌ์šฉ์„ฑ ๋†’์ด๊ธฐ - CI/CD ์Šคํ„ฐ๋”” 2์ฃผ์ฐจ

  • kkumtree

2025-10-26T03:16:04+09:00

์ด๋ฒˆ์—๋Š” ์žฌ์‚ฌ์šฉ์„ฑ์„ ์œ„ํ•ด์„œ _helpers.tpl ํŒŒ์ผ์„ ํ™œ์šฉํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด์˜ Helm 101 - CI/CD ์Šคํ„ฐ๋”” 2์ฃผ์ฐจ์—์„œ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

1. _helpers.tpl์„ ํ†ตํ•œ ๊ณตํ†ต ๋ณ€์ˆ˜ ์žฌ์‚ฌ์šฉ

(1) ๊ณตํ†ต์‚ฌํ•ญ ์ˆ™์ง€

์ด์ „์— ์ƒ์„ฑํ•œ deployment.yaml๊ณผ service.yaml์˜ selector ๋ถ€๋ถ„์— ๊ณตํ†ต์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

# `{{ .Values.replicaCount }}
## deployment.yaml  
spec.selector.matchLabels
spec.template.metadata.labels
## service.yaml  
spec.selector

(2) ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ

ํ•ด๋‹น label์„ ์ถ”๊ฐ€/์‚ญ์ œํ•˜๋ ค๋ฉด, ์—ฌ๋Ÿฌ ํ•„๋“œ๋ฅผ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜์—ฌ์•ผํ•ฉ๋‹ˆ๋‹ค.
๋Œ€์‹  _helpers.tplํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ๊ตฌ์„ฑ์‹ ํ•ฉ๋‹ˆ๋‹ค.

_helpers.tpl ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋งจ ์•ž์— _๋กœ ์‹œ์ž‘ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๋ฉฐ,
์ด ํŒŒ์ผ์€ k8s manifest ํŒŒ์ผ๋กœ ์ทจ๊ธ‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Helm 101 - CI/CD ์Šคํ„ฐ๋”” 2์ฃผ์ฐจ

  • kkumtree

2025-10-24T01:17:39+09:00

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” CI/CD Study 2์ฃผ์ฐจ์—๋Š” Helm๊ณผ Tekton์„ ๋‹ค๋ค˜์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ์—๋Š” Helm์˜ ๊ธฐ๋ณธ์ ์ธ ๋ถ€๋ถ„์„ ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1. Helm์˜ ์—ญํ• ๊ณผ ์‹ค์Šต ์ค€๋น„์‚ฌํ•ญ

Helm?

ํ…œํ”Œ๋ฆฟ ๊ธฐ๋ฐ˜ ์†”๋ฃจ์…˜. ์ฆ‰, ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฐ ๊ณต์œ , ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.

  • Helm chart(์ฐจํŠธ)

    • ๊ณต์œ  ๊ฐ€๋Šฅํ•œ Kubernetes(์ฟ ๋ฒ„๋„คํ‹ฐ์Šค, ์ดํ•˜ k8s) ํŒจํ‚ค์ง€๋ฉฐ, ์ฐจํŠธ ๊ฐ„ ์˜์กด์„ฑ ๋“ฑ ๋‹ค์–‘ํ•œ ์š”์†Œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
    • k8s๋ฅผ ๋‹ค๋ฃจ๋ฉด Helm์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ๊ทธ ์ด์œ  ์ค‘ ํ•˜๋‚˜๊ฐ€ chart ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.
  • Rolling Update for ConfigMap

    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ค์ •๊ฐ’์€ ์ผ๋ฐ˜์ ์œผ๋กœ k8s์˜ ConfigMap์— ๋Œ€์‘๋˜๋Š” ์†์„ฑ์ž…๋‹ˆ๋‹ค.
    • ConfigMap: ์ˆ˜์ •๋˜์–ด๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋กค๋ง ์—…๋ฐ์ดํŠธ ์ „, ์ฆ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ˆ˜๋™ ์žฌ์‹œ์ž‘ ํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ๊ฐ’์ด ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
      • Helm์€ ConfigMap์ด ๋ณ€๊ฒฝ๋˜๋ฉด, ์ž๋™์œผ๋กœ Rolling Update๊ฐ€ ์ด๋ฃจ์–ด์ง€๋Š” ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์‹ค์Šต ์ค€๋น„

  1. kind

  1. <<
  2. <
  3. 1
  4. 2
  5. 3
  6. โ€ฆ
  7. 6
  8. >
  9. >>

kkumtree

Source code on GitHub

ยฉ 2025 kkumtree and contributors All rights reserved.
Licensed under
CC BY-NC-ND 4.0