Ограничение области действия Service Mesh

Для программирования service mesh управляющая плоскость Istio (Istiod) считывает различные конфигурации, включая основные типы Kubernetes, такие как Service и Node, а также собственные типы Istio, например Gateway. Эти данные затем отправляются в плоскость данных (подробнее см. в разделе Architecture).

По умолчанию управляющая плоскость считывает всю конфигурацию во всех пространствах имён. Каждый экземпляр прокси также получает конфигурацию для всех пространств имён. Это включает информацию о рабочих нагрузках, которые не зарегистрированы в mesh.

Такое поведение по умолчанию обеспечивает корректную работу из коробки, но сопровождается затратами на масштабируемость. Каждая конфигурация требует ресурсов (в первую очередь CPU и памяти) для поддержки и актуализации. При больших масштабах критически важно ограничить область действия конфигурации, чтобы избежать чрезмерного потребления ресурсов.

Содержание

Механизмы ограничения области действия

Istio предлагает несколько инструментов для управления областью действия конфигурации в зависимости от различных сценариев использования. В зависимости от ваших требований их можно использовать по отдельности или в комбинации.

  • Sidecar предоставляет механизм для конкретных рабочих нагрузок, чтобы импортировать набор конфигураций
  • exportTo предоставляет механизм для экспорта конфигурации к набору рабочих нагрузок
  • discoverySelectors предоставляет механизм, позволяющий Istio полностью игнорировать набор конфигураций

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

Что произойдет, если я подключусь к сервису вне моей области действия?

При подключении к сервису, который был исключён с помощью одного из механизмов ограничения области действия, плоскость данных не будет иметь информации о назначении, поэтому такой трафик будет рассматриваться как Unmatched traffic.

Как насчёт Gateways?

Хотя Gateways учитывают exportTo и discoverySelectors, объекты Sidecar не влияют на Gateways. Однако, в отличие от sidecar, gateways по умолчанию не имеют конфигурации для всего кластера. Вместо этого каждая конфигурация явно прикрепляется к gateway, что в основном избегает этой проблемы.

Тем не менее, в настоящее время часть конфигурации плоскости данных (так называемый «cluster» в терминах Envoy) всегда отправляется для всего кластера, даже если она не указана явно.