Kubernetes Tools/Istio

[Istio ๊ฐ€์ด๋“œ ep.4] 1๋ถ€ ๊ฐœ๋…๊ณผ ๊ธฐ๋ณธ ์„ค์ • #4 | Istio ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ: Pilot, Envoy, Citadel, Galley

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

๐Ÿ”น ๊ฐœ์š”

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Istio์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.
Istio๋Š” ์„œ๋น„์Šค ๋ฉ”์‹œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋‹ค์–‘ํ•œ ์ปดํฌ๋„ŒํŠธ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ,
๊ฐ ์ปดํฌ๋„ŒํŠธ๋Š” ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ, ๋ณด์•ˆ, ๋ชจ๋‹ˆํ„ฐ๋ง ๋“ฑ ํŠน์ • ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
์ด ๊ธ€์—์„œ๋Š” Pilot, Envoy, Citadel, Galley์˜ ์—ญํ• ์„ ์„ค๋ช…ํ•˜๊ณ ,
๊ฐ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์„œ๋น„์Šค ๋ฉ”์‹œ ๋‚ด๋ถ€์—์„œ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿ”น 1. Istio ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ

โœ… 1.1 Istio์˜ ๊ธฐ๋ณธ ์•„ํ‚คํ…์ฒ˜

Istio๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ํ”Œ๋ ˆ์ธ(Plane)์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

  • ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ (Control Plane): Istio์˜ ์ „์ฒด ๋„คํŠธ์›Œํฌ ์ •์ฑ…์„ ๊ด€๋ฆฌ
  • ๋ฐ์ดํ„ฐ ํ”Œ๋ ˆ์ธ (Data Plane): ์„œ๋น„์Šค ๊ฐ„ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌ

์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ๊ณผ ๋ฐ์ดํ„ฐ ํ”Œ๋ ˆ์ธ์€ ๊ฐ๊ฐ ์•„๋ž˜์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”Œ๋ ˆ์ธ  ๊ตฌ์„ฑ ์š”์†Œ ์—ญํ• 
์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ Pilot ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ… ๊ด€๋ฆฌ ๋ฐ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ
  Citadel ์„œ๋น„์Šค ๊ฐ„ ๋ณด์•ˆ ๋ฐ ์ธ์ฆ (mTLS) ๊ด€๋ฆฌ
  Galley Istio์˜ ์ •์ฑ… ๋ฐ ์„ค์ • ๊ด€๋ฆฌ
๋ฐ์ดํ„ฐ ํ”Œ๋ ˆ์ธ Envoy ํ”„๋ก์‹œ ์—ญํ• , ํŠธ๋ž˜ํ”ฝ ์ œ์–ด ๋ฐ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ

๐Ÿ”น 2. ๋ฐ์ดํ„ฐ ํ”Œ๋ ˆ์ธ ๊ตฌ์„ฑ ์š”์†Œ

โœ… 2.1 Envoy: Istio์˜ ํ”„๋ก์‹œ (Proxy) ์—ญํ• 

Envoy๋Š” Istio์˜ ๋ฐ์ดํ„ฐ ํ”Œ๋ ˆ์ธ์„ ๋‹ด๋‹นํ•˜๋Š” ํ”„๋ก์‹œ์ž…๋‹ˆ๋‹ค.
๊ฐ ์„œ๋น„์Šค์— ์‚ฌ์ด๋“œ์นด(Sidecar) ํ˜•ํƒœ๋กœ ๋ฐฐํฌ๋˜์–ด, ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์„ ๊ด€๋ฆฌํ•˜๊ณ  ๋ณดํ˜ธํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

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

  • ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ…: ์„œ๋น„์Šค ๊ฐ„ ์š”์ฒญ์„ ๋ผ์šฐํŒ… ๋ฐ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ
  • ๋ณด์•ˆ (mTLS): ์„œ๋น„์Šค ๊ฐ„ ์•”ํ˜ธํ™”๋œ ํ†ต์‹ ์„ ์ˆ˜ํ–‰
  • ํŠธ๋ž˜ํ”ฝ ์ œ์–ด: ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค, ๋ฆฌํŠธ๋ผ์ด, ํƒ€์ž„์•„์›ƒ ์„ค์ • ๊ฐ€๋Šฅ
  • ๋ถ„์‚ฐ ์ถ”์ : Jaeger, Zipkin๊ณผ ๊ฐ™์€ ํˆด๊ณผ ์—ฐ๋™ํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ ํ๋ฆ„ ์ถ”์ 
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: my-service
spec:
  host: my-service
  trafficPolicy:
    loadBalancer:
      simple: LEAST_CONN  # ์ตœ์†Œ ์—ฐ๊ฒฐ๋œ ์„œ๋ฒ„๋กœ ํŠธ๋ž˜ํ”ฝ ๋ถ„๋ฐฐ

