์šฐ๋‹นํƒ•ํƒ•! Istio ์„ค์น˜ ์ˆ˜๋‚œ๊ธฐ. istioctl๊ณผ Operator ํŒจํ„ด.

7 minute read

24๋…„ 2์›”์— ์ž‘์„ฑ ํ›„, ์ตœ์‹  istio ๋ฒ„์ „์œผ๋กœ ๊ณผ์ •์„ ์—…๋ฐ์ดํŠธ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ 25๋…„ 6์›” ๊ธฐ์ค€์œผ๋กœ Istio 1.26.1 ๋ฒ„์ „์ด ์ตœ์‹  ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. Apple M3 ๋งฅ๋ถ(Sequoia 15.5)์—์„œ Rancher Desktop ํ†ตํ•ด Local Kubernetes Cluster ๊ตฌ์„ฑํ•˜์—ฌ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค. K8s ๋ฒ„์ „์€ 1.31์ž…๋‹ˆ๋‹ค.

24๋…„์˜ ์ฒซ ์ž๊ฒฉ์ฆ ๊ณต๋ถ€๋กœ Istio๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ๋ฌดํ•œ ๊ณ ํ†ต ๋ฐ›๊ณ  ์žˆ๋Š” ๋‚˜ ์ž์‹ โ€ฆ Udemy ๊ฐ•์˜๋Š” ์ญ‰ ๋‹ค ๋“ค์—ˆ๊ณ , ์ด์   ๋กœ์ปฌ ๋งฅ๋ถ์— Istio๋ฅผ ๊ตฌ์ถ•ํ•ด์„œ ์ด๋ฆฌ์ €๋ฆฌ ํ•ธ์ฆˆ์˜จ์„ ํ•ด๋ณด๊ณ  ์žˆ๋‹ค.

์ด๋ฒˆ ํฌ์ŠคํŠธ๋Š” Istio๋ฅผ ์„ค์น˜ํ•˜๋ฉด์„œ ๊ณ ๊ตฐ๋ถ„ํˆฌํ•œ ๋‚˜์˜ Istio ๋ฐฐํฌ ๊ฒฝํ—˜๊ณผ ๋น„๋ฒ•(?)์„ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

istioctl vs. Istio Operator vs. Istio helm chartPermalink

Istio๋Š” ์ •๋ง ์นœ์ ˆ(?)ํ•˜๊ฒŒ๋„ ์„ค์น˜ ๋ฐฉ๋ฒ•์„ 3๊ฐ€์ง€๋‚˜ ์ œ๊ณตํ•œ๋‹ค (์šฐ์™€ ๊ณ ๋งˆ์›Œ๋ผ เฒ _เฒ )

ํ•˜์•„โ€ฆ ์ผ๋‹จ ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ ์ง„์งœ ๋ง‰๋ง‰ ํ–ˆ๋Š”๋ฐ, ์ผ๋‹จ ๋ณธ์ธ์ด ์ฒด๊ฐํ•œ ์„ค์น˜ ๋‚œ์ด๋„ ์ˆœ์„œ๋Š”

  • (์‰ฌ์›€)
  • istioctl
  • Istio helm chart
  • Istio Operator
  • (์–ด๋ ค์›€)

Istio Operator๋Š” K8s Operator ํŒจํ„ด์— ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค๋ฉด, ์ผ๋‹จ ๋ชจ๋ฅธ์ฒ™ ํ•˜๊ณ  ๋„˜์–ด๊ฐ€์ž! (๊ทธ๋Ÿฐ๋ฐ, kiali ์„ค์น˜ํ•  ๋•Œ ๋˜ ๋‚˜์˜จ๋‹ค O=(โ€˜-โ€˜Q))

istioctl๋กœ ์„ค์น˜ํ•˜๊ธฐPermalink

์ œ์ผ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค! ์ผ๋‹จ istioctl๋ถ€ํ„ฐ ๊น”์•„์ค€๋‹ค.

brew install istioctl

์„ค์น˜ ํ›„์—” istioctl version์œผ๋กœ ์ž˜ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ์ฒดํฌํ•œ๋‹ค.

๊ทธ ๋‹ค์Œ์€ ๊ฐ„๋‹จํ•˜๋‹ค. istio-system namespace๋ฅผ ๋งŒ๋“ค๊ณ , istioctl install๋กœ ์„ค์น˜ํ•˜๋ฉด ๋! ๐Ÿค™

