Kubernetes

๐Ÿ”ญKubernetes์—์„œ ์ปจํ…Œ์ด๋„ˆ์˜ ๋™์ž‘์„ ์ง„๋‹จํ•ด์ฃผ๋Š” Container Probe!

Kubernetes์˜ Container Probe์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

2024.07.22 | ์กฐํšŒ 150 |
0
|

DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€

DevOps, ํด๋ผ์šฐ๋“œ, IT ๊ธฐ์ˆ  ๊ด€๋ จ ์ตœ์‹  ์†Œ์‹๊ณผ ์ •๋ณด๋ฅผ ์ •๋ฆฌํ•ด์„œ ์ฃผ 1ํšŒ ์ด๋ฉ”์ผ๋กœ ์ „ํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค๐Ÿ˜บ

์•ˆ๋…•ํ•˜์„ธ์š” ๊ตฌ๋…์ž๋‹˜, DevOps ์†Œ์‹๊ณผ ๊ธฐ์ˆ  ์ง€์‹์„ ์ •๋ฆฌํ•ด์„œ ๊ณต์œ ํ•ด๋“œ๋ฆฌ๋Š” DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€์ž…๋‹ˆ๋‹ค.

Kubernetes์—์„œ Pod๋ฅผ ๋ฐฐํฌํ•˜๋ฉด Pod์—์„œ ์ •์˜ํ•œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜๋Š”๋ฐ์š”. ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •์ƒ ์ž‘๋™ํ•  ๋•Œ ๋น„๋กœ์†Œ Pod๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Pod๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์šด์˜ํ•˜๋‹ค๋ณด๋ฉด ๋™์ž‘ ์ค‘์ด๋˜ ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๊ฐ€ ์ •์ƒ์ธ์ง€ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ™•์ธ์ด ํ•„์š”ํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜น์€ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์™ธ๋ถ€ ํŠธ๋ž˜ํ”ฝ์„ ๋ฐ›์„ ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋Š”์ง€ ์•Œ์•„์•ผ ํ•  ๋•Œ๋„ ์žˆ์ฃ .

์ด๋ ‡๊ฒŒ ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ง„๋‹จํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ, Container Probe์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๋ฅผ ์กฐ์‚ฌํ•œ๋‹ค๋Š” ๋œป์—์„œ ๋ถ™์—ฌ์ง„ ์ด๋ฆ„์ด์ฃ .

์ด๋ฒˆ ์†Œ์‹์ง€์—์„  Kubernetes์˜ Probe์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๐ŸฉบContainer Probe์˜ ์ง„๋‹จ ์œ ํ˜•๊ณผ Probe์˜ ์ข…๋ฅ˜

k8s์˜ Probe๋Š” ํด๋Ÿฌ์Šคํ„ฐ์— ๋™์ž‘ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ง„๋‹จํ•ด์ค๋‹ˆ๋‹ค.
k8s์˜ Probe๋Š” ํด๋Ÿฌ์Šคํ„ฐ์— ๋™์ž‘ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ง„๋‹จํ•ด์ค๋‹ˆ๋‹ค.

Kubernetes์˜ Container Probe๋Š” Manifest์˜ ์ปจํ…Œ์ด๋„ˆ ๋ ˆ๋ฒจ์—์„œ ์ •์˜๋˜๋Š”๋ฐ์š”. ์ •์˜๋œ ์ง„๋‹จ ์„ค์ •์— ๋”ฐ๋ผ kubelet์ด ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ง„๋‹จ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ๋ ˆ๋ฒจ์—์„œ ์ •์˜๋œ๋‹ค๋Š” ๋œป์€, Pod๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Depolyment์ด๋‚˜ Statefulset๊ณผ ๊ฐ™์€ ๋ฐฐํฌ ๋‹จ์œ„์˜ Manifest(yaml ํŒŒ์ผ)์—์„œ๋„ Probe๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