์„ค๋ช…:

  • DestinationRule: ํŠธ๋ž˜ํ”ฝ์„ ์ œ์–ดํ•˜๋Š” ๊ทœ์น™์„ ์„ค์ •
  • loadBalancer.simple: ํŠธ๋ž˜ํ”ฝ์„ ์ตœ์†Œ ์—ฐ๊ฒฐ๋œ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๋Š” ์„ค์ •

๐Ÿ”น 3. ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ๊ตฌ์„ฑ ์š”์†Œ

โœ… 3.1 Pilot: Istio์˜ ํŠธ๋ž˜ํ”ฝ ์ปจํŠธ๋กค๋Ÿฌ

Pilot์€ Istio์˜ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์—์„œ ํŠธ๋ž˜ํ”ฝ ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
์„œ๋น„์Šค ๊ฐ„ ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ…์„ ์„ค์ •ํ•˜๊ณ , Envoy ํ”„๋ก์‹œ์— ํŠธ๋ž˜ํ”ฝ ๊ทœ์น™์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

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

  • ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ: Kubernetes ์„œ๋น„์Šค ๋ชฉ๋ก์„ ๊ฐ์ง€
  • ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ…: VirtualService๋ฅผ ํ†ตํ•ด ํŠธ๋ž˜ํ”ฝ ํ๋ฆ„์„ ์„ค์ •
  • ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ: Envoy์—๊ฒŒ ํŠธ๋ž˜ํ”ฝ ๋ถ„๋ฐฐ ์ •์ฑ… ์ „๋‹ฌ
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: my-service
spec:
  hosts:
    - my-service
  http:
    - route:
        - destination:
            host: my-service
            subset: v1
          weight: 80  # 80%์˜ ํŠธ๋ž˜ํ”ฝ์„ v1์œผ๋กœ ์ „๋‹ฌ
        - destination:
            host: my-service
            subset: v2
          weight: 20  # 20%์˜ ํŠธ๋ž˜ํ”ฝ์„ v2๋กœ ์ „๋‹ฌ

์„ค๋ช…:

  • VirtualService: ํŠธ๋ž˜ํ”ฝ์„ ํŠน์ • ์„œ๋น„์Šค๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” ์—ญํ• 
  • weight: ํŠธ๋ž˜ํ”ฝ์„ ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ์„œ๋น„์Šค์— ๋ถ„๋ฐฐํ•˜๋Š” ์„ค์ •

โœ… 3.2 Citadel: ์„œ๋น„์Šค ๋ณด์•ˆ ๋ฐ ์ธ์ฆ

Citadel์€ Istio์˜ ๋ณด์•ˆ ๋‹ด๋‹น ์ปดํฌ๋„ŒํŠธ๋กœ,
์„œ๋น„์Šค ๊ฐ„ mTLS ์ธ์ฆ์„ ๊ด€๋ฆฌํ•˜๊ณ  ๋ณด์•ˆ ์ •์ฑ…์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

  • mTLS ์ธ์ฆ: ์„œ๋น„์Šค ๊ฐ„ ์•”ํ˜ธํ™”๋œ ํ†ต์‹ ์„ ์œ„ํ•œ ์ธ์ฆ์„œ ๋ฐœ๊ธ‰
  • ์„œ๋น„์Šค ID ๊ด€๋ฆฌ: ์„œ๋น„์Šค ๊ฐ„์˜ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ ๊ด€๋ฆฌ
  • RBAC(Role-Based Access Control): ๊ถŒํ•œ ๊ด€๋ฆฌ
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
spec:
  mtls:
    mode: STRICT  # ๋ชจ๋“  ์„œ๋น„์Šค ๊ฐ„ ํŠธ๋ž˜ํ”ฝ์„ ์•”ํ˜ธํ™” (mTLS ์ ์šฉ)

