• Русский
  • Использование DiscoverySelectors

    Рабочая нагрузка включается в Service Mesh, если она удовлетворяет двум условиям:

    • Она была обнаружена управляющей плоскостью.
    • В неё был внедрён прокси-сайдкар Envoy.

    По умолчанию управляющая плоскость сканирует рабочие нагрузки во всех пространствах имён кластера. Такое поведение по умолчанию приводит к двум результатам:

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

    Понимание discovery selectors

    Discovery selectors позволяют администратору mesh управлять тем, какие пространства имён управляющая плоскость может отслеживать. Администратор использует селектор меток Kubernetes для определения критериев пространств имён, которые должны быть видны управляющей плоскости, фактически скрывая все пространства имён, не соответствующие этим критериям.

    WARNING

    Istiod всегда будет открывать наблюдение за Kubernetes для всех пространств имён. Однако discovery selectors игнорируют объекты, не выбранные селектором, очень рано в процессе обработки, что минимизирует затраты.

    Поле discoverySelectors принимает массив селекторов Kubernetes, применяемых к меткам пространств имён. Каждый селектор можно настроить для различных сценариев:

    • Пользовательские имена и значения меток. Например, настройка всех релевантных пространств имён с меткой istio-discovery=enabled.
    • Список меток пространств имён. Это можно сделать с помощью селекторов на основе множеств, использующих логику OR. Например, настройка пространств имён, которые имеют либо istio-discovery=enabled, либо region=us-east1.
    • Включение и исключение пространств имён. Например, настройка пространств имён, которые имеют одновременно метки istio-discovery=enabled И app=helloworld.
    WARNING

    Важно отметить, что 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.

    Процедура

    1. Примените метку к пространству имён, в котором работает управляющая плоскость Istio, например, к пространству имён istio-system.

      kubectl label namespace istio-system istio-discovery=enabled
    2. Обновите ресурс управляющей плоскости Istio, добавив раздел discoverySelectors с использованием той же метки.

      kind: Istio
      apiVersion: sailoperator.io/v1
      spec:
        namespace: istio-system
        # Applying the following contents to your Istio Custom Resource:
        values:
          meshConfig:
            discoverySelectors:
              - matchLabels:
                  istio-discovery: enabled
    3. Убедитесь, что каждое пространство имён, предназначенное для размещения рабочих нагрузок Service Mesh, помечено как меткой discoverySelector, так и, при необходимости, соответствующей меткой для инъекции Istio.

    Ссылки