Что такое Istio в контексте Kubernetes?

«Что такое Istio в контексте Kubernetes?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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 для соответствия внутренним стандартам безопасности.