4 min read

Bitnami ์œ ๋ฃŒํ™” ๋Œ€์‘ ๋ฐฉ์•ˆ๊ณผ ์—ฌ๋Ÿฌ ์ƒ๊ฐ๋“ค

Table of Contents

Bitnami logo

์ตœ๊ทผ Broadcom์ด Bitnami๋ฅผ ์ธ์ˆ˜ํ•˜๋ฉด์„œ Bitnami ์ด๋ฏธ์ง€๊ฐ€ ์œ ๋ฃŒํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, Helm chart๋„ ๋” ์ด์ƒ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Broadcom์ด Bitnami์— ๋Œ€ํ•œ ๊ถŒ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜๋ฉด์„œ ์ด์ œ ๋ณด์•ˆ ์„ค์ •์— ๋Œ€ํ•œ ๋น„์šฉ์„ ๋ฐ›๊ฒ ๋‹ค๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š”๋ฐ, ํ˜„์žฌ ํšŒ์‚ฌ์—์„œ๋„ Bitnami๋ฅผ ๊ธฐ์กด์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด์„œ ๋Œ€์‘์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•˜์ง€๋งŒ ์ด๋ฅผ ๋Œ€์‘ํ•˜๋Š” ๊ณผ์ •๊ณผ, ํ›„์† ์กฐ์น˜ ๋ฐฉ์•ˆ์„ ์กฐ์‚ฌํ•˜๋ฉด์„œ ๋“ค์—ˆ๋˜ ์—ฌ๋Ÿฌ ์ƒ๊ฐ์„ ์ •๋ฆฌํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

Bitnami๋ฅผ ์‚ฌ์šฉํ•ด ์™”๋˜ ์ด์œ 

Bitnami๋ฅผ ์‚ฌ์šฉํ•ด ์˜จ ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š” ๋‹ค์Œ 3๊ฐ€์ง€์˜€์Šต๋‹ˆ๋‹ค.

  1. ํŽธ์˜์„ฑ
    • Bitnami์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์ •๋œ ๋ณด์•ˆ ์˜ต์…˜์ด ๋งŽ์Šต๋‹ˆ๋‹ค.
      ๋Œ€ํ‘œ์ ์œผ๋กœ UID๊ฐ€ Dockerfile์— 1000๋ฒˆ๋Œ€๋กœ ํ•˜๋“œ์ฝ”๋”ฉ๋˜์–ด ์žˆ์–ด ๋ฃจํŠธ ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ, existingSecret์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋ฐ€ ์ •๋ณด๋ฅผ values.yaml์— ์ง์ ‘ ์ฃผ์ž…ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•˜๋Š” ์˜ต์…˜๋„ ๋Œ€๋ถ€๋ถ„ ์„œ๋น„์Šค์—์„œ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
    • ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ์„ ์œ„ํ•ด์„œ๋Š” ๊ธฐ๋ณธ values.yaml ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ด๋„ ๋  ์ •๋„๋กœ ๊ตฌ์„ฑ์ด ์ž˜ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๊พธ์ค€ํ•œ ์—…๋ฐ์ดํŠธ
    • Bitnami์˜ ์ด๋ฏธ์ง€์™€ Helm chart๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์˜ํ•ด ๊พธ์ค€ํžˆ ๊ด€๋ฆฌ๋˜์–ด ์™”์Šต๋‹ˆ๋‹ค.
    • ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ๋„ ๊พธ์ค€ํžˆ ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๊ธฐ๋„ ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.
  3. ๋”ฑํžˆ ์—†๋Š” ๋Œ€์ฒด์žฌ
    • Bitnami ์ •๋„์˜ ์™„์„ฑ๋„๋ฅผ ๊ฐ€์ง„ ๋Œ€์ฒด์žฌ๋ฅผ ์ฐพ๊ธฐ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • ์‹ฌ์ง€์–ด ๊ณต์‹ Helm chart๋Š” ์—†๋Š”๋ฐ Bitnami์—๋Š” Helm chart๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์–ด๋–ค ๋„๊ตฌ๋ฅผ K8s ํ™˜๊ฒฝ์— ์„ค์น˜ํ•ด์•ผ ํ•  ๋•Œ ๊ฒ€์ƒ‰ํ•ด ๋ณด๋ฉด Bitnami ์ฐจํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ผ€์ด์Šค๋ฅผ ๋งŽ์ด ๋ณผ ์ˆ˜ ์žˆ์—ˆ๊ณ , ๋•Œ๋กœ๋Š” ์‹ ๋ขฐ๋„๊ฐ€ ์žˆ๋Š” ์œ ์ผํ•œ ์„ ํƒ์ง€์ธ ๊ฒฝ์šฐ๋„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์œ ๋ฃŒํ™”์— ๋”ฐ๋ฅธ ๋Œ€์‘