Istio๋Š” ์„ค์น˜ํ•  ๋•Œ ์ œ๊ณตํ•˜๋Š” ๋ช‡๊ฐ€์ง€ ๊ตฌ์„ฑ์ด ์žˆ๋Š”๋ฐ, ์˜ต์…˜์„ ์•ˆ ์ฃผ๋ฉด default๋กœ ์„ค์น˜๋˜๊ณ , istiod์™€ ๊ธฐ๋ณธ istio-ingressgateway๊ฐ€ ์„ค์น˜๋œ๋‹ค.

๊ทธ์™ธ์— demo, minimal๋„ ์žˆ๋Š”๋ฐ ํ•„์š”์— ๋”ฐ๋ผ์„œ ์„ค์น˜ํ•˜๊ธธ

Istio: Installation Configuration Profiles

Istio helm chartPermalink

์ด๋ฒˆ์—๋Š” istio๋ฅผ helm chart๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. istioctl์ด ํŽธํ•˜๊ธด ํ•˜์ง€๋งŒ, GitOps๊ฐ€ ์•ˆ ๋˜๋Š”๊ฒŒ ํ•จ์ • (โ•ฅ๏นโ•ฅ)

๋งŒ์•ฝ istio ์„ค์น˜ ๋ฒ„์ „์„ yaml ํ˜•์‹์˜ ํŒŒ์ผ๋กœ ๋ฒ„์ €๋‹ ํ•ด์•ผ ํ•œ๋‹ค๋ฉด, helm์ด ์ข‹๋‹ค.

๋ณธ์ธ์€ helmfile๋„ ํ•จ๊ป˜ ์จ์„œ ๊ตฌ์„ฑํ•ด์„œ istio๋ฅผ ์„ค์น˜ ํ–ˆ๋Š”๋ฐ, ์™„์„ฑ๋œ helmfile.yaml ํŒŒ์ผ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

repositories:
  - name: istio
    url: https://istio-release.storage.googleapis.com/charts

releases:
  - name: istio-base
    namespace: istio-system
    chart: istio/base
    version: 1.26.1
    values: []

  - name: istio-istiod
    namespace: istio-system
    chart: istio/istiod
    version: 1.26.1
    needs: [istio-system/istio-base]
    values: []

  - name: istio-gateway
    namespace: istio-system
    chart: istio/gateway
    version: 1.26.1
    needs: [istio-system/istio-istiod]
    values: []

istio helm chart์—์„œ ์ œ๊ณตํ•˜๋Š” value ํŒŒ์ผ๋„ ์ฝ์–ด๋ดค๋Š”๋ฐ, ๋”ฑํžˆ ์ปค์Šคํ…€ ํ•  ๋ถ€๋ถ„ ์—†์ด ๋ฐ”๋กœ ์“ฐ๋ฉด ๋œ๋‹ค!

istioctl์˜ "default" ๊ตฌ์„ฑ๊ณผ ๋™์ผํ•˜๊ฒŒ ์„ค์น˜ํ•˜๋ ค๋ฉด ์ €๋ ‡๊ฒŒ istio-base, istio-istiod, istio-gateway 3๊ฐœ๋ฅผ ์„ค์น˜ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

  • istio-base๋Š” istio์˜ CRD๊ฐ€ ๋ชจ์—ฌ ์žˆ๋Š” helm chart์ด๋‹ค.
  • istio-istiod๋ฅผ ์„ค์น˜ํ•ด์•ผ istiod๊ฐ€ ๋””ํ”Œ๋กœ์ด ๋œ๋‹ค.
  • istio-gateway๋„ ์„ค์น˜ํ•˜๋ฉด, ๊ธฐ๋ณธ ingress gateway๊นŒ์ง€ ๋””ํ”Œ๋กœ์ด!

์ด๋ ‡๊ฒŒ ํ•ด๋†“๊ณ  ๋‹ค ์“ฐ๋ฉด helmfile destroy๋กœ ๊น”๋”ํ•˜๊ฒŒ ๋‚ ๋ ธ๋‹ค ใ…Žใ…Ž

Istio ๊ณต์‹ ๋ฌธ์„œ์—์„œ๋„ helm์œผ๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์œผ๋‹ˆ ํ•„์š”ํ•˜๋‹ค๋ฉด ์ฐธ๊ณ ํ•˜์ž!

โžก๏ธ Istio: Install with Helm

Istio Operator๋กœ ์„ค์น˜ํ•˜๊ธฐPermalink

์š”๊ฑด K8s์˜ Operator ํŒจํ„ด์œผ๋กœ Istio๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ผ๋‹จ Operator ํŒจํ„ด์ด ๋ญ”์ง€ ์ž˜ ๋ชจ๋ฅธ๋‹ค๋ฉด ํŒจ์Šคํ•˜๋Š” ๊ฑธ ์ถ”์ฒœํ•œ๋‹คโ€ฆ