Probe๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด 4๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๋ฅผ ์ง„๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • exec
    • ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด ์ง€์ •
    • ๋ช…๋ น์–ด ์‹คํ–‰ ํ›„ ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ `0`์ด๋ฉด ์ง„๋‹จ ๊ฒฐ๊ณผ ์ •์ƒ์œผ๋กœ ํŒ๋‹จ
    • ๋‹จ exec๋Š” ์ˆ˜ํ–‰๋  ๋•Œ๋งˆ๋‹ค ์ปจํ…Œ์ด๋„ˆ ๋‚ด์— ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•˜๊ณ , ์ด๋กœ ์ธํ•ด Node์˜ CPU ์‚ฌ์šฉ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฃผ์˜๊ฐ€ ํ•„์š”
  • grpc
    • gRPC ์š”์ฒญ์œผ๋กœ ์ง„๋‹จํ•˜๋ฉฐ, ๋ฏธ๋ฆฌ ๊ตฌํ˜„๋œ gRPC Health Check ํ•„์š”
    • ์‘๋‹ต status๊ฐ€ SERVING์ด๋ฉด ์„ฑ๊ณต์œผ๋กœ ์ง„๋‹จ
  • httpGet
    • ํŠน์ • port ๋ฐ path๋กœ Pod์˜ IP์— ๋Œ€ํ•ด HTTP GET ์š”์ฒญ์œผ๋กœ ์ง„๋‹จ
    • ์‘๋‹ต status code๊ฐ€ 200 ์ด์ƒ 400 ๋ฏธ๋งŒ์ด๋ฉด ์„ฑ๊ณต์œผ๋กœ ์ง„๋‹จ
  • tcpSocket
    • ํŠน์ • port๋กœ Pod์˜ IP์— ๋Œ€ํ•ด TCP ์š”์ฒญ์œผ๋กœ ์ง„๋‹จ
    • ํ•ด๋‹น port๊ฐ€ ์—ด๋ ค ์žˆ์œผ๋ฉด ์„ฑ๊ณต์œผ๋กœ ์ง„๋‹จ

 

์ด๋ ‡๊ฒŒ ์ˆ˜ํ–‰ํ•œ ์ง„๋‹จ ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜ 3๊ฐ€์ง€ ์ค‘ ํ•˜๋‚˜๋กœ ๋‚˜์˜ต๋‹ˆ๋‹ค.

  • Success: ์ง„๋‹จ ์„ฑ๊ณต
  • Failure: ์ง„๋‹จ ์‹คํŒจ
  • Unknown: ์ง„๋‹จ ์‹คํŒจ์ด๋‚˜, Faliure์™€ ๋‹ฌ๋ฆฌ kubelet์ด ์ถ”๊ฐ€ ์ง„๋‹จ ์‹คํ–‰

 

๊ทธ๋ฆฌ๊ณ  kubelet์ด ์ˆ˜ํ–‰ํ•˜๋Š” Probe๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด 3๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ๋‚˜๋‰˜๋Š”๋ฐ์š”.

  • Readiness Probe
  • Liveness Probe
  • Startup Probe

 

์•„๋ž˜์—์„œ ๊ฐ Probe์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

โœจReadiness, Liveness, Startup Probe

Readiness Probe

Readiness Probe๋Š” ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ๊ณผ ๊ด€๋ จ์ด ์žˆ๋Š”๋ฐ์š”. Readiness Probe๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๋กœ ํŠธ๋ž˜ํ”ฝ์ด ๋“ค์–ด์˜ค๋Š” ์‹œ์ ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ฆ‰, ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ ์ง„๋‹จ ๊ฒฐ๊ณผ๊ฐ€ ์„ฑ๊ณต์ธ ์‹œ์ ๋ถ€ํ„ฐ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์— ํŠธ๋ž˜ํ”ฝ์ด ๋“ค์–ด์˜ค๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ Readiness Probe๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์ฃ .

๊ฐ Probe๋Š” ์ปจํ…Œ์ด๋„ˆ ๋ ˆ๋ฒจ์—์„œ ์ •์˜ํ•œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ์š”. ์•„๋ž˜ Pod Manifest ์˜ˆ์ œ๋กœ Probe๋ฅผ ์–ด๋–ป๊ฒŒ ์ •์˜ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Readiness Probe๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Pod manifest ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.
Readiness Probe๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Pod manifest ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

์œ„ ์˜ˆ์ œ์—์„œ Readiness Probe๋ฅผ ์ •์˜ํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ์‚ดํŽด๋ณด๋ฉด ํ•ด๋‹น Probe์˜ ์ž‘๋™ ๋ฐฉ์‹์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์œ„ Readiness Probe๋Š” HTTP GET ์š”์ฒญ์œผ๋กœ ์ง„๋‹จ ์ˆ˜ํ–‰ (httpGet)
  • HTTP GET ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” Port์™€ ๊ฒฝ๋กœ๋Š” '8080' ๋ฐ '/healthz'
  • kubelet์ด ์ฒซ Probe ์ง„๋‹จ์„ ์ˆ˜ํ–‰๋˜๋Š” ์‹œ์ ์€ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ํ›„ 15์ดˆ ๋’ค (initialDelaySeconds)
  • kubelet์€ 10์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ Probe ์ง„๋‹จ ์ˆ˜ํ–‰ (periodSeconds)

