Skip to content
EN

Что такое Istio

Коротко:

Istio — open-source service mesh для Kubernetes, originated Google/IBM (2017), CNCF incubation. Самый feature-rich service mesh: mTLS automatic, weighted routing, circuit breakers, observability, WASM extensions. Deploy: istioctl или Helm chart installs istiod (control plane) + injects Envoy sidecars в pods. Production users: eBay, Salesforce, Airbnb.

Ниже: подробности, пример, смежные термины, FAQ.

Проверить свой сайт →

Подробности

  • istiod: control plane (Pilot + Citadel + Galley merged)
  • Envoy sidecar: data plane, injected automatically в labeled namespaces
  • VirtualService: routing rules (weight, headers, retries)
  • DestinationRule: subsets, load balancing policy
  • AuthorizationPolicy: L7 access control

Пример

# Inject Istio в namespace
kubectl label namespace my-app istio-injection=enabled

# Canary deployment с VirtualService
kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: my-app
spec:
  http:
  - route:
    - destination: { host: my-app, subset: v1 }
      weight: 80
    - destination: { host: my-app, subset: v2 }
      weight: 20
EOF

Смежные термины

Что такое Istio?

Istio — это мощный сервисный mesh для Kubernetes, который обеспечивает управление сервисами, их безопасность и мониторинг. Он позволяет разработчикам управлять сетевыми взаимодействиями между микросервисами, обеспечивая такие функции, как маршрутизация, балансировка нагрузки, аутентификация и авторизация. Istio использует Envoy в качестве прокси-сервера, что позволяет легко интегрировать его в существующую архитектуру Kubernetes без необходимости изменения кода приложений.

Как установить и настроить Istio в Kubernetes?

Установка Istio в кластер Kubernetes достаточно проста и состоит из нескольких шагов. Для начала необходимо скачать последнюю версию Istio с официального сайта:

curl -L https://istio.io/downloadIstio | sh -

После этого перейдите в директорию с установленным Istio:

cd istio-*

Теперь установим Istio с помощью команды:

bin/istioctl install --set profile=demo

Эта команда установит Istio с профилем demo, который включает в себя все основные компоненты. После успешной установки необходимо активировать автоматическую инъекцию Sidecar для вашего namespace:

kubectl label namespace default istio-injection=enabled

Теперь вы можете развернуть ваше приложение в этом пространстве имен, и Istio автоматически добавит Envoy proxy к каждому поду.

Преимущества использования Istio

Istio предоставляет множество преимуществ для управления микросервисами в Kubernetes:

  • Управление трафиком: Istio позволяет настраивать сложные правила маршрутизации, такие как канареечные релизы и A/B тестирование. Вы можете управлять трафиком на уровне сервисов, что упрощает развертывание новых версий приложений.
  • Безопасность: Istio обеспечивает шифрование трафика между сервисами, а также поддержку аутентификации и авторизации. Это позволяет защитить ваши приложения от несанкционированного доступа.
  • Мониторинг и трассировка: Istio интегрируется с инструментами мониторинга, такими как Prometheus и Grafana, что позволяет визуализировать метрики и производительность ваших сервисов. Вы также можете использовать Jaeger для распределенной трассировки запросов.

Пример настройки маршрутизации с помощью Istio:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: my-service
spec:
  hosts:
  - my-service
  http:
  - route:
    - destination:
        host: my-service
        subset: v1
      weight: 90
    - destination:
        host: my-service
        subset: v2
      weight: 10

В этом примере 90% трафика направляется на версию v1 сервиса, а 10% — на v2, что позволяет безопасно тестировать новые изменения.

Больше по теме

Часто задаваемые вопросы

Istio vs Linkerd?

Istio: more features, Envoy-based (C++), complex config. Linkerd: Rust, lightweight, simpler UX. Для enterprise — Istio. Для < 50 services — Linkerd.

Performance overhead?

+3-7 ms latency per hop, +30-100 MB RAM per pod. Acceptable для most but measure на critical paths.

Ambient mode — что?

Istio 1.18+ introduced ambient mode — sidecar-less (ztunnel per node). Less overhead, но feature parity still WIP.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.