Helm

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

kkumtree

Source code on GitHub

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