Information in this document may be out of date

This document has an older update date than the original, so the information it contains may be out of date. If you're able to read English, see the English version for the most up-to-date information: Developing and debugging services locally using telepresence

๋กœ์ปฌ์—์„œ ํ…”๋ ˆํ”„๋ ˆ์ฆŒ์Šค๋ฅผ ์ด์šฉํ•œ ์„œ๋น„์Šค ๊ฐœ๋ฐœ ๋ฐ ๋””๋ฒ„๊น…

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ๊ฐ ์ž์ฒด ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐœ๋ณ„ ์„œ๋น„์Šค๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์›๊ฒฉ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ์ƒ์—์„œ ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๋ ค๋ฉด ๋””๋ฒ„๊น… ๋„๊ตฌ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋™์ž‘ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์˜ ์…ธ(shell)์— ์ ‘๊ทผํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒˆ๊ฑฐ๋กœ์šธ ์ˆ˜ ์žˆ๋‹ค.

ํ…”๋ ˆํ”„๋ ˆ์ฆŒ์Šค(telepresence)๋Š” ์›๊ฒฉ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋กœ ์„œ๋น„์Šค๋ฅผ ํ”„๋ก์‹œํ•˜๋ฉด์„œ ๋กœ์ปฌ์—์„œ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœ ๋ฐ ๋””๋ฒ„๊น…ํ•˜๋Š” ๊ณผ์ •์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๋Š” ๋„๊ตฌ์ด๋‹ค. ํ…”๋ ˆํ”„๋ ˆ์ฆŒ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋กœ์ปฌ ์„œ๋น„์Šค์— ๋””๋ฒ„๊ฑฐ ๋ฐ IDE์™€ ๊ฐ™์€ ์‚ฌ์šฉ์ž ์ง€์ • ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์›๊ฒฉ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰๋˜๋Š” ์ปจํ”ผ๊ทธ๋งต(ConfigMap), ์‹œํฌ๋ฆฟ(Secret) ๋ฐ ์„œ๋น„์Šค(Service)์— ๋Œ€ํ•œ ์ „์ฒด ์ ‘๊ทผ ๊ถŒํ•œ์„ ์„œ๋น„์Šค์— ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ๋ฌธ์„œ๋Š” ํ…”๋ ˆํ”„๋ ˆ์ฆŒ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›๊ฒฉ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰ ์ค‘์ธ ์„œ๋น„์Šค๋ฅผ ๋กœ์ปฌ๋กœ ๊ฐœ๋ฐœํ•˜๊ณ  ๋””๋ฒ„๊ทธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • kubectl์€ ํด๋Ÿฌ์Šคํ„ฐ์™€ ํ†ต์‹ ํ•˜๋„๋ก ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ํ…”๋ ˆํ”„๋ ˆ์ฆŒ์Šค๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

๋กœ์ปฌ ๋จธ์‹ ์„ ์›๊ฒฉ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์— ์—ฐ๊ฒฐ

ํ…”๋ ˆํ”„๋ ˆ์ฆŒ์Šค๋ฅผ ์„ค์น˜ํ•œ ํ›„ ํ…”๋ ˆํ”„๋ ˆ์ฆŒ์Šค ์ปค๋„ฅํŠธ(telepresence connect)๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฐ๋ชฌ์„ ์‹คํ–‰ํ•˜๊ณ  ๋กœ์ปฌ ์›Œํฌ์Šคํ…Œ์ด์…˜์„ ํด๋Ÿฌ์Šคํ„ฐ์— ์—ฐ๊ฒฐํ•œ๋‹ค.

$ telepresence connect
 
