Какой у вас опыт работы с Istio?

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

Ответ

Я использовал Istio в качестве service mesh для управления трафиком, обеспечения безопасности и сбора телеметрии в production-кластерах Kubernetes.

Основные сценарии применения и настройки:

  • Управление трафиком:
    • Canary-деплой и A/B-тестирование: Настройка VirtualService и DestinationRule для маршрутизации части трафика на новую версию сервиса.
    • Трафик между неймспейсами: Использование ServiceEntry и Sidecar для изоляции и контроля трафика.
  • Безопасность: Включение взаимного TLS (mTLS) между подами в mesh с помощью PeerAuthentication. Настройка политик доступа на уровне сервисов с помощью AuthorizationPolicy.
  • Наблюдаемость: Интеграция с Prometheus для сбора метрик (latency, errors, traffic). Использование Grafana и Kiali для визуализации топологии сервисов и анализа трафика. Настройка распределенного трейсинга через Jaeger.
  • Упрощение Ingress: Замена стандартного Ingress Controller на Istio Gateway и VirtualService для более гибкого управления входящим трафиком с поддержкой gRPC, WebSockets и сложного роутинга на основе заголовков.

Пример конфигурации для канареечного (canary) деплоя:

# DestinationRule определяет подмножества (subsets) для разных версий деплоя
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: reviews-dr
spec:
  host: reviews-svc
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2
---
# VirtualService управляет маршрутизацией трафика между subsets
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: reviews-vs
spec:
  hosts:
  - reviews-svc
  http:
  - route:
    - destination:
        host: reviews-svc
        subset: v1
      weight: 90  # 90% трафика на стабильную версию
    - destination:
        host: reviews-svc
        subset: v2
      weight: 10  # 10% трафика на новую версию для тестирования