Sidecar чи Ambient?

Сервісна мережа Istio логічно поділена на панель даних та панель управління.

Панель даних — це набір проксі-серверів, які контролюють усю мережеву комунікацію між мікросервісами. Вони також збирають і звітують про телеметрію всього трафіку мережі.

Панель управління керує та налаштовує проксі-сервери на рівні даних.

Istio підтримує два основних режими панелі даних:

  • Режим sidecar, який розгортає проксі-сервер Envoy разом з кожним Podʼом, який ви запускаєте у вашому кластері, або працює поряд з сервісами, що працюють на віртуальних машинах.
  • Режим ambient, який використовує проксі-сервер на рівні 4 для кожного вузла та, за потреби, проксі-сервер Envoy на рівні 7 для функцій на рівні 7.

Обидва режими можуть взаємодіяти один з однимα, і ви можете вибрати певні простори імен або навантаження для кожного режиму.

Режим Sidecar

Istio була побудована на патерні sidecar з першого релізу у 2017 році. Режим sidecar добре зрозумілий і ретельно перевірений, але має витрати на ресурси та операційні накладні витрати.

  • Кожне застосування, яке ви розгортаєте, має проксі-сервер Envoy вставлений як sidecar.
  • Всі проксі-сервери можуть обробляти як рівень 4, так і рівень 7.

Режим Ambient

Запущений у 2022 році, режим ambient був створений для усунення недоліків, про які повідомляли користувачі режиму sidecar. В Istio 1.22, він готовий до використання в операційних середовищах для випадків використання в одному кластері.

  • Увесь трафік пропускається через проксі-сервер на рівні 4.
  • Застосування можуть вибрати маршрутизацію через проксі-сервер Envoy для отримання функцій рівня 7.

Вибір між Sidecar і Ambient

Користувачі часто розгортають мережу для забезпечення рівня нульової довіри як перший крок, а потім вибірково активують можливості L7 за потреби. Ambient-мережа дозволяє цим користувачам уникнути витрат на обробку L7, коли це не потрібно.

SidecarAmbient
Управління трафікомПовний набір функцій IstioПовний набір функцій Istio (потребує використання waypoint)
БезпекаПовний набір функцій IstioПовний набір функцій Istio: шифрування та авторизація L4 в режимі ambient. Потребує waypoint для авторизації L7.
СпостережуваністьПовний набір функцій IstioПовний набір функцій Istio: телеметрія L4 в режимі ambient; спостережуваність L7 при використанні waypoint
РозширюваністьПовний набір функцій IstioПовний набір функцій Istio (потребує використання waypoint) α
Додавання навантажень до мережіВстановіть мітку на простір імен і перезапустіть усі Podʼи, щоб додати sidecarВстановіть мітку на простір імен — перезапуск Podʼів не потрібен
Поетапне розгортанняБінарний: sidecar доданий або ніПоступове: L4 завжди ввімкнено, L7 може бути додано за допомогою конфігурації
Управління життєвим цикломПроксі-сервери управляються розробником застосунківАдміністратор платформи
Використання ресурсівНеекономно; ресурси ЦП і памʼяті повинні бути виділені для найгіршого випадку використання кожного окремого PodʼаПроксі-сервери waypoint можуть автоматично масштабуватися як будь-яке інше розгортання Kubernetes.
Завантаження з великою кількістю реплік може використовувати один waypoint, на відміну від кожного з них, що має свій sidecar.
Середня вартість ресурсівВеликаМаленька
Середня затримка (p90/p99)0.63мс-0.88мсAmbient: 0.16мс-0.20мс
Waypoint: 0.40мс-0.50мс
Кроки обробки L72 (source і destination sidecar)1 (destination waypoint)
Конфігурація в масштабіПотребує конфігурації області кожного sidecar, щоб зменшити конфігураціюПрацює без спеціальної конфігурації
Підтримка протоколів "server-first"Потребує конфігураціїТак
Підтримка завдань (Jobs) KubernetesУскладнена тривалим життям sidecarПрозора
Модель безпекиНайсильніша: кожен робочий процес має свої власні ключіСильна: кожен агент вузла має лише ключі для навантажень на цьому вузлі
Скомпрометований Pod застосунку
дає доступ до ключів мережі
ТакНі
ПідтримкаСтабільна, включаючи багатокластерніБета, одиночний кластер
Платформи, що підтримуютьсяKubernetes (будь-який CNI)
Віртуальні машини
Kubernetes (будь-який CNI)

