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

data:
  istioEnabled: "true"

Параметры

  • allianceобъект

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

    • ingressGatewayобъект

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

      • inletстрока

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

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

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

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

        Пример:

        inlet: LoadBalancer
        
      • nodePortобъект

        Специальные настройки для ingressgateway с инлетом NodePort.

        Примеры:

        nodePort: {}
        
        nodePort:
          port: 30001
        
        • portцелочисленный

          Статичный порт для сервиса с типом NodePort. Должен быть из диапазона, заданного аргументом kube-apiserver –service-node-port-range (по умолчанию 30000-32767).

          Допустимые значения: 1024 <= X <= 65535

      • nodeSelectorобъект

        Селектор для 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объект

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

    Примеры:

    auth: {}
    
    auth:
      externalAuthentication:
        authURL: https://dex.d8.svc.cluster.local/dex/auth
        authSignInURL: https://myhost.ru/dex/sign_in
      allowedUserGroups:
      - admins
    
    • allowedUserGroupsмассив строк

      Массив групп, пользователям которых позволен доступ в публичные веб-интерфейсы модуля.

      Используется, если включен модуль 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, которым разрешено проходить авторизацию в публичные веб-интерфейсы модуля.

      Пример:

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

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

    • certстрока

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

    • chainстрока

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

    • keyстрока

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

    • rootстрока

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

  • controlPlaneобъект

    Настройки для компонента istiod.

    • nodeSelectorобъект

      Опциональный селектор для компонентa istiod. Структура, аналогичная spec.nodeSelector Kubernetes pod.

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

    • resourcesManagement

      istiod resources management options.

      Примеры:

      resourcesManagement:
        mode: VPA
        vpa:
          mode: Auto
          cpu:
            min: 50m
            max: 2
            limitRatio: 1.5
          memory:
            min: 256Mi
            max: 2Gi
            limitRatio: 1.5
      
      resourcesManagement:
        mode: Static
        static:
          requests:
            cpu: 55m
            memory: 256Mi
          limits:
            cpu: 2
            memory: 2Gi
      
      • modeстрока

        The mode for managing resource requests. Classical Static requests/limit or VPA.

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

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

      • staticобъект

        Static resource management settings.

        • limitsобъект

          Limits configuration.

          • cpu

            CPU limits.

          • memory

            Memory limits.

        • requestsобъект

          Requests configuration.

          • cpu

            CPU requests.

          • memory

            Memory requests.

      • vpaобъект

        Parameters of the VPA mode.

        • cpuобъект

          CPU-related parameters.

          • limitRatioчисло

            The coefficient to calculate cpu limits. It is optionally used to calculate initial limits for Pod. VPA for its part keeps the initial limits/requests ratio during further resource tunings.

          • max

            Maximum allowed CPU requests.

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

          • min

            Minimum allowed CPU requests.

            По умолчанию: 50m

        • memoryобъект

          The amount of memory requested.

          • limitRatioчисло

            The coefficient to calculate memory limits. It is optionally used to calculate initial limits for Pod. VPA for its part keeps the initial limits/requests ratio during further resource tunings.

          • max

            Maximum allowed memory requests.

            По умолчанию: 2Gi

          • min

            Minimum allowed memory requests.

            По умолчанию: 256Mi

        • modeстрока

          The VPA usage mode.

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

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

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

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

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

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

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

    • enabledбулевый

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

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

      Пример:

      enabled: true
      
  • globalVersionстрока

    Явно заданная версия control-plane Istio, который обслуживает data-plane с неявной версией (Namespace с лейблом istio-injection=enabled, но не istio.io/rev=). Должна быть из списка поддерживаемых версий (kubectl -n d8-system exec deploy/deckhouse -- deckhouse-controller module values istio -o json | jq '.istio.internal.supportedVersions'). По умолчанию — последняя версия из списка поддерживаемых версий.

    Пример:

    globalVersion: 1.10.1
    
  • httpsобъект

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

    При использовании этого параметра полностью переопределяются глобальные настройки 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