์œ„ ์˜ˆ์ œ์—์„  ์ปจํ…Œ์ด๋„ˆ์— readinessProbe ํ•˜๋‚˜๋งŒ ์ •์˜๋˜์—ˆ์ง€๋งŒ, ํ•„์š”์— ๋”ฐ๋ผ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด Probe๋ฅผ ์ข…๋ฅ˜๋ณ„๋กœ ๋ชจ๋‘ ์ •์˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Liveness Probe

Liveness Probe๋Š” ๋™์ž‘ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ง„๋‹จํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Kubernetes์— ๋ฐฐํฌ๋œ ์ปจํ…Œ์ด๋„ˆ์˜ ํ”„๋กœ์„ธ์Šค์— ์ด์Šˆ๊ฐ€ ์ƒ๊ธฐ๊ฑฐ๋‚˜ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๊ฐ€ Unhealthy์ธ ๊ฒฝ์šฐ, kubelet์ด ์ด๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ ์ž๋™์œผ๋กœ Pod์˜ restartPolicy(์žฌ์‹œ์ž‘ ์ •์ฑ…)์— ๋”ฐ๋ผ ์กฐ์น˜๋ฅผ ์ทจํ•˜๊ธฐ ๋•Œ๋ฌธ์— Liveness Probe๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ Probe์˜ ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ ์ง„๋‹จ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์ข…๋ฃŒ ๋˜๋Š” ์žฌ์‹œ์ž‘์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋ผ๋ฉด Liveness Probe๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ Liveness Probe์™€ Readiness Probe๋ฅผ ๋™์ผํ•œ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ Probe์˜ ์—ญํ•  ์ˆ˜ํ–‰์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Readiness Probe๋กœ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ค€๋น„๋  ๋•Œ๊นŒ์ง€ ์™ธ๋ถ€ ํŠธ๋ž˜ํ”ฝ์ด ๋“ค์–ด์˜ค๋Š” ๊ฒƒ์„ ์ œ์–ด
  • Liveness Probe๋กœ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ ๋™์ž‘ ์ค‘์— ์ง„๋‹จ ์‹คํŒจ ์‹œ ์ž๋™์œผ๋กœ ์žฌ์‹œ์ž‘

Startup Probe

๋งˆ์ง€๋ง‰์œผ๋กœ Startup Probe๋Š”, ๊ทธ ์ด๋ฆ„์ฒ˜๋Ÿผ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‹œ์ž‘ํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ง„๋‹จํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€๋™ํ•˜๋Š” ๋ฐ์— ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๋ฅผ ์ง„๋‹จํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด, Liveness Probe์˜ periodSeconds ๊ฐ’์„ ๊ธธ๊ฒŒ ์„ค์ •ํ•ด์„œ ์ง„๋‹จ ์ฃผ๊ธฐ๋ฅผ ๋„“ํžˆ๊ธฐ๋ณด๋‹ค๋Š” Startup Probe๋ฅผ ์ •์˜ํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ์˜ ์‹œ์ž‘ ์„ฑ๊ณต ์—ฌ๋ถ€๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€๋ฐ์š”.

๊ทธ๋ž˜์•ผ Liveness Probe๋กœ๋Š” ๋™์ž‘ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๋ฅผ ์ ์ ˆํ•œ ์ฃผ๊ธฐ๋กœ ์ง„๋‹จํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ฆ‰, ๊ฐ Probe์—๊ฒŒ ๋ณธ๋ž˜์˜ ์—ญํ• ์„ ๋ถ€์—ฌํ•จ์œผ๋กœ์จ ํšจ์œจ์ ์ธ ์šด์˜์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ง„๋‹จ์ด ์„ฑ๊ณตํ•˜๊ธฐ ์ „๊นŒ์ง„ Readiness Probe์™€ Liveness Probe๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ๋„ Startup Probe์˜ ์ฃผ์š” ํŠน์ง•์ž…๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๊ฐ Probe๋Š” ์ˆ˜ํ–‰ ์‹œ์ ๊ณผ ์—ญํ• ์ด ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์—, ์ปจํ…Œ์ด๋„ˆ์˜ ์„ฑ๊ฒฉ์ด๋‚˜ ์šด์˜ ์ •์ฑ…์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ์กฐํ•ฉ์œผ๋กœ Probe๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋”์šฑ ํšจ๊ณผ์ ์œผ๋กœ Pod๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์šด์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