Launching Telepresence Daemon
...
Connected to context default (https://<cluster public IP>)

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค์— curl์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์˜ˆ, curl -ik https://kubernetes.default

๊ธฐ์กด ์„œ๋น„์Šค ๊ฐœ๋ฐœ ๋˜๋Š” ๋””๋ฒ„๊น…

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹จ์ผ ์„œ๋น„์Šค๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๊ฑฐ๋‚˜ ๋””๋ฒ„๊ทธํ•œ๋‹ค. ์„œ๋น„์Šค๋ฅผ ํ…Œ์ŠคํŠธ ๋ฐ ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ์ ‘๊ทผ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ง€์†์  ๋ฐฐํฌ(continuous deployment) ํŒŒ์ดํ”„๋ผ์ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ํ•œ ๊ฐ€์ง€ ์˜ต์…˜์ด์ง€๋งŒ, ๊ฐ€์žฅ ๋น ๋ฅธ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ์ด๋ผ๋„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋˜๋Š” ๋””๋ฒ„๊ทธ ์ฃผ๊ธฐ์— ์ง€์—ฐ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

telepresence intercept $SERVICE_NAME --port $LOCAL_PORT:$REMOTE_PORT ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์›๊ฒฉ ์„œ๋น„์Šค ํŠธ๋ž˜ํ”ฝ์„ ๋‹ค์‹œ ๋ผ์šฐํŒ…ํ•˜๊ธฐ ์œ„ํ•œ "์ธํ„ฐ์…‰ํŠธ(intercept)"๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

์•„๋ž˜์˜ ๊ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ฐธ๊ณ ํ•œ๋‹ค.

  • $SERVICE_NAME์€ ๋กœ์ปฌ ์„œ๋น„์Šค์˜ ์ด๋ฆ„์ด๋‹ค.
  • $LOCAL_PORT๋Š” ์„œ๋น„์Šค๊ฐ€ ๋กœ์ปฌ ์›Œํฌ์Šคํ…Œ์ด์…˜์—์„œ ์‹คํ–‰ ์ค‘์ธ ํฌํŠธ์ด๋‹ค.
  • $REMOTE_PORT๋Š” ์„œ๋น„์Šค๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ˆ˜์‹ ํ•˜๋Š” ํฌํŠธ์ด๋‹ค.

์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ์›๊ฒฉ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์˜ ์„œ๋น„์Šค ๋Œ€์‹  ๋กœ์ปฌ ์„œ๋น„์Šค์— ์›๊ฒฉ ํŠธ๋ž˜ํ”ฝ์„ ๋ณด๋‚ด๋„๋ก ํ…”๋ ˆํ”„๋ ˆ์ฆŒ์Šค์— ์ง€์‹œํ•œ๋‹ค. ์„œ๋น„์Šค ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋กœ์ปฌ์—์„œ ํŽธ์ง‘ํ•˜๊ณ  ์ €์žฅํ•˜์—ฌ ์›๊ฒฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ‘๊ทผํ•  ๋•Œ ํ•ด๋‹น ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ฆ‰์‹œ ์ ์šฉ๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ๋””๋ฒ„๊ฑฐ ๋˜๋Š” ๊ธฐํƒ€ ๋กœ์ปฌ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

ํ…”๋ ˆํ”„๋ ˆ์ฆŒ์Šค๋Š” ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”๊ฐ€?

Telepresence๋Š” ์›๊ฒฉ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰ ์ค‘์ธ ๊ธฐ์กด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ปจํ…Œ์ด๋„ˆ ์˜†์— ํŠธ๋ž˜ํ”ฝ ์—์ด์ „ํŠธ ์‚ฌ์ด๋“œ์นด(sidecar)๋ฅผ ์„ค์น˜ํ•œ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํŒŒ๋“œ๋กœ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ ์š”์ฒญ์„ ์บก์ฒ˜ํ•˜๊ณ , ์ด๋ฅผ ์›๊ฒฉ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ „๋‹ฌํ•˜๋Š” ๋Œ€์‹ , ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ(๊ธ€๋กœ๋ฒŒ ์ธํ„ฐ์…‰ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ) ๋˜๋Š” ์ผ๋ถ€ ํŠธ๋ž˜ํ”ฝ(๊ฐœ์ธ ์ธํ„ฐ์…‰ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ)์„ ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์œผ๋กœ ๋ผ์šฐํŒ…ํ•œ๋‹ค.

๋‹ค์Œ ๋‚ด์šฉ

ํ•ธ์ฆˆ์˜จ ํŠœํ† ๋ฆฌ์–ผ์— ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ๊ตฌ๊ธ€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์—”์ง„ ์ƒ์˜ ๋ฐฉ๋ช…๋ก ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋กœ์ปฌ๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ๊ณผ์ •์„ ์•ˆ๋‚ดํ•˜๋Š” ์ด ํŠœํ† ๋ฆฌ์–ผ์„ ํ™•์ธํ•œ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ…”๋ ˆํ”„๋ ˆ์ฆŒ์Šค ์›น์‚ฌ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

์ด ํŽ˜์ด์ง€๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์จ๋“œํŒŒํ‹ฐ ํ”„๋กœ์ ํŠธ ๋˜๋Š” ์ œํ’ˆ์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ”„๋กœ์ ํŠธ ์ €์ž๋“ค์€ ์ด๋Ÿฌํ•œ ์จ๋“œํŒŒํ‹ฐ ํ”„๋กœ์ ํŠธ ๋˜๋Š” ์ œํ’ˆ์— ๋Œ€ํ•ด ์ฑ…์ž„์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. CNCF ์›น์‚ฌ์ดํŠธ ๊ฐ€์ด๋“œ๋ผ์ธ์—์„œ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์จ๋“œํŒŒํ‹ฐ ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ณ€๊ฒฝ์„ ์ œ์•ˆํ•˜๊ธฐ ์ „์—, ์ปจํ…์ธ  ๊ฐ€์ด๋“œ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ตœ์ข… ์ˆ˜์ • August 08, 2022 at 9:06 PM PST: Translate tasks/debug-application-cluster/local-debugging.md in Korean (08f9b5ec21)