رفتن به محتوا
بازگشت به وبلاگ
دواپس

Istio Service Mesh: مدیریت ترافیک و mTLS

استقرار Istio Service Mesh روی Kubernetes: TLS متقابل، جابجایی ترافیک، Circuit Breaking، مشاهده‌پذیری و پالیسی‌های دسترسی.

آذر ۱۴۰۴
۱۸ دقیقه مطالعه

مقدمه

Istio یک service mesh است که بدون تغییر کد اپلیکیشن، observability، مدیریت ترافیک و امنیت به microservice ها اضافه می‌کند. در معماری microservice با ده‌ها سرویس، مدیریت mTLS بین سرویس‌ها، circuit breaker ها، retry ها و distributed tracing پیچیده می‌شود. Istio همه اینها را در سطح زیرساخت با sidecar proxy (Envoy) مدیریت می‌کند.

نصب Istio

BASH
curl -L https://istio.io/downloadIstio | sh -
cd istio-1.20.0 && export PATH=$PWD/bin:$PATH

istioctl install --set profile=demo -y

# فعال‌سازی تزریق خودکار sidecar
kubectl label namespace default istio-injection=enabled

مدیریت ترافیک

YAML
# کنترل توزیع ترافیک (Canary 10%)
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: myapp
spec:
  hosts: [myapp]
  http:
  - route:
    - destination:
        host: myapp
        subset: v1
      weight: 90
    - destination:
        host: myapp
        subset: v2
      weight: 10

mTLS بین سرویس‌ها

YAML
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
  namespace: production
spec:
  mtls:
    mode: STRICT  # همه ترافیک باید از mTLS استفاده کند

دیباگ

BASH
# بررسی تزریق sidecar
kubectl get pod myapp-xxx -o jsonpath='{.spec.containers[*].name}'

# تحلیل مشکلات
istioctl analyze -n production

# داشبورد Kiali
istioctl dashboard kiali

Istio پیچیدگی عملیاتی قابل توجهی اضافه می‌کند اما در استقرارهای بزرگ microservice که به امنیت، observability و کنترل ترافیک یکپارچه در ده‌ها سرویس نیاز دارید، ارزشش را دارد.