Использование DiscoverySelectors
Рабочая нагрузка включается в Service Mesh, если она удовлетворяет двум условиям:
- Она была обнаружена управляющей плоскостью.
- В неё был внедрён прокси-сайдкар Envoy.
По умолчанию управляющая плоскость сканирует рабочие нагрузки во всех пространствах имён кластера. Такое поведение по умолчанию приводит к двум результатам:
- Каждый экземпляр прокси настраивается для всех пространств имён, даже для рабочих нагрузок, не входящих в mesh.
- Прокси-сайдкар внедряется в любую рабочую нагрузку, у которой на pod или namespace есть соответствующая метка для инъекции.
Содержание
Понимание discovery selectorsКак ограничить Service Mesh с помощью Discovery SelectorsСсылкиПонимание discovery selectors
Discovery selectors позволяют администратору mesh управлять тем, какие пространства имён управляющая плоскость может отслеживать. Администратор использует селектор меток Kubernetes для определения критериев пространств имён, которые должны быть видны управляющей плоскости, фактически скрывая все пространства имён, не соответствующие этим критериям.
Istiod всегда будет открывать наблюдение за Kubernetes для всех пространств имён. Однако discovery selectors игнорируют объекты, не выбранные селектором, очень рано в процессе обработки, что минимизирует затраты.
Поле discoverySelectors принимает массив селекторов Kubernetes, применяемых к меткам пространств имён. Каждый селектор можно настроить для различных сценариев:
- Пользовательские имена и значения меток. Например, настройка всех релевантных пространств имён с меткой
istio-discovery=enabled. - Список меток пространств имён. Это можно сделать с помощью селекторов на основе множеств, использующих логику OR. Например, настройка пространств имён, которые имеют либо
istio-discovery=enabled, либоregion=us-east1. - Включение и исключение пространств имён. Например, настройка пространств имён, которые имеют одновременно метки
istio-discovery=enabledИapp=helloworld.
Важно отметить, что discovery selectors не являются границей безопасности. Даже при настройке поля discoverySelector, Istiod сохраняет доступ ко всем пространствам имён.
Как ограничить Service Mesh с помощью Discovery Selectors
После того как вы определили пространства имён, которые должны быть включены в Service Mesh, вы можете настроить discoverySelectors как во время установки, так и после неё. Для этого необходимо добавить нужные селекторы в поле meshConfig.discoverySelectors ресурса Istio. Например, можно настроить Istio так, чтобы он обнаруживал только пространства имён с меткой istio-discovery=enabled.
Требования
- Установлен оператор Alauda Service Mesh v2.
- Развернут Istio CNI.
- Развернута управляющая плоскость Istio.
Процедура
-
Примените метку к пространству имён, в котором работает управляющая плоскость Istio, например, к пространству имён
istio-system. -
Обновите ресурс управляющей плоскости
Istio, добавив разделdiscoverySelectorsс использованием той же метки. -
Убедитесь, что каждое пространство имён, предназначенное для размещения рабочих нагрузок Service Mesh, помечено как меткой
discoverySelector, так и, при необходимости, соответствующей меткой для инъекции Istio.
Ссылки
- Use discovery selectors to configure namespaces for your Istio service mesh (документация Istio)
- Label selectors (документация Kubernetes)
- Resources that support set-based requirements (документация Kubernetes)