Использование DiscoverySelectors
Рабочая нагрузка включается в Service Mesh, если она удовлетворяет двум условиям:
- Она была обнаружена управляющей плоскостью.
- В неё был внедрён прокси-сайдкар Envoy.
По умолчанию управляющая плоскость сканирует рабочие нагрузки во всех пространствах имён кластера. Такое поведение по умолчанию приводит к двум результатам:
- Каждый экземпляр прокси настраивается для всех пространств имён, даже для рабочих нагрузок, не входящих в mesh.
- Прокси-сайдкар внедряется в любую рабочую нагрузку, у которой на pod или namespace стоит правильная метка для инъекции.
Содержание
Понимание discovery selectors
Discovery selectors позволяют администратору mesh управлять тем, какие пространства имён управляющая плоскость может отслеживать. Администратор использует селектор меток Kubernetes для определения критериев пространств имён, которые должны быть видимы управляющей плоскости, эффективно скрывая все пространства имён, не соответствующие этим критериям.
Istiod всегда будет открывать watch на 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)