์„ค๋ช…:

  • PeerAuthentication: Istio์˜ ๋ณด์•ˆ ์ •์ฑ…์„ ์„ค์ •
  • mode: STRICT: mTLS๋ฅผ ๊ฐ•์ œ ์ ์šฉํ•˜์—ฌ ๋ชจ๋“  ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์„ ์•”ํ˜ธํ™”

โœ… 3.3 Galley: Istio์˜ ์ •์ฑ… ๋ฐ ์„ค์ • ๊ด€๋ฆฌ

Galley๋Š” Istio์˜ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•˜๊ณ , ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์— ์ „๋‹ฌํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

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

  • Kubernetes ์„ค์ • ํŒŒ์ผ์„ ์ˆ˜์ง‘ํ•˜์—ฌ Istio์— ์ ์šฉ
  • ์ •์ฑ…์„ ๊ฒ€์ฆํ•˜๊ณ  ์œ ํšจ์„ฑ์„ ํ™•์ธ
  • ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ๊ณผ ๋™๊ธฐํ™”ํ•˜์—ฌ ์ง€์†์ ์ธ ์ •์ฑ… ์ ์šฉ

Galley๋Š” Istio 1.5 ์ดํ›„๋ถ€ํ„ฐ ๊ธฐ๋Šฅ์ด istiod์— ํ†ตํ•ฉ๋˜์—ˆ์ง€๋งŒ,
๊ธฐ๋ณธ์ ์œผ๋กœ ์ •์ฑ… ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”น 4. Istio ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ

โœ… 4.1 Istio์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„ ๊ด€๊ณ„

Istio๋Š” ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ๊ณผ ๋ฐ์ดํ„ฐ ํ”Œ๋ ˆ์ธ์ด ํ˜‘๋ ฅํ•˜์—ฌ ์„œ๋น„์Šค ๋ฉ”์‹œ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  1. PilotEnvoy: Pilot์ด Envoy์— ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ… ๊ทœ์น™์„ ์ „๋‹ฌ
  2. CitadelEnvoy: Citadel์ด Envoy์— mTLS ์ธ์ฆ์„œ๋ฅผ ์ œ๊ณต
  3. GalleyPilot & Citadel: Galley๊ฐ€ Istio์˜ ์ •์ฑ… ๋ฐ ์„ค์ •์„ ๊ด€๋ฆฌ

์ด๋ ‡๊ฒŒ ๊ฐ ์š”์†Œ๊ฐ€ ์„œ๋กœ ํ˜‘๋ ฅํ•˜์—ฌ, ์„œ๋น„์Šค ๋ฉ”์‹œ ๋‚ด์—์„œ ํŠธ๋ž˜ํ”ฝ์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ ,
๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๋ฉฐ, ์šด์˜์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“Œ ๊ฒฐ๋ก 

  • Envoy๋Š” ๋ฐ์ดํ„ฐ ํ”Œ๋ ˆ์ธ์—์„œ ์„œ๋น„์Šค ๊ฐ„์˜ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋ก์‹œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • Pilot์€ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์—์„œ ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ…์„ ๊ด€๋ฆฌํ•˜๊ณ  Envoy์— ํŠธ๋ž˜ํ”ฝ ๊ทœ์น™์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  • Citadel์€ ์„œ๋น„์Šค ๊ฐ„ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ณ  mTLS ์ธ์ฆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • Galley๋Š” Istio์˜ ์„ค์ •๊ณผ ์ •์ฑ…์„ ๊ด€๋ฆฌํ•˜๋ฉฐ, ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ๊ณผ ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ๋“ค์ด ํ˜‘๋ ฅํ•˜์—ฌ Istio์˜ ์„œ๋น„์Šค ๋ฉ”์‹œ๋ฅผ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค.
728x90