مقدمه
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: 10mTLS بین سرویسها
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 kialiIstio پیچیدگی عملیاتی قابل توجهی اضافه میکند اما در استقرارهای بزرگ microservice که به امنیت، observability و کنترل ترافیک یکپارچه در دهها سرویس نیاز دارید، ارزشش را دارد.
