Ответ
Istio — это open-source сервис-меш (service mesh) для платформ вроде Kubernetes, который предоставляет единый способ управления сетевой коммуникацией между микросервисами, обеспечивая безопасность, наблюдаемость и отказоустойчивость.
Ключевые возможности:
- Управление трафиком: Точный контроль над потоком запросов между сервисами. Это позволяет реализовать канареечные развертывания (canary releases), A/B-тестирование и инжекцию задержек для тестирования отказоустойчивости.
- Безопасность: Сквозное шифрование трафика между сервисами с помощью взаимного TLS (mTLS) и политики доступа на уровне сервиса.
- Наблюдаемость: Автоматический сбор метрик, логов и распределенных трассировок (через интеграцию с Jaeger, Zipkin, Prometheus, Grafana).
Пример: VirtualService для канареечного развертывания
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v1
weight: 90 # 90% трафика на старую версию
- destination:
host: reviews
subset: v2
weight: 10 # 10% трафика на новую версию
---
# DestinationRule определяет подмножества (subset)
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
Istio внедряет в каждый под sidecar-прокси (на основе Envoy), который перехватывает весь входящий и исходящий сетевой трафик. В одном из проектов внедрение Istio позволило нам быстро локализовать "узкие" места в цепочке вызовов микросервисов и внедрить mTLS для соответствия внутренним стандартам безопасности.