Kubernetes Tools/Istio

[Istio ๊ฐ€์ด๋“œ ep.26] 4๋ถ€ ๋ชจ๋‹ˆํ„ฐ๋ง #2 | Jaeger & Zipkin์„ ํ™œ์šฉํ•œ ๋ถ„์‚ฐ ํŠธ๋ ˆ์ด์‹ฑ ๋ฐ ์„ฑ๋Šฅ ๋ถ„์„

ygtoken 2025. 3. 18. 12:10
728x90

๐Ÿ”น ๊ฐœ์š”

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Istio์—์„œ Jaeger์™€ Zipkin์„ ํ™œ์šฉํ•˜์—ฌ ๋ถ„์‚ฐ ํŠธ๋ ˆ์ด์‹ฑ์„ ์„ค์ •ํ•˜๊ณ  ์„ฑ๋Šฅ์„ ๋ถ„์„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํ™˜๊ฒฝ์—์„œ๋Š” ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๊ฐ€ ์„œ๋กœ ํ˜ธ์ถœํ•˜๋ฉด์„œ ํŠธ๋žœ์žญ์…˜์ด ๋ณต์žกํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์—, ํŠธ๋ ˆ์ด์‹ฑ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.
Istio๋Š” Jaeger ๋ฐ Zipkin๊ณผ ํ†ตํ•ฉํ•˜์—ฌ ์„œ๋น„์Šค ๊ฐ„ ํŠธ๋žœ์žญ์…˜ ํ๋ฆ„์„ ์ถ”์ ํ•˜๊ณ  ์„ฑ๋Šฅ์„ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธ€์—์„œ๋Š” ๋ถ„์‚ฐ ํŠธ๋ ˆ์ด์‹ฑ ๊ฐœ๋…, Istio์—์„œ Jaeger ๋ฐ Zipkin ์„ค์น˜ ๋ฐฉ๋ฒ•, ํŠธ๋žœ์žญ์…˜ ๋ถ„์„ ์˜ˆ์ œ๋ฅผ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿ”น 1. ๋ถ„์‚ฐ ํŠธ๋ ˆ์ด์‹ฑ(Distributed Tracing)์ด๋ž€?

โœ… 1.1 ๋ถ„์‚ฐ ํŠธ๋ ˆ์ด์‹ฑ ๊ฐœ๋…

๋ถ„์‚ฐ ํŠธ๋ ˆ์ด์‹ฑ(Distributed Tracing)์€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„ ์š”์ฒญ ํ๋ฆ„์„ ์ถ”์ ํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.
๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํ™˜๊ฒฝ์—์„œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋น„์Šค๊ฐ€ ํ˜‘๋ ฅํ•˜์—ฌ ํ•˜๋‚˜์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—,
์–ด๋–ค ์„œ๋น„์Šค์—์„œ ๋ณ‘๋ชฉ์ด ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์š”์ฒญ์˜ ์ „์ฒด ํ๋ฆ„์„ ์ถ”์ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ„์‚ฐ ํŠธ๋ ˆ์ด์‹ฑ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ์„œ๋น„์Šค ๊ฐ„ ์š”์ฒญ ํ๋ฆ„ ์ถ”์  ๊ฐ€๋Šฅ
  • ์„ฑ๋Šฅ ๋ณ‘๋ชฉ ์ง€์  ํŒŒ์•… ๋ฐ ์ตœ์ ํ™” ๊ฐ€๋Šฅ
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์žฅ์•  ๋ฐœ์ƒ ์‹œ ์›์ธ ๋ถ„์„ ๊ฐ€๋Šฅ
  • ํŠธ๋žœ์žญ์…˜๋ณ„ ์‘๋‹ต ์‹œ๊ฐ„ ๋ถ„์„ ๋ฐ ์„œ๋น„์Šค ๊ฐ„ ํ˜ธ์ถœ ๊ด€๊ณ„ ์‹œ๊ฐํ™” ๊ฐ€๋Šฅ