๐Ÿ”ญ๋งˆ์น˜๋ฉฐ...

์ด๋ฒˆ ์†Œ์‹์ง€์—์„  Kubernetes์— ๋ฐฐํฌ๋œ ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๋ฅผ ์ง„๋‹จํ•ด์ฃผ๋Š” Probe์— ๋Œ€ํ•ด ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค.

ํ˜น์‹œ ์ด๋ฒˆ ๋‚ด์šฉ ๊ด€๋ จํ•ด์„œ ๋” ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด ์•„๋ž˜ ๋ฉ”์ผ๋ฆฌ ๋Œ“๊ธ€ ๋‚จ๊ฒจ์ฃผ์„ธ์š”.๐Ÿ˜€

๊ทธ๋Ÿผ, ๋‹ค์Œ ์†Œ์‹์ง€์—์„œ ๋ณด๋‹ค ์•Œ์ฐจ๊ณ  ํฅ๋ฏธ๋กœ์šด ๋‚ด์šฉ์œผ๋กœ ์ฐพ์•„๋ต™๊ฒ ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜๋„ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, ๊ตฌ๋…์ž๋‹˜ ๐Ÿ˜บ

 

๐Ÿ”—References

 

 

๋‹ค๊ฐ€์˜ฌ ๋‰ด์Šค๋ ˆํ„ฐ๊ฐ€ ๊ถ๊ธˆํ•˜์‹ ๊ฐ€์š”?

์ง€๊ธˆ ๊ตฌ๋…ํ•ด์„œ ์ƒˆ๋กœ์šด ๋ ˆํ„ฐ๋ฅผ ๋ฐ›์•„๋ณด์„ธ์š”

์ด๋ฒˆ ๋‰ด์Šค๋ ˆํ„ฐ ์–ด๋– ์…จ๋‚˜์š”?

DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€ ๋‹˜์—๊ฒŒ โ˜•๏ธ ์ปคํ”ผ์™€ โœ‰๏ธ ์ชฝ์ง€๋ฅผ ๋ณด๋‚ด๋ณด์„ธ์š”!

๋Œ“๊ธ€

์˜๊ฒฌ์„ ๋‚จ๊ฒจ์ฃผ์„ธ์š”

ํ™•์ธ
์˜๊ฒฌ์ด ์žˆ์œผ์‹ ๊ฐ€์š”? ์ œ์ผ ๋จผ์ € ๋Œ“๊ธ€์„ ๋‹ฌ์•„๋ณด์„ธ์š” !
ยฉ 2024 DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€

DevOps, ํด๋ผ์šฐ๋“œ, IT ๊ธฐ์ˆ  ๊ด€๋ จ ์ตœ์‹  ์†Œ์‹๊ณผ ์ •๋ณด๋ฅผ ์ •๋ฆฌํ•ด์„œ ์ฃผ 1ํšŒ ์ด๋ฉ”์ผ๋กœ ์ „ํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค๐Ÿ˜บ

๋‰ด์Šค๋ ˆํ„ฐ ๋ฌธ์˜eduukulelekim@gmail.com

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ ์„œ๋น„์Šค ์†Œ๊ฐœ์„œ ์˜ค๋ฅ˜ ๋ฐ ๊ธฐ๋Šฅ ๊ด€๋ จ ์ œ๋ณด

์„œ๋น„์Šค ์ด์šฉ ๋ฌธ์˜admin@team.maily.so

๋ฉ”์ผ๋ฆฌ ์‚ฌ์—…์ž ์ •๋ณด

๋ฉ”์ผ๋ฆฌ (๋Œ€ํ‘œ์ž: ์ดํ•œ๊ฒฐ) | ์‚ฌ์—…์ž๋ฒˆํ˜ธ: 717-47-00705 | ์„œ์šธ ์„œ์ดˆ๊ตฌ ๊ฐ•๋‚จ๋Œ€๋กœ53๊ธธ 8, 8์ธต 11-7ํ˜ธ

์ด์šฉ์•ฝ๊ด€ | ๊ฐœ์ธ์ •๋ณด์ฒ˜๋ฆฌ๋ฐฉ์นจ | ์ •๊ธฐ๊ฒฐ์ œ ์ด์šฉ์•ฝ๊ด€