Kubernetes Tools/Istio

[Istio ๊ฐ€์ด๋“œ ep.34] 5๋ถ€ ์šด์˜ ๋ฐ ์ตœ์ ํ™” #4 | Istio ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐ ๋กค๋ฐฑ ์ „๋žต

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

๐Ÿ”น ๊ฐœ์š”

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Istio์˜ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐ ๋กค๋ฐฑ(rollback) ์ „๋žต์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
Istio๋Š” ๋น ๋ฅด๊ฒŒ ๋ฐœ์ „ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์ด๋ฏ€๋กœ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๊ณผ ๋ณด์•ˆ ํŒจ์น˜๋ฅผ ํฌํ•จํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์ž์ฃผ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ณผ์ •์—์„œ ์„œ๋น„์Šค ์ค‘๋‹จ์ด๋‚˜ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‹ ์ค‘ํ•œ ์ ‘๊ทผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธ€์—์„œ๋Š” Istio์˜ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐฉ๋ฒ•, ์•ˆ์ „ํ•œ ๋กค๋ฐฑ ์ „๋žต ๋ฐ ์‹ค์ „ ์ ์šฉ ์‚ฌ๋ก€๋ฅผ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿ”น 1. Istio ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

โœ… 1.1 Istio ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ 

Istio๋Š” ์ •๊ธฐ์ ์œผ๋กœ ์ƒˆ๋กœ์šด ๋ฒ„์ „์ด ๋ฆด๋ฆฌ์ฆˆ๋˜๋ฉฐ, ๋ณด์•ˆ ํŒจ์น˜ ๋ฐ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋Šฅ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์—ฌ ๋ณด์•ˆ ๋ฐ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

Istio ์—…๊ทธ๋ ˆ์ด๋“œ์˜ ์ฃผ์š” ๋ชฉ์ 

1๏ธโƒฃ ๋ณด์•ˆ ์ทจ์•ฝ์  ํŒจ์น˜ → ์ตœ์‹  ๋ณด์•ˆ ์—…๋ฐ์ดํŠธ ์ ์šฉ
2๏ธโƒฃ ์„ฑ๋Šฅ ๊ฐœ์„  → ๋„คํŠธ์›Œํฌ ์ตœ์ ํ™” ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๊ฐ์†Œ
3๏ธโƒฃ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€ → ์ตœ์‹  Istio ๊ธฐ๋Šฅ ํ™œ์šฉ ๊ฐ€๋Šฅ
4๏ธโƒฃ ๋ฒ„๊ทธ ์ˆ˜์ • → ๊ธฐ์กด ๊ธฐ๋Šฅ์˜ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

๐Ÿ’ก ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์ „, ๊ธฐ์กด ์„œ๋น„์Šค์™€์˜ ํ˜ธํ™˜์„ฑ์„ ๋ฐ˜๋“œ์‹œ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”น 2. Istio ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐฉ๋ฒ•

โœ… 2.1 ํ˜„์žฌ Istio ๋ฒ„์ „ ํ™•์ธ

Istio์˜ ํ˜„์žฌ ์„ค์น˜๋œ ๋ฒ„์ „์„ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

istioctl version

 

์ถœ๋ ฅ ์˜ˆ์ œ:

client version: 1.17.0
control plane version: 1.16.2
data plane version: 1.16.2 (7 proxies)

๐Ÿ’ก control plane version๊ณผ data plane version์ด ๋‹ค๋ฅด๋ฉด, Sidecar๊ฐ€ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์•˜์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


โœ… 2.2 Istio ์—…๊ทธ๋ ˆ์ด๋“œ ์ค€๋น„ (์‚ฌ์ „ ์ ๊ฒ€)

Istio๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ ์ „์—, ๊ธฐ์กด ์„ค์ •์ด ์ƒˆ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

istioctl upgrade --dry-run

 

์ถœ๋ ฅ ์˜ˆ์ œ:

โœ” Istio control plane upgrade compatibility check passed
โœ” No incompatible configurations detected

๐Ÿ’ก --dry-run ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์‹ค์ œ ๋ณ€๊ฒฝ ์—†์ด ์—…๊ทธ๋ ˆ์ด๋“œ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


โœ… 2.3 Istio Control Plane ์—…๊ทธ๋ ˆ์ด๋“œ (istiod ์—…๊ทธ๋ ˆ์ด๋“œ)

Istio Control Plane์„ ์ƒˆ๋กœ์šด ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

istioctl upgrade

 

์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

kubectl get pods -n istio-system

 

์ถœ๋ ฅ ์˜ˆ์ œ:

NAME                           READY   STATUS    RESTARTS   AGE
istiod-1-17-0-xyz123           1/1     Running   0          2m

๐Ÿ’ก Control Plane์ด ์ •์ƒ์ ์œผ๋กœ ์žฌ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