Функції рівня 4 проти рівня 7

Навантаження для обробки протоколів на рівні 7 суттєво вищі, ніж для обробки мережевих пакетів на рівні 4. Для конкретного сервісу, якщо ваші вимоги можуть бути виконані на L4, сервісна мережа може бути реалізована за суттєво меншу вартість.

Безпека

L4L7
ШифруванняУвесь трафік між Podʼами шифрується за допомогою mTLS.Н/Д—службова ідентичність в Istio базується на TLS.
Автентифікація між службамиSPIFFE, через сертифікати mTLS. Istio видає короткоживучий X.509 сертифікат, який кодує ідентичність службового облікового запису Podʼа.Н/Д—службова ідентичність в Istio базується на TLS.
Авторизація між службамиМережева авторизація, плюс політика на основі ідентичності, наприклад:
  • A може приймати вхідні виклики лише від "10.2.0.0/16";
  • A може викликати B.
Повна політика, наприклад:
  • A може GET /foo на B тільки з дійсними обліковими даними кінцевого користувача, які містять READ область.
Автентифікація кінцевого користувачаН/Д—не можна застосувати налаштування для кожного користувача.Локальна автентифікація JWT, підтримка віддаленої автентифікації через OAuth та OIDC потоки.
Авторизація кінцевого користувачаН/Д—див. вище.Політики між службами можуть бути розширені для вимоги облікових даних кінцевого користувача з певними областями, видавцями, принципалами, аудиторіями тощо
Повний доступ користувача до ресурсу може бути реалізований за допомогою зовнішньої авторизації, що дозволяє політику на кожний запит з рішеннями з зовнішньої служби, наприклад, OPA.

Спостережуваність

L4L7
ЛогуванняОсновна мережева інформація: мережевий 5-кортеж, байти надіслані/отримані тощо. Див. документацію Envoy.Повні метадані запиту, окрім основної мережевої інформації.
ТрейсингНа даний момент ні; можливий в майбутньому з HBONE.Envoy бере участь у розподіленому трейсі. Див. огляд Istio по трейсу.
МетрикиTCP тільки (байти надіслані/отримані, кількість пакетів тощо).Метрики L7 RED: кількість запитів, кількість помилок, тривалість запиту (затримка).

Управління трафіком

L4L7
Балансування навантаженняТільки на рівні зʼєднання. Див. завдання зміщення TCP трафіку.На запит, що дозволяє, наприклад, розгортання canary, трафік gRPC тощо. Див. завдання зміщення HTTP трафіку.
Запобіжник (Circuit breaking)TCP тільки.HTTP налаштування на додачу до TCP.
Виявлення аномалійПри встановленні/збої зʼєднання.При успіху/збої запиту.
Обмеження швидкостіОбмеження швидкості на даних зʼєднання L4 тільки, при встановленні зʼєднання, з глобальними та локальними опціями обмеження швидкості.Обмеження швидкості на метаданих запиту L7, на кожний запит.
Тайм-аутиТільки встановлення зʼєднання (продовження зʼєднання конфігуроване через налаштування розриву зʼєднання).На кожний запит.
Повторні спробиПовторна спроба встановлення зʼєднанняПовторна спроба кожного запиту.
Інʼєкція збоївН/Д—інʼєкція збоїв не може бути налаштована на TCP зʼєднаннях.Повні помилки рівня застосунка та зʼєднання (тайм-аути, затримки, конкретні коди відповідей).
Моніторинг трафікуН/Д—тільки HTTPМоніторинг запитів на кілька бекендів за відсотком.

Підтримувані функції

В Istio 1.22, реалізовані такі функції режиму ambient, але наразі вони мають статус Alpha:

  • Взаємодія з sidecar
  • Класичні API Istio (VirtualService та DestinationRule)
  • Мультикластерні установки
  • DNS проксі
  • IPv6/Подвійний стек
  • Підтримка SOCKS5 (для виходу)

Наступні функції ще не реалізовані:

  • Контрольований вихідний трафік
  • Підтримка мультимереж
  • Підтримка ВМ
Чи була ця інформація корисною?
Чи є у вас пропозиції щодо покращення?

Дякуємо за ваш відгук!