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

data:
  istioEnabled: "true"

Параметры

  • allianceобъект

    Общие настройки для федерации и мультикластера.

    • ingressGatewayобъект

      Параметры для ingressgateway.

      • inletстрока

        Способ публикации ingressgateway.

        • LoadBalancer — рекомендуется в случае, если площадка облачная и поддерживает LB.
        • NodePort — для площадок без LB.

        По умолчанию: "LoadBalancer"

        Допустимые значения: LoadBalancer, NodePort

        Пример:

        inlet: LoadBalancer
        
      • nodeSelectorобъект

        Cелектор для DaemonSet’а ingressgateway.

        Структура, аналогичная spec.nodeSelector Kubernetes pod.

        Пример:

        nodeSelector:
          type: ingress
        
      • serviceAnnotationsобъект

        Дополнительные аннотации для сервиса ingressgateway.

        Полезно, например, для настройки локального LB в Yandex.Cloud (аннотация yandex.cpi.flant.com/listener-subnet-id).

        Пример:

        serviceAnnotations:
          yandex.cpi.flant.com/listener-subnet-id: xyz-123
        
      • tolerationsмассив объектов

        tolerations для DaemonSet’а ingressgateway.

        Структура, аналогичная spec.tolerations Kubernetes pod.

        Пример:

        tolerations:
        - operator: Exists
        
        • effectстрока
        • keyстрока
        • operatorстрока
        • tolerationSecondsцелочисленный
        • valueстрока
  • authобъект

    Опции, связанные с аутентификацией или авторизацией в приложении.

    • allowedUserGroupsмассив строк

      Массив групп, пользователям которых позволен доступ в Grafana и Prometheus.

      Используется, если включен модуль user-authn или параметр externalAuthentication.

      Внимание! При использовании совместно с модулем user-authn необходимо также добавить разрешенные группы в соответствующее поле в настройках DexProvider.

    • externalAuthenticationобъект

      Параметры для подключения внешней аутентификации (используется механизм Nginx Ingress external-auth, работающей на основе модуля Nginx auth_request.

      Если включен модуль user-authn, параметры externalAuthentication настраиваются автоматически.

      • authSignInURLстрока

        URL, куда будет перенаправлен пользователь для прохождения аутентификации (если сервис аутентификации вернул код ответа HTTP отличный от 200).

        Пример:

        authSignInURL: https://myhost.ru/dex/sign_in
        
      • authURLстрока

        URL сервиса аутентификации. Если пользователь прошел аутентификацию, сервис должен возвращать код ответа HTTP 200.

        Примеры:

        authURL: https://dex.d8.svc.cluster.local/dex/auth
        
        authURL: https://myhost.ru/dex/auth
        
    • passwordстрока

      Пароль для HTTP-авторизации для пользователя admin (генерируется автоматически, но можно менять).

      Используется, если не включен параметр externalAuthentication.

    • satisfyAnyбулевый

      Разрешает пройти только одну из аутентификаций.

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

      По умолчанию: false

    • whitelistSourceRangesмассив строк

      Массив CIDR, которым разрешено проходить авторизацию в Grafana и Prometheus.

      Пример:

      whitelistSourceRanges:
      - 1.1.1.1/32
      
  • caобъект

    Явно заданный корневой сертификат, который будет использован для подписывания индивидуальных сертификатов сервисов в случае включения MTLS (см. tlsMode).

    • certстрока

      Корневой или промежуточный сертификат в формате PEM.

    • chainстрока

      Цепочка сертификатов в формате PEM на случай если cert — промежуточный сертификат.

    • keyстрока

      Ключ корневого сертификата в формате PEM.

    • rootстрока

      Корневой сертификат в формате PEM на случай если cert — промежуточный сертификат.

  • federationобъект

    Параметры федерации с другими кластерами.

    • enabledбулевый

      Обозначить данный кластер как участник федерации (см. Включение федерации).

      По умолчанию: false

      Пример:

      enabled: true
      
  • globalVersionстрока

    Пример:

    globalVersion: 1.8.5
    
  • httpsобъект

    Тип сертификата используемого для Grafana/Prometheus.

    При использовании этого параметра полностью переопределяются глобальные настройки global.modules.https.

    Примеры:

    https:
      mode: CustomCertificate
      customCertificate:
        secretName: foobar
    
    https:
      mode: CertManager
      certManager:
        clusterIssuerName: letsencrypt
    
    • certManagerобъект
      • clusterIssuerNameстрока

        ClusterIssuer, используемый для Kiali/metadata-exporter (including SPIFFE endpoint)/api-proxy.

        Доступны letsencrypt, letsencrypt-staging, selfsigned, но вы можете определить свои.

        По умолчанию: "letsencrypt"

    • customCertificateобъект
      • secretNameстрока

        Имя secret’а в namespace d8-system, который будет использоваться для Kiali/metadata-exporter (including SPIFFE endpoint)/api-proxy.

        Секрет должен быть в формате kubernetes.io/tls.

        По умолчанию: "false"

    • modeстрока

      Режим работы HTTPS:

      • CertManager — Kiali/metadata-exporter (including SPIFFE endpoint)/api-proxy будут работать по https и заказывать сертификат с помощью clusterissuer заданном в параметре certManager.clusterIssuerName.
      • CustomCertificate — Kiali/metadata-exporter (including SPIFFE endpoint)/api-proxy будут работать по https используя сертификат из namespace d8-system.
      • OnlyInURI — Kiali/metadata-exporter (including SPIFFE endpoint)/api-proxy будут работать по HTTP (подразумевая, что перед ними стоит внешний балансер, который терминирует HTTPS) и все ссылки в user-authn будут генерироваться с HTTPS-схемой.

      Важно! В отличие от остальных модулей, Istio не поддерживает работу без использования HTTPS (mode: Disabled).

      По умолчанию: "CertManager"

      Допустимые значения: CertManager, CustomCertificate, OnlyInURI

  • multiclusterобъект

    Параметры мультикластерной инсталляции.

    • enabledбулевый

      Обозначить данный кластер как участник мультикластера (см. Включение мультикластера).

      По умолчанию: false

      Пример:

      enabled: true
      
  • nodeSelectorобъект

    Опциональный селектор для компонентов istio-operator, metadata-exporter и kiali. Структура, аналогичная spec.nodeSelector Kubernetes pod.

    Если ничего не указано или указано false — будет использоваться автоматика.

  • outboundTrafficPolicyModeстрока

    Как поступать с запросами в сторону внешних, то есть, не учтённых в меше сервисов.

    • AllowAny — пропускать.
    • RegistryOnly — запрещать. В данном случае для работы с внешними сервисами потребуется регистрировать их с помощью ресурса ServiceEntry или организовывать egressgateway.

    По умолчанию: "AllowAny"

    Допустимые значения: AllowAny, RegistryOnly

    Пример:

    outboundTrafficPolicyMode: AllowAny
    
  • sidecarобъект

    Настройки для перехвата сетевого трафика в istio-sidecar.

    • excludeInboundPortsмассив строк

      Диапазоны входящих портов, чей трафик гарантированно не заворачивается через Istio.

      Можно переопределить этот параметр для отдельного Pod’а с помощью аннотации traffic.sidecar.istio.io/excludeInboundPorts.

      По умолчанию: []

      Пример:

      excludeInboundPorts:
      - '8080'
      - '8443'
      

      Шаблон: ^[0-9]{1,5}$

    • excludeOutboundIPRangesмассив строк

      Трафик в сторону этих диапазонов IP гарантированно не заворачивается через Istio.

      Можно переопределить этот параметр для отдельного Pod’а с помощью аннотации traffic.sidecar.istio.io/excludeOutboundIPRanges.

      По умолчанию: []

      Пример:

      excludeOutboundIPRanges:
      - 10.1.1.0/24
      

      Шаблон: ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$

    • excludeOutboundPortsмассив строк

      Диапазоны исходящих портов, чей трафик гарантированно не заворачивается через Istio.

      Можно переопределить этот параметр для отдельного Pod’а с помощью аннотации traffic.sidecar.istio.io/excludeOutboundPorts.

      По умолчанию: []

      Пример:

      excludeOutboundPorts:
      - '8080'
      - '8443'
      

      Шаблон: ^[0-9]{1,5}$

    • includeOutboundIPRangesмассив строк

      Трафик в сторону этих диапазонов IP безоговорочно заворачивается через Istio.

      Можно переопределить этот параметр для отдельного Pod’а с помощью аннотации traffic.sidecar.istio.io/includeOutboundIPRanges.

      По умолчанию: ["0.0.0.0/0"]

      Пример:

      includeOutboundIPRanges:
      - 10.1.1.0/24
      

      Шаблон: ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$

  • tlsModeстрока

    Режим прозрачного шифрования трафика между Pod’ами (Mutual TLS).

    • Off — pod’ы не будут шифровать исходящие запросы и не будут отклонять реквесты, которые не зашифрованы.
    • MutualPermissive — pod’ы будут шифровать исходящие запросы, но не будут отклонять реквесты, которые не зашифрованы. Режим полезен в переходный момент при переезде на mTLS.
    • Mutual — pod’ы будут шифровать исходящие запросы и строго будут принимать только зашифрованные реквесты.

    При включении режима Mutual перестанут работать классические HTTP-пробы, так как kubelet ничего про mTLS не знает. Но в sidecar c istio предусмотрен специальный порт, куда можно эти пробы направить. Sidecar-injector, который добавляет sidecar-ы в поды, заодно перенаправит ваши пробы на специальный порт.

    Для шифрования и аутентификации каждый сервис получит собственный индивидуальный ключ, подписанный корневым CA. Этот CA либо генерится при первом запуске модуля, либо указывается явно (см. ca).

    Управлять режимом mTLS можно отдельно для каждого приложения и его клиентских соединений с помощью ресурсов AuthorizationPolicy и DestinationRule.

    По умолчанию: "Off"

    Допустимые значения: Off, MutualPermissive, Mutual

  • tolerationsмассив объектов

    Опциональные tolerations для компонентов istio-operator, metadata-exporter и kiali. Структура, аналогичная spec.tolerations в Kubernetes Pod.

    Если ничего не указано или указано false — будет использоваться автоматика.

    • effectстрока
    • keyстрока
    • operatorстрока
    • tolerationSecondsцелочисленный
    • valueстрока
  • tracingобъект

    Параметры трассировки.

    • collectorобъект

      Параметры отправки трейсов в коллектор.

      • zipkinобъект

        Параметры протокола zipkin, который использует Istio для отправки трейсов.

        Jaeger поддерживает этот протокол.

        • addressстрока

          Сетевой адрес в формате <IP of FQDN>:<port>, по которому доступен zipkin-коллектор.

          Шаблон: [0-9a-zA-Z\.-]+

          Пример:

          address: zipkin.myjaeger.svc:9411
          
    • enabledбулевый

      Включить отправку трейсов в коллектор и интегрировать их отображение в kiali.

      По умолчанию: false

    • kialiобъект

      Настройки отображения span-ов в Kiali.

      Если настройки не предоставлены, kiali не будет отображать трассировку.

      Примеры:

      kiali: {}
      
      kiali:
        jaegerURLForUsers: https://tracing-service:4443/jaeger
      
      kiali:
        jaegerURLForUsers: https://tracing-service:4443/jaeger
        jaegerGRPCEndpoint: http://tracing.myjaeger.svc:16685/
      
      • jaegerGRPCEndpointстрока

        Адрес GRPC-интерфейса jaeger’а в формате <proto>://<fqdn>[:port]/, доступный сервису kiali изнутри кластера для служебных запросов.

        Если не указать, то kiali не будет интерпретировать трейсы самостоятельно и ограничится генерацией ссылок на jaegerURLForUsers.

        Пример:

        jaegerGRPCEndpoint: http://tracing.myjaeger.svc:16685/
        
      • jaegerURLForUsersстрока

        Адрес UI jaeger, доступный пользователю в формате <proto>://<fqdn>[:port]/<base path>.

        Обязательный параметр.

        Пример:

        jaegerURLForUsers: https://tracing-service:4443/jaeger