โœ… 2.4 Data Plane(Sidecar) ์—…๊ทธ๋ ˆ์ด๋“œ

Sidecar Proxy(Envoy)๋„ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ง„ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉด Control Plane๊ณผ Data Plane ๊ฐ„์˜ ๋ฒ„์ „ ๋ถˆ์ผ์น˜๋กœ ์ธํ•ด ์ผ๋ถ€ ๊ธฐ๋Šฅ์ด ๋™์ž‘ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl rollout restart deployment -n default

 

์ด์ œ Data Plane์ด ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

istioctl proxy-status

 

์ถœ๋ ฅ ์˜ˆ์ œ:

NAME                                CDS        LDS        EDS        RDS        VERSION
my-app-123456-abc.default           SYNCED     SYNCED    SYNCED     SYNCED     1.17.0

๐Ÿ’ก VERSION ๊ฐ’์ด Control Plane๊ณผ ๋™์ผํ•œ ๋ฒ„์ „(1.17.0)์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”น 3. Istio ๋กค๋ฐฑ(rollback) ์ „๋žต

โœ… 3.1 ๋กค๋ฐฑ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ

Istio ์—…๊ทธ๋ ˆ์ด๋“œ ํ›„ ์„œ๋น„์Šค ์ด์ƒ์ด ๋ฐœ์ƒํ•˜๋ฉด, ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋กค๋ฐฑ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ:
1๏ธโƒฃ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ์ฐจ๋‹จ → ํŠน์ • ์„œ๋น„์Šค๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ
2๏ธโƒฃ ์„ฑ๋Šฅ ์ €ํ•˜ → Latency ์ฆ๊ฐ€ ๋˜๋Š” CPU ์‚ฌ์šฉ๋Ÿ‰ ๊ธ‰์ฆ
3๏ธโƒฃ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๊ณผ์˜ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ → ๊ธฐ์กด ์„ค์ •๊ณผ ์ถฉ๋Œ ๋ฐœ์ƒ


โœ… 3.2 Istio Control Plane ๋กค๋ฐฑ

์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑํ•˜๋ ค๋ฉด, ์ด์ „ Istio ๋ฒ„์ „์„ ๋‹ค์‹œ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

istioctl install --set profile=default --set revision=1-16-2

 

์—…๊ทธ๋ ˆ์ด๋“œํ•œ Control Plane์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

kubectl delete deployment istiod-1-17-0 -n istio-system

 

์ด์ œ Istio์˜ ์ด์ „ ๋ฒ„์ „์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

kubectl get pods -n istio-system

 

์ถœ๋ ฅ ์˜ˆ์ œ:

NAME                           READY   STATUS    RESTARTS   AGE
istiod-1-16-2-xyz123           1/1     Running   0          2m

๐Ÿ’ก ์ด์ „ ๋ฒ„์ „์˜ Istio Control Plane์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.


โœ… 3.3 Data Plane ๋กค๋ฐฑ (Sidecar ๋ฒ„์ „ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ)

Sidecar Proxy(Envoy)๋ฅผ ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋˜๋Œ๋ฆฌ๋ ค๋ฉด, Deployment๋ฅผ ์žฌ๋ฐฐํฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

kubectl rollout undo deployment -n default

 

์—…๋ฐ์ดํŠธ๋œ Sidecar๊ฐ€ ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋ณต์›๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

istioctl proxy-status

 

์ถœ๋ ฅ ์˜ˆ์ œ:

NAME                                CDS        LDS        EDS        RDS        VERSION
my-app-123456-abc.default           SYNCED     SYNCED    SYNCED     SYNCED     1.16.2

๐Ÿ’ก Sidecar Proxy์˜ ๋ฒ„์ „์ด 1.16.2๋กœ ๋ณต์›๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“Œ ๊ฒฐ๋ก 

  • Istio ์—…๊ทธ๋ ˆ์ด๋“œ๋Š” ๋ณด์•ˆ ํŒจ์น˜, ์„ฑ๋Šฅ ๊ฐœ์„  ๋ฐ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ํ™œ์šฉ์„ ์œ„ํ•ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.
  • ์—…๊ทธ๋ ˆ์ด๋“œ ์ „ --dry-run์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธํ™˜์„ฑ์„ ์ ๊ฒ€ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
  • Control Plane(istiod)๊ณผ Data Plane(istio-proxy)์„ ๋ชจ๋‘ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ์—…๊ทธ๋ ˆ์ด๋“œ ํ›„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ, ์ด์ „ ๋ฒ„์ „์œผ๋กœ ์‹ ์†ํ•˜๊ฒŒ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋Œ€๋น„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋กค๋ฐฑ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ๋Š” istioctl install --set revision=<์ด์ „ ๋ฒ„์ „>๊ณผ kubectl rollout undo deployment๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์•ˆ์ „ํ•˜๊ฒŒ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
728x90