ํ•˜์ง€๋งŒ ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ Bitnami ์ด๋ฏธ์ง€๊ฐ€ ์œ ๋ฃŒํ™”๊ฐ€ ์ง„ํ–‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด์ œ ๊ฐ™์€ ์ฃผ์†Œ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ ค ํ•  ๊ฒฝ์šฐ Pull์„ ํ•˜์ง€ ๋ชปํ•ด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. bitnamilegacy๋กœ ์ฃผ์†Œ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋Ÿฐ ์‹์œผ๋กœ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
(Helm chart๋งˆ๋‹ค ์ ์šฉ ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

global:
  security:
    allowInsecureImages: true

image:
  repository: bitnamilegacy/thanos

์ฃผ์˜ํ•  ์ ์€ initContainer ๋˜๋Š” ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ Bitnami ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ทธ ์„ค์ •๋„ ๋ฐ”๊ฟ” ์ฃผ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, Harbor ์ฐจํŠธ๋Š” PostgresQL ๋“ฑ์˜ ์˜์กด์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด๋•Œ ์˜์กด์„ฑ ์ฐจํŠธ๋„ Bitnami์ด๊ธฐ ๋•Œ๋ฌธ์— ํ™•์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์—ฌ๋Ÿฌ Bitnami ์ฐจํŠธ์—์„œ ๋ณผ๋ฅจ ๊ถŒํ•œ ๋ณ€๊ฒฝ์ด๋‚˜ ๊ฐ์ข… ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๋Š” os-shell๋„ Bitnami ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ๋Œ€์‘ ๋ฐฉ์•ˆ

1. ๊ธฐ์กด ์‚ฌ์šฉ ๋ฆฌ์†Œ์Šค ๋ฐฑ์—…

๊ฐ€์žฅ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ž‘์—…์ž…๋‹ˆ๋‹ค.
๋‹น์žฅ์€ bitnamilegacy๋กœ ์ฃผ์†Œ๋ฅผ ๋ณ€๊ฒฝํ•จ์œผ๋กœ์จ ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ด๊ฒƒ๋„ ๊ณ„์† ์œ ์ง€๋œ๋‹ค๋Š” ํ™•์‹ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ˜„์žฌ ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ (+ ๊ฐ€๋Šฅํ•˜๋ฉด Helm chart๋„) ์ž์ฒด์ ์œผ๋กœ ๋ฐฑ์—…ํ•ด ๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2. Bitnami ์ฐจํŠธ + ๊ณต์‹ ์ด๋ฏธ์ง€ ์กฐํ•ฉ

Bitnami ์ฐจํŠธ๋งŒ ์‚ฌ์šฉํ•˜๊ณ , ์ด๋ฏธ์ง€๋ฅผ ๊ณต์‹ ์ด๋ฏธ์ง€ ๋“ฑ์œผ๋กœ ๊ต์ฒดํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ƒ๋Œ€์ ์œผ๋กœ ๊ฐ€๋ฒผ์šด Redis์˜ ๊ฒฝ์šฐ ๋‹จ์ˆœ ์ด๋ฏธ์ง€๋งŒ ๋ณ€๊ฒฝํ•ด๋„ ๋Œ์•„๊ฐ„๋‹ค๋Š” ์˜๊ฒฌ์„ ๊ฝค ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ์—ˆ๊ณ , Thanos๋„ ์ด๋ฏธ์ง€๋ฅผ ๊ต์ฒดํ•˜์—ฌ ๋Œ์•„๊ฐ„๋‹ค๋Š” ์ œ๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.1

ํ•˜์ง€๋งŒ Bitnami Helm chart๊ฐ€ ์ž์ฒด ์ด๋ฏธ์ง€์— ๋งŽ์ด ๋งž์ถ”์–ด์ ธ ์žˆ์–ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋” ๋งŽ๊ณ , ์ด์ œ Helm chart๋„ ๋” ์ด์ƒ ์œ ์ง€๋ณด์ˆ˜๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์˜๊ตฌ์ ์ธ ํ•ด๊ฒฐ๋ฒ•์ด๋ผ ๋ณผ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

3. ๊ณต์‹ Helm chart, Operator, ๋˜๋Š” ๋Œ€์ฒด์žฌ ํ™œ์šฉ

๋‹คํ–‰ํžˆ๋„ ์ž์ฒด Helm chart๋‚˜ Operator, ๋˜๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ์Šต๋‹ˆ๋‹ค:

์ด๋Ÿฐ ๋Œ€์ฒด์žฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ, ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ํ†ตํ•ด ๊ธฐ์—ฌํ•˜๋ฉด์„œ ๊ณ ์ณ๋‚˜๊ฐˆ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๋Œ€์ฒด์žฌ๊ฐ€ ์•„์˜ˆ ์—†๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ตœ์•…์˜ ๊ฒฝ์šฐ ์ž„์‹œ๋กœ Bitnami ์ฐจํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ Custom ์ฐจํŠธ๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์ธ ์ƒ๊ฐ

๋‹จ๊ธฐ ์กฐ์น˜๋ฅผ ๋๋‚ด๊ณ  ํŒ€ ๋‚ด์—์„œ ํšŒ์˜๋ฅผ ๊ฐ€์กŒ๋Š”๋ฐ, ์šฐ์„ ์€ ํ˜„์žฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐฑ์—…ํ•ด ๋‘๊ณ  ์ถ”ํ›„ ์ƒํ™ฉ์„ ์ง€์ผœ๋ณด์ž๋Š” ๊ฒฐ์ •์„ ๋‚ด๋ ธ์Šต๋‹ˆ๋‹ค. ๋‹น์žฅ ์ด ๋ถ€๋ถ„์— ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ๋‹นํ•˜๊ธฐ ํž˜๋“ค๊ณ , ์ƒˆ๋กœ์šด Helm chart๋ฅผ ์œ„ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ƒ๊ธฐ๋ฉด์„œ ๋Œ€์ฒด์žฌ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฐ˜๋“œ์‹œ ๊ทธ๋Ÿด ๊ฒƒ์ด๋ผ๋Š” ๋ณด์žฅ์€ ์—†๊ณ , ๋งŒ์•ฝ ๋“ฑ์žฅํ•˜๋”๋ผ๋„ ๊ฝค ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

์ด๋ฒˆ ์ผ์„ ๊ณ„๊ธฐ๋กœ DevOps Engineer์˜ ๊ธฐ๋ณธ์ ์ธ ๋ณด์•ˆ ์—ญ๋Ÿ‰์ด ๋” ์ค‘์š”ํ•ด์งˆ ๊ฒƒ์ด๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
๋ฌผ๋ก  ๊ฐœ์ธ์˜ ์—ญ๋Ÿ‰์œผ๋กœ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋Š” ๊ฒƒ์€ ํž˜๋“  ์ผ์ด์ง€๋งŒ, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋งŽ์ด ์„ค์ •ํ•˜๊ฒŒ ๋˜๋Š” ๊ถŒํ•œ ์„ค์ •(securityContext), ๋„คํŠธ์›Œํฌ ์ •์ฑ…(NetworkPolicy) ๋“ฑ์˜ Kubernetes ์„ค์ •์„ ์ž˜ ์•Œ์•„๋‘๊ณ  ์ ์žฌ์ ์†Œ์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ๋ณด์•ˆ ์„ค์ •์„ ์œ„ํ•ด์„œ๋Š” ๋” ์•Œ์•„์•ผ ํ•  ๊ฒƒ์ด ๋งŽ๊ฒ ์ง€๋งŒ, ๋ฐ˜๋Œ€๋กœ ๊ธฐ๋ณธ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด๋„ ๋งŽ์€ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๊ณ  ๊ณ ๊ธ‰ ๋ณด์•ˆ์˜ ํ† ๋Œ€๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์˜คํ”ˆ์†Œ์Šค๋ผ๊ณ  ํ•ด์„œ ์–ธ์ œ๋‚˜ ์•ˆ์‹ฌํ•  ์ˆ˜๋Š” ์—†๋‹ค๋Š” ๊ฒƒ์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ๋น„์Šทํ•œ ์‚ฌ๋ก€ ์ค‘ ์ œ๊ฐ€ ๊ฐœ๋ฐœ์ž ์ปค๋ฆฌ์–ด์—์„œ ๊ฐ€์žฅ ๋จผ์ € ์ ‘ํ–ˆ๋˜ ์‚ฌ๋ก€๋Š” Elasticsearch์˜ ๊ธฐ์—…ํ™”์˜€์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ง€๊ธˆ์€ ๊ฑฐ๊ธฐ์—์„œ ํŒŒ์ƒ๋œ OpenSearch๊ฐ€ ์žˆ์ง€๋งŒ, 2~3๋…„ ์ฐจ์— ์ง„ํ–‰ํ–ˆ๋˜ ํ”„๋กœ์ ํŠธ์—์„œ ELK ์Šคํƒ์„ ๊ณ ๋„ํ™”์‹œ์ผœ์•ผ ํ•˜๋Š”๋ฐ ์˜คํ”ˆ์†Œ์Šค ๋ฒ„์ „์€ ์ƒํ•œ์„ ์ด ์žˆ๊ณ , OpenSearch๋Š” ์ƒํƒœ๊ณ„๊ฐ€ ์•ˆ์ •ํ™”๋˜์ง€ ์•Š์•˜๋‹ค๊ณ  ํŒ๋‹จ๋˜์–ด ํ˜ผ์„ ์ด ์žˆ์—ˆ๋˜ ๊ธฐ์–ต์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์™ธ์—๋„ ๋‹ค๋ฅธ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์—์„œ๋„ ๊ธฐ์—…ํ™”๋ฅผ ์‹œ๋„ํ•˜๊ฑฐ๋‚˜ ๋ผ์ด์„ ์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ข…์ข… ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ๊ฐ€๋Šฅ์„ฑ์„ ๊พธ์ค€ํžˆ ๋Œ€๋น„ํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ๋ฐ”ํ€ด๋ฅผ ์ƒˆ๋กœ ๋ฐœ๋ช…ํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค๋Š” ์ƒ๊ฐ์ด์ง€๋งŒ, ๊ทธ๋ž˜๋„ ๊ธฐ๋ณธ์„ ์•Œ์•„ ๋‘๊ณ  ๊ฒฝ๊ณ„์‹ฌ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ํ•ญ์ƒ ์ค‘์š”ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ ์ž‘์—…๋ฌผ๋ถ€ํ„ฐ ํšŒ์‚ฌ ์—…๋ฌด๊นŒ์ง€ ํ•˜๋‚˜ํ•˜๋‚˜ ๋Œ์•„๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ์•ผ ํ•  ๊ฒƒ ๊ฐ™๋„ค์š”.

Footnotes

  1. https://github.com/thanos-io/thanos/issues/8381 โ†ฉ