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

Ответ

Мой опыт работы с Service Mesh сосредоточен на Istio и Linkerd в Kubernetes-средах. Я занимался:

  • Внедрением и настройкой: Развертывание control plane и sidecar-прокси (Envoy) для управления трафиком между микросервисами.
  • Управлением трафиком: Настройка правил маршрутизации для canary- и blue-green-развертываний через VirtualService и DestinationRule. Реализация отказоустойчивости с retries, timeouts и circuit breakers.
  • Безопасностью: Внедрение взаимного TLS (mTLS) для шифрования трафика "сервис-сервис" и политик авторизации на уровне сетевого слоя.
  • Наблюдаемостью: Интеграция с Prometheus, Grafana и Jaeger для сбора метрик, визуализации и распределенного трейсинга запросов.

Пример: Конфигурация Istio для постепенного переноса трафика между версиями сервиса:

apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
      weight: 75
    - destination:
        host: reviews
        subset: v2
      weight: 25

Основная ценность Service Mesh — вынос сквозной функциональности (безопасность, наблюдение, управление трафиком) из кода приложения в инфраструктурный слой.

Ответ 18+ 🔞

А, слушай, про Service Mesh? Ну, это ж моя тема, ёпта. Сидел я с этим Istio и Linkerd в этих ваших кубернетесах, как будто на работе второй дом построил. Честно говоря, когда впервые погружался, сам от себя охуел — столько всего нового, голова кругом. Но разобрался, бля.

Что я там только не делал, ёбать мои старые костыли:

  • Внедрял и настраивал: Это когда ты разворачиваешь эту управляющую хуйню (control plane) и эти sidecar-прокси (Envoy, короче), которые начинают вертеть всем трафиком между микросервисами. Сначала кажется, что манда с ушами, но потом привыкаешь.
  • Трафиком рулил: Вот это самое интересное. Настраиваешь правила, чтобы тихонько, по чуть-чуть, новый функционал вкатывать — это canary-развертывания, blue-green... Всё через VirtualService и DestinationRule. А ещё чтоб система не разваливалась, если что-то сдохло — настраиваешь повторные запросы, таймауты и эти circuit breakers, чтобы не долбить в уже мёртвый сервис. Без этого — доверия ебать ноль.
  • Безопасность: Включаешь взаимный TLS (mTLS), чтобы весь трафик между сервисами шифровался. И политики, кто куда может ходить. Иначе в современном мире — вы ходите по охуенно тонкому льду, чувак.
  • Наблюдаемость: Подружил всё это дело с Prometheus, Grafana и Jaeger. Чтобы метрики собирались, графики красивые были и можно было проследить один запрос через всю кучу сервисов. Без этого ты просто слепой, э бошка думай.

Вот, смотри, пример, как я потихоньку трафик с одной версии сервиса на другую переводил:

apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
      weight: 75
    - destination:
        host: reviews
        subset: v2
      weight: 25

Красота же? 75% трафика пока на старую версию, 25% — на новую. Посмотрел, что всё ок — увеличил долю. А если пиздопроебибна какая-то — откатил.

И главная фишка всей этой сетки, понимаешь? Вся эта сквозная хитрая жопа — безопасность, слежка за трафиком, управление им — выносится из кода самого приложения. Программисты пишут бизнес-логику, а эта ебушки-воробушки живёт себе в инфраструктурном слое. И всем хорошо. Ну, почти всем — админам сначала терпения ноль ебать, но потом входят во вкус.