๐Ÿ’ก Istio๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Envoy ํ”„๋ก์‹œ๋ฅผ ํ†ตํ•ด ํŠธ๋ ˆ์ด์‹ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๋ฉฐ, Jaeger ๋˜๋Š” Zipkin์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”น 2. Istio์—์„œ Jaeger ์„ค์น˜ ๋ฐ ์„ค์ •

โœ… 2.1 Istio์—์„œ Jaeger๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

Jaeger๋Š” CNCF(Cloud Native Computing Foundation)์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ๋ถ„์‚ฐ ํŠธ๋ ˆ์ด์‹ฑ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.
Istio๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Jaeger์™€ ํ†ตํ•ฉ๋˜์–ด ์žˆ์œผ๋ฉฐ, Envoy ํ”„๋ก์‹œ์—์„œ ํŠธ๋ ˆ์ด์‹ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค.

Jaeger์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ์„œ๋น„์Šค ๊ฐ„ ํŠธ๋žœ์žญ์…˜ ์ถ”์ 
  • ๊ฐ ์š”์ฒญ๋ณ„ ์‘๋‹ต ์‹œ๊ฐ„ ๋ถ„์„
  • ์„œ๋น„์Šค ํ˜ธ์ถœ ๊ด€๊ณ„ ์‹œ๊ฐํ™”
  • ์„ฑ๋Šฅ ๋ฌธ์ œ ๋ฐ ๋ณ‘๋ชฉ ํ˜„์ƒ ๋ถ„์„

โœ… 2.2 Istio์—์„œ Jaeger ์„ค์น˜ํ•˜๊ธฐ (Helm ์‚ฌ์šฉ)

Istio์—์„œ Jaeger๋ฅผ ์„ค์น˜ํ•˜๋ ค๋ฉด Helm์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

helm install istio-jaeger istio/jaeger -n istio-system

์„ค์น˜ ํ›„ Jaeger๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

kubectl get pods -n istio-system | grep jaeger

์ถœ๋ ฅ ์˜ˆ์ œ:

istio-jaeger-6b798fbdc8-txz8m   1/1   Running   0     5m

โœ… 2.3 Jaeger ์›น UI ์ ‘์†ํ•˜๊ธฐ

Jaeger์˜ ์›น UI์— ์ ‘์†ํ•˜๋ ค๋ฉด ํฌํŠธ๋ฅผ ํฌ์›Œ๋”ฉํ•ฉ๋‹ˆ๋‹ค.

kubectl port-forward -n istio-system svc/jaeger-query 16686:16686

์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:16686 ์— ์ ‘์†ํ•˜๋ฉด Jaeger UI๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”น 3. Istio์—์„œ Zipkin ์„ค์น˜ ๋ฐ ์„ค์ •

โœ… 3.1 Istio์—์„œ Zipkin์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

Zipkin์€ Twitter์—์„œ ๊ฐœ๋ฐœํ•œ ์˜คํ”ˆ์†Œ์Šค ๋ถ„์‚ฐ ํŠธ๋ ˆ์ด์‹ฑ ์‹œ์Šคํ…œ์œผ๋กœ,
Jaeger์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์„œ๋น„์Šค ๊ฐ„ ํŠธ๋žœ์žญ์…˜์„ ์ถ”์ ํ•˜๊ณ  ์„ฑ๋Šฅ์„ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Zipkin์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ์„œ๋น„์Šค ํ˜ธ์ถœ ๊ด€๊ณ„ ์ถ”์  ๋ฐ ์‹œ๊ฐํ™”
  • ํŠธ๋žœ์žญ์…˜ ์ง€์—ฐ ์‹œ๊ฐ„ ๋ถ„์„
  • API ์š”์ฒญ ํ๋ฆ„ ๋ชจ๋‹ˆํ„ฐ๋ง

โœ… 3.2 Istio์—์„œ Zipkin ์„ค์น˜ํ•˜๊ธฐ (Helm ์‚ฌ์šฉ)

Istio์—์„œ Zipkin์„ ์„ค์น˜ํ•˜๋ ค๋ฉด Helm์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

helm install istio-zipkin istio/zipkin -n istio-system

์„ค์น˜ ํ›„ Zipkin์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

