Модуль по умолчанию выключен. Для включения добавьте в ConfigMap deckhouse:

data:
  istioEnabled: "true"

Параметры

  • tlsMode — режим прозрачного шифрования трафика между pod’ами (Mutual TLS).
    • Возможные значения:
      • "Off" — pod’ы не будут шифровать исходящие запросы и не будут отклонять реквесты, которые не зашифрованы. (Hint: пишите “Off” только в кавычках).
      • "MutualPermissive" — pod’ы будут шифровать исходящие запросы, но не будут отклонять реквесты, которые не зашифрованы. Режим полезен в переходный момент при переезде на mTLS.
      • "Mutual" — pod’ы будут шифровать исходящие запросы и строго будут принимать только зашифрованные реквесты.
    • При включении режима "Mutual" перестанут работать классические HTTP-пробы, так как kubelet ничего про mTLS не знает. Но в sidecar c istio предусмотрен специальный порт, куда можно эти пробы направить. Sidecar-injector, который добавляет sidecar-ы в поды, заодно перенаправит ваши пробы на специальный порт.
    • Для шифрования и аутентификации каждый сервис получит собственный индивидуальный ключ, подписанный корневым CA. Этот CA либо генерится при первом запуске модуля, либо указывается явно (см. ca).
    • По умолчанию "Off".
    • Управлять режимом mTLS можно локально с помощью ресурсов AuthorizationPolicy и DestinationRule.
  • outboundTrafficPolicyMode — как поступать с запросами в сторону внешних, то есть, не учтённых в меше сервисов.
    • Возможные значения:
      • AllowAny — пропускать.
      • RegistryOnly — запрещать. В данном случае для работы с внешними сервисами потребуется регистрировать их с помощью ресурса ServiceEntry или организовывать egressgateway.
      • По умолчанию — AllowAny.
  • ca — явно заданный корневой сертификат, который будет использован для подписывания индивидуальных сертификатов сервисов в случае включения MTLS (см. tlsMode):
    • Формат — строка в формате PEM.
    • cert — корневой или промежуточный сертификат.
    • key — ключ от сертификата выше.
    • chain — цепочка сертификатов на случай если cert — промежуточный сертификат.
    • root — корневой сертификат на случай если cert — промежуточный сертификат.
  • sidecar:
    • includeOutboundIPRanges — трафик в сторону этих диапазонов IP насильно заворачивается через Istio.
      • Формат — массив подсетей.
      • По умолчанию — [0.0.0.0/0].
      • Можно локально переопределить аннотацией traffic.sidecar.istio.io/includeOutboundIPRanges.
    • excludeOutboundIPRanges — трафик в сторону этих диапазонов IP гарантированно не заворачивается через Istio.
      • Формат — массив подсетей.
      • По умолчанию — []. То есть, исключений не делаем.
      • Можно локально переопределить аннотацией traffic.sidecar.istio.io/excludeOutboundIPRanges.
    • excludeInboundPorts — диапазоны входящих портов, чей трафик гарантированно не заворачивается через Istio.
      • Формат — массив портов.
      • По умолчанию — []. То есть, исключений не делаем.
      • Можно локально переопределить аннотацией traffic.sidecar.istio.io/excludeInboundPorts.
    • excludeOutboundPorts — диапазоны исходящих портов, чей трафик гарантированно не заворачивается через Istio.
      • Формат — массив портов.
      • По умолчанию — []. То есть, исключений не делаем.
      • Можно локально переопределить аннотацией traffic.sidecar.istio.io/excludeOutboundPorts.
  • federation — параметры федерации с другими кластерами:
    • enabled — обозначить данный кластер как участник федерации (см. Включение федерации).
      • Формат — bool.
      • По умолчанию — false.
    • ingressGateway — настройки для ingressgateway:
      • inlet — способ публикации ingressgateway, варианты:
        • LoadBalancer — рекомендуется в случае, если площадка облачная и поддерживает LB.
        • NodePort — для площадок без LB.
        • По умолчанию — LoadBalancer.
      • nodeSelector — селектор для DaemonSet’а ingressgateway.
        • Формат — стандартный словарь.
      • tolerations — для DaemonSet’а ingressgateway.
        • Формат — стандартный массив.
      • serviceAnnotations — дополнительные аннотации для сервиса. Полезно, например, для настройки локального LB в Yandex.Cloud (аннотация yandex.cpi.flant.com/listener-subnet-id).
        • Формат — стандартный словарь.
  • multicluster — параметры мультикластерной инсталляции:
  • tracing — параметры трассировки.
    • enabled — включить отправку трейсов в коллектор и интегрировать их отображение в kiali.
      • Формат — bool.
      • По умолчанию — false.
    • collector — параметры отправки трейсов в коллектор.
      • zipkin — параметры протокола zipkin, который использует Istio для отправки трейсов. Jaeger поддерживает этот протокол.
        • Обязательная секция если трейсинг включен.
        • address — сетевой адрес, по которому доступен zipkin-коллектор.
          • Формат — <IP или FQDN>:<порт>.
          • Пример — zipkin.myjaeger.svc:9411.
    • kiali — настройки отображения span-ов в Kiali.
      • Опциональная секция. Если настройки не предоставлены, kiali не будет отображать трассировку.
      • jaegerURLForUsers — адрес UI jaeger, доступный пользователю.
        • Обязательный параметр.
        • Формат — <proto>://<fqdn>[:port]/<base path>.
        • Пример — https://tracing-service:4443/jaeger.
      • jaegerGRPCEndpoint — адрес GRPC-интерфейса jaeger’а, доступный сервису kiali изнутри кластера для служебных запросов.
        • Опциональный параметр. Если не указать, то kiali не будет интерпретировать трейсы самостоятельно и ограничится генерацией ссылок на jaegerURLForUsers.
        • Формат — <proto>://<fqdn>[:port]/.
        • Пример — http://tracing.myjaeger.svc:16685/.
  • nodeSelector — как в Kubernetes в spec.nodeSelector у pod’ов.
  • tolerations — как в Kubernetes в spec.tolerations у pod’ов.