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

data:
  istioEnabled: "true"

Аутентификация

По умолчанию используется модуль user-authn. Также можно настроить аутентификацию через externalAuthentication (см. ниже). Если эти варианты отключены, то модуль включит basic auth со сгенерированным паролем.

Посмотреть сгенерированный пароль можно командой:

kubectl -n d8-system exec deploy/deckhouse -- deckhouse-controller module values istio -o json | jq '.istio.internal.auth.password'

Чтобы сгенерировать новый пароль, нужно удалить Secret:

kubectl -n d8-istio delete secret/kiali-basic-auth

Внимание! Параметр auth.password больше не поддерживается.

Параметры

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

    Дополнительные версии control-plane Istio, которые будут установлены. Они будут обслуживать Namespace-ы, где явно указана версия с помощью лейбла istio.io/rev=.

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

  • 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:
      externalAuthentication:
        authURL: https://dex.d8.svc.cluster.local/dex/auth
        authSignInURL: https://example.com/dex/sign_in
      allowedUserGroups:
      - admins
    
    • allowedUserGroupsмассив строк

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

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

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

    • externalAuthenticationобъект

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

      Внешняя аутентификация включается автоматически, если включен модуль user-authn.

      • authSignInURLстрока

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

        Пример:

        authSignInURL: https://example.com/dex/sign_in
        
      • authURLстрока

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

        Пример:

        authURL: https://example.com/dex/auth
        
    • passwordстрока

      Параметр устарел.

    • satisfyAnyбулевый

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

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

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

      Пример:

      satisfyAny: true
      
    • whitelistSourceRangesмассив строк

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

      Пример:

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

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

    • 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строка
  • enableHTTP10булевый

    Обрабатывать ли HTTP/1.0 запросы в sidecar-контейнерах или отвергать их с кодом ответа 426 Upgrade Required.

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

    Пример:

    enableHTTP10: true
    
  • 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'). По умолчанию — последняя версия из списка поддерживаемых версий.

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

  • highAvailabilityбулевый

    Ручное управление режимом отказоустойчивости.

    По умолчанию режим отказоустойчивости определяется автоматически. Подробнее про режим отказоустойчивости.

    Пример:

    highAvailability: true
    
  • 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строка

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

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

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

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

    Пример:

    outboundTrafficPolicyMode: AllowAny
    
  • proxyConfigобъект

    Централизованная настройка ProxyConfig.

    • holdApplicationUntilProxyStartsбулевый

      Этот параметр заставляет sidecar-injector вставлять sidecar-контейнер на первое место в списке контейнеров Pod’а. Также он добавляет postStart-хук для того, чтобы убедиться, что Envoy инициализировался раньше самого приложения. Это позволит избежать сетевых ошибок при старте Pod’а.

      Этот глобальный параметр может быть переопределён на уровне Pod’а аннотацией proxy.istio.io/config: '{ "holdApplicationUntilProxyStarts": true }'.

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

      Пример:

      holdApplicationUntilProxyStarts: true
      
  • 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}$

  • 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

      Пример:

      enabled: true
      
    • kialiобъект

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

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

      Примеры:

      kiali: {}
      
      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
        
    • samplingчисло

      Параметр sampling используется для определения процента запросов, которые передаются в систему трассировки.

      Этот параметр должен быть настроен в зависимости от трафика в сети и количества данных трассировки, которые необходимо собрать.

      Параметр можно переопределить для каждого Pod’а индивидуально при помощи следующей аннотации:

      proxy.istio.io/config: |
        tracing:
          sampling: 100.0
      

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

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

      Пример:

      sampling: 50.05