kubectl get pods -n istio-system | grep zipkin

์ถœ๋ ฅ ์˜ˆ์ œ:

istio-zipkin-5f7d8f74d7-cx7ms   1/1   Running   0     3m

โœ… 3.3 Zipkin ์›น UI ์ ‘์†ํ•˜๊ธฐ

Zipkin์˜ ์›น UI์— ์ ‘์†ํ•˜๋ ค๋ฉด ํฌํŠธ๋ฅผ ํฌ์›Œ๋”ฉํ•ฉ๋‹ˆ๋‹ค.

kubectl port-forward -n istio-system svc/zipkin 9411:9411

์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:9411 ์— ์ ‘์†ํ•˜๋ฉด Zipkin UI๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”น 4. Istio์—์„œ ํŠธ๋ ˆ์ด์‹ฑ ๋ฐ์ดํ„ฐ ํ™•์ธํ•˜๊ธฐ

โœ… 4.1 Istio์—์„œ ํŠธ๋ ˆ์ด์‹ฑ ํ™œ์„ฑํ™” ํ™•์ธ

Istio๊ฐ€ ํŠธ๋ ˆ์ด์‹ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

kubectl get cm -n istio-system istio

์ถœ๋ ฅ ์˜ˆ์ œ:

data:
  tracing:
    sampling: "100"

๐Ÿ’ก sampling: "100"์ด๋ฉด, Istio๊ฐ€ ๋ชจ๋“  ์š”์ฒญ์˜ ํŠธ๋ ˆ์ด์‹ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.


โœ… 4.2 Jaeger์—์„œ ์„œ๋น„์Šค ํŠธ๋žœ์žญ์…˜ ์กฐํšŒ

Jaeger ์›น UI์—์„œ ํŠธ๋žœ์žญ์…˜์„ ์กฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•:

1๏ธโƒฃ Jaeger UI ์ ‘์† (http://localhost:16686)
2๏ธโƒฃ ์„œ๋น„์Šค ์„ ํƒ (my-service.default.svc.cluster.local)
3๏ธโƒฃ ํŠธ๋žœ์žญ์…˜ ID(Trace ID) ๊ฒ€์ƒ‰ ๋ฐ ๋ถ„์„


โœ… 4.3 Zipkin์—์„œ ์„œ๋น„์Šค ํ˜ธ์ถœ ํ๋ฆ„ ์กฐํšŒ

Zipkin ์›น UI์—์„œ ์„œ๋น„์Šค ํ˜ธ์ถœ ํ๋ฆ„์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•:

1๏ธโƒฃ Zipkin UI ์ ‘์† (http://localhost:9411)
2๏ธโƒฃ ์„œ๋น„์Šค๋ณ„ ํŠธ๋žœ์žญ์…˜ ํ™•์ธ (my-service.default.svc.cluster.local)
3๏ธโƒฃ ์ง€์—ฐ ์‹œ๊ฐ„ ๋†’์€ ํŠธ๋žœ์žญ์…˜ ํƒ์ƒ‰ ๋ฐ ์„ฑ๋Šฅ ๋ถ„์„


๐Ÿ“Œ ๊ฒฐ๋ก 

  • Istio๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Jaeger ๋ฐ Zipkin์„ ์ง€์›ํ•˜์—ฌ ์„œ๋น„์Šค ๊ฐ„ ํŠธ๋žœ์žญ์…˜์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Jaeger์™€ Zipkin์€ ์„œ๋น„์Šค ํ˜ธ์ถœ ํ๋ฆ„์„ ์‹œ๊ฐํ™”ํ•˜๊ณ , ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ํŠธ๋žœ์žญ์…˜์„ ์ถ”์ ํ•˜๋ฉด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์„ฑ๋Šฅ ๋ณ‘๋ชฉ์„ ์‰ฝ๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Istio์—์„œ ์ œ๊ณตํ•˜๋Š” ํŠธ๋ ˆ์ด์‹ฑ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์žฅ์•  ์›์ธ์„ ์‹ ์†ํ•˜๊ฒŒ ํŒŒ์•…ํ•˜๊ณ  ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
728x90