25.06์— ํ™•์ธํ•ด๋ณด๋‹ˆ, 1.26.1 ๋ฒ„์ „์—์„œ๋Š” istioctl์™€ helm chart๋กœ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ• ๋ชจ๋‘ Deprecate ๋˜์—ˆ์Šต๋‹ˆ๋‹คโ€ฆ ์•„๋ž˜๋Š” ๋ฌธ๋‹จ์€ ์•„์นด์ด๋ธŒ๋ฅผ ์œ„ํ•ด ๋‚จ๊ฒจ๋‘ก๋‹ˆ๋‹ค!

์ผ๋‹จ Istio Operator๋ฅผ ๋„์›Œ์•ผ ํ•˜๋Š”๋ฐ, istioctl๊ณผ helm chart๋กœ ๋„์šฐ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. (istioctl ๋ฐฉ์‹์€ 25.06 ๊ธฐ์ค€ Deprecation ๋˜์—ˆ์Šต๋‹ˆ๋‹คโ€ฆ)

# Deprecated: 25.06 Checked
istioctl operator init
# https://github.com/istio/istio/tree/1.20.7/manifests/charts/istio-operator
helm install istio-operator \
    manifests/charts/istio-operator \
    -n istio-operator

์š”๋ ‡๊ฒŒ istio-operator๋ผ๋Š” namespace์— Istio Operator๋ฅผ ๋„์›Œ๋‘๋ฉด, ์ด์ œ IstioOperator ๋ฆฌ์†Œ์Šค๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ๋‹ค! (์ด๋ฆ„ ํ—ท๊ฐˆ๋ฆฌ๋‹ˆ ์ฃผ์˜!)

kubectl apply -f - <<EOF
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  namespace: istio-system
  name: example-istiocontrolplane
spec:
  profile: demo
EOF

๋ณด๋ฉด, istio-system ns์— istiod๊ฐ€ ํ•˜๋‚˜ ๋œฌ ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค!!


Addon ์„ค์น˜: Prometheus & KialiPermalink

ํœด์šฐโ€ฆ ๊ฒจ์šฐ๊ฒจ์šฐ Istio๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ์— ๋„์› ๋‹ค. Istio ์ด ๋…€์„ ๋ณดํ†ต ๋‚ด๊ธฐ๊ฐ€ ์•„๋‹ˆ์—ˆ๋‹คโ€ฆ ์ด์ œ istio๋ฅผ ์šด์˜ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ addon์„ ์„ค์น˜ํ•ด๋ณด์ž! ์—ฌ๋Ÿฌ addon์ด ์žˆ์ง€๋งŒ, ํ•„์ˆ˜์ ์ธ ๊ฑด Prometheus์™€ Kiali ๋‘ ๋…€์„์ด๋‹ค.

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•Permalink

Istio์—์„  ๋„ˆ๋ฌด๋‚˜๋„ ๊ณ ๋ง™๊ฒŒ๋„ Istio Addon์„ ๋„์šฐ๊ธฐ ์œ„ํ•œ yaml ํŒŒ์ผ์„ Github์— ์˜ฌ๋ ค๋’€๋‹ค!! source ๊ทธ๋ž˜์„œ ์š”๊ธฐ์— ์žˆ๋Š” addon ํŒŒ์ผ์„ ๊ทธ๋ƒฅ k apply -f ํ•˜๋ฉด ๋œ๋‹ค.

export PROMETHEUS_ADDON=https://raw.githubusercontent.com/istio/istio/refs/tags/1.26.1/samples/addons/prometheus.yaml
kubectl apply -f $PROMETHEUS_ADDON -n istio-system

export KIALI_ADDON=https://raw.githubusercontent.com/istio/istio/refs/tags/1.26.1/samples/addons/kiali.yaml
kubectl apply -f $KIALI_ADDON -n istio-system

๊ผญ istio-system namespace์— ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค!

๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ๋กœ์ปฌ์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก port-forward ํ•ด์ฃผ์ž.

kubectl port-forward -n istio-system svc/kiali 20001:20001
kubectl port-forward -n istio-system svc/prometheus 9090:9090

๋ฆฌ์†Œ์Šค๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ๋ฐ˜๋Œ€๋กœ kubectl delete -f ํ•ด์ฃผ์ž.

kubectl delete -f $PROMETHEUS_ADDON -n istio-system
kubectl delete -f $KIALI_ADDON -n istio-system

Kiali OperatorPermalink

Istio์˜ IstioOperator์ฒ˜๋Ÿผ Kiali์™€ Prometheus๋„ Operator ํŒจํ„ด์„ ์ง€์›ํ•œ๋‹ค! (์šฐ์™€ ๋„ˆ๋ฌด ๊ณ ๋งˆ์›Œ๋ผ เฒ _เฒ )

Prometheus๋„ Operator ํŒจํ„ด์œผ๋กœ ์„ค์น˜ํ•ด๋ณด๋ฉด ์ข‹๊ฒ ์ง€๋งŒโ€ฆ Prometheus๋„ Istio ๋งŒํผ ๋ณต์žกํ•œ ๋…€์„์ด๋ผ Prometheus Operator๋Š” ๋ณ„๋„์˜ ํฌ์ŠคํŠธ๋กœ ๋ถ„๋ฆฌํ•˜๊ฒ ๋‹ค

์ผ๋‹จ Kiali Operator๊ฐ€ ๋™์ž‘ํ•  kiali-operator ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค.

kubectl create ns kiali-operator

๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด helmfile.yaml์„ ๊ตฌ์„ฑํ•œ๋‹ค.

# @helmfile-kiali.yaml
repositories:
  - name: kiali
    url: https://kiali.org/helm-charts

releases:
  - name: kiali-operator
    namespace: kiali-operator
    chart: kiali/kiali-operator
    version: 2.8.0
    values: []

helmfile apply -f helmfile-kiali.yaml๋กœ ๋””ํ”Œ๋กœ์ด ํ•œ๋‹ค.

๋งŒ์•ฝ, values ํ•ญ๋ชฉ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ธํŒ…ํ•˜๋ฉด, Kiali Operator์™€ ํ•จ๊ป˜ Kiali CR๋„ ํ•จ๊ป˜ ์ƒ์„ฑ๋œ๋‹ค.

# @helmfile-kiali.yaml
...
releases:
  - name: kiali-operator
    namespace: kiali-operator
    chart: kiali/kiali-operator
    version: 2.8.0
    values:
      cr:
        create: true
        namespace: istio-system

์•„๋‹ˆ๋ฉด Kiali ๋ฆฌ์†Œ์Šค๋ฅผ ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ์ง์ ‘ ๋„์šฐ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค!

kubectl apply -f - <<EOF
  apiVersion: kiali.io/v1alpha1
  kind: Kiali
  metadata:
    name: kiali
    namespace: istio-system
  spec:
    auth:
      strategy: anonymous
EOF

ํ™•์ธํ•ด๋ณด๋ฉด, istio-system ns์— kiali ๋ฆฌ์†Œ์Šค๊ฐ€ ๋œฌ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค!

๊ฟ€ํŒ!!Permalink

๊ท€์ฐฎ๊ฒŒ ๋งค๋ฒˆ kubectl port-forward ํ•  ํ•„์š” ์—†์ด istioctl dashboard ๋ช…๋ น์–ด๋กœ ํฌํŠธ ํฌ์›Œ๋”ฉ ํ•  ์ˆ˜ ์žˆ๋‹ค!! ใ…Žใ…Ž

$ istioctl dashboard kiali
$ istioctl dashboard prometheus

๋งˆ๋ฌด๋ฆฌ ํ•˜๋ฉฐPermalink

์ด์ œ Istio๋ฅผ ๊ตฌ์ถ•ํ–ˆ์œผ๋‹ˆ, ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋“ค์„ ๋„์›Œ์„œ Istio๋ฅผ ํ™œ์šฉํ•ด๋ณผ ์ฐจ๋ก€๋‹ค!!

Airflow์˜ Istio Graph. ๊ฐ ์ปดํฌ๋„ŒํŠธ๊ฐ€ Postgres์™€ Redis๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ž˜ ๋ณด์ธ๋‹ค.

Istio์—์„œ ์ œ๊ณตํ•˜๋Š” helloworld ์˜ˆ์ œ์™€ Book Info ์˜ˆ์ œ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋งˆ๊ตฌ๋งˆ๊ตฌ ์ฃผ๋ฌผ๋Ÿฌ ๋ณด์ž! (์šฐํ•˜ํ•˜โ€ฆ ๋‹ค์Œ ํฌ์ŠคํŠธ์—! To be continuedโ€ฆ)

โžก๏ธ Istio helloworld ์˜ˆ์ œ ๋ฐ๋ชจ
โžก๏ธ Istio bookinfo ์˜ˆ์ œ ๋ฐ๋ชจ