Skip to content
EN

Что такое Service Mesh

Коротко:

Service Mesh — infrastructure layer, managing communication between microservices. Sidecar proxies (Envoy) intercept all traffic → handle: mTLS encryption, retries, circuit breakers, traffic shaping, observability (metrics/traces). Примеры: Istio (most-featured), Linkerd (lightweight), Consul Connect, AWS App Mesh. Overhead: +2-5 ms latency per hop, больше memory.

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

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

Подробности

  • Sidecar pattern: каждый pod имеет Envoy proxy container
  • Control plane: управляет всеми sidecars (Istio istiod, Linkerd control plane)
  • mTLS by default: zero-trust networking внутри cluster
  • Traffic management: weighted routing, canary, A/B без application code
  • Observability: auto-generated traces, metrics, mTLS cert rotation

Пример

# Istio VirtualService — 10% traffic to v2
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
spec:
  http:
  - route:
    - destination: { host: my-service, subset: v1 }
      weight: 90
    - destination: { host: my-service, subset: v2 }
      weight: 10

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

Что такое Service Mesh?

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

Основные компоненты Service Mesh

Service Mesh состоит из нескольких ключевых компонентов:

  • Прокси-серверы: Обычно развертываются рядом с каждым микросервисом, чтобы перехватывать и управлять трафиком. Примеры: Envoy, Linkerd Proxy.
  • Контроллер управления: Центральный компонент, который управляет конфигурацией прокси и определяет правила трафика. Примеры: Istiod для Istio.
  • Система наблюдения: Позволяет отслеживать производительность, доступность и поведение сервисов. Инструменты: Prometheus, Grafana.

Каждый из этих компонентов играет важную роль в обеспечении стабильности и безопасности сетевых взаимодействий.

Практическое применение Istio и Linkerd

Рассмотрим, как настроить Service Mesh с помощью Istio и Linkerd. Чтобы продемонстрировать это, мы начнем с установки Istio.

  1. Установка Istio: Скачайте последнюю версию Istio:
curl -L https://istio.io/downloadIstio | sh -
  1. Перейдите в каталог Istio:
cd istio-
  1. Добавьте Istio в PATH:
export PATH=$PWD/bin:$PATH
  1. Установите Istio в ваш кластер Kubernetes:
istioctl install --set profile=demo

После установки мы можем протестировать работу Istio, развернув простое приложение:

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml

Теперь перейдем к Linkerd. Для его установки выполните следующие команды:

  1. Установите Linkerd:
curl -sL https://run.linkerd.io/install | sh
  1. Добавьте Linkerd в PATH:
export PATH=$HOME/.linkerd2/bin:$PATH
  1. Проверьте установку:
linkerd check

После этого можно развернуть приложение с помощью Linkerd:

linkerd inject samples/bookinfo/platform/kube/bookinfo.yaml | kubectl apply -f -

Как только приложения будут развернуты, вы сможете наблюдать за их работой с помощью встроенных инструментов Linkerd и Istio, что позволит вам контролировать сетевые взаимодействия и производительность.

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

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

Service mesh или API gateway?

Gateway — north-south (ingress). Mesh — east-west (service-to-service). Дополняют друг друга.

Overkill для small cluster?

Для < 10 services — yes. Complexity не окупается. Для 50+ services + mTLS requirement — worth it.

Istio или Linkerd?

Istio: feature-rich, steep learning curve. Linkerd: lightweight Rust, simpler UX. Для starter — Linkerd.

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

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