Доступно с ограничениями в редакциях: CE, BE, SE, SE+
Доступно без ограничений в редакциях: EE
В модуле реализовано 15 алертов.
Модуль не включен по умолчанию в каком-либо наборе модулей.
Чтобы настроить модуль, используйте ресурс ModuleConfig
с именем istio
(подробнее о настройке Deckhouse…).
Пример ресурса ModuleConfig/istio
для настройки модуля:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: istio
spec:
version: 2
enabled: true
settings: # <-- Параметры модуля из раздела "Параметры" ниже.
Параметры
Версия схемы: 2
- массив строк
Дополнительные версии control plane Istio, которые будут установлены. Они будут обслуживать namespace’ы, где явно указана версия с помощью лейбла
istio.io/rev=
.По умолчанию:
[]
- объект
Общие настройки для федерации и мультикластера.
Доступно только в enterprise edition.
- объект
Параметры для ingressgateway.
Доступно только в enterprise edition.
- массив объектов
Фактические адреса, которые будут объявлены удаленным кластерам для организации межкластерных запросов приложений. Если не указано, адреса будут выявлены автоматически.
По умолчанию:
[]
Доступно только в enterprise edition.
Пример:
advertise: - ip: 172.16.0.5 port: 15443
- строка
Способ публикации ingressgateway:
LoadBalancer
— рекомендуется в случае, если площадка облачная и поддерживает LB;NodePort
— для площадок без LB.
По умолчанию:
"LoadBalancer"
Доступно только в enterprise edition.
Допустимые значения:
LoadBalancer
,NodePort
Пример:
inlet: LoadBalancer
- объект
Специальные настройки для ingressgateway с инлетом
NodePort
.Доступно только в enterprise edition.
Примеры:
nodePort: {}
nodePort: port: 30001
- объект
Дополнительные аннотации для сервиса ingressgateway.
Полезно, например, для настройки локального LB в Yandex Cloud (аннотация
yandex.cpi.flant.com/listener-subnet-id
).Доступно только в enterprise edition.
Пример:
serviceAnnotations: yandex.cpi.flant.com/listener-subnet-id: xyz-123
- массив объектов
tolerations для DaemonSet’а ingressgateway.
Структура, аналогичная
spec.tolerations
пода Kubernetes.Доступно только в enterprise edition.
Пример:
tolerations: - operator: Exists
- объект
Опции, связанные с аутентификацией или авторизацией в приложении.
Пример:
auth: externalAuthentication: authURL: https://dex.d8.svc.cluster.local/dex/auth authSignInURL: https://example.com/dex/sign_in allowedUserGroups: - admins
- массив строк
Массив групп, пользователям которых позволен доступ в публичные веб-интерфейсы модуля.
Используется, если включен модуль user-authn или параметр
externalAuthentication
.Внимание! При использовании совместно с модулем user-authn необходимо также добавить разрешенные группы в соответствующее поле в настройках DexProvider.
- объект
Параметры для подключения внешней аутентификации (используется механизм NGINX Ingress external-auth, работающий на основе модуля Nginx auth_request.
Внешняя аутентификация включается автоматически, если включен модуль user-authn.
- объект
Явно заданный корневой сертификат, который будет использован для подписывания индивидуальных сертификатов сервисов в случае включения MTLS.
- объект
Опциональный селектор для компонента istiod. Структура, аналогичная
spec.nodeSelector
пода Kubernetes.Если значение не указано или указано
false
, будет использоваться автоматика. - объект
Настройки управления репликами и горизонтальным масштабированием istiod.
Примеры:
replicasManagement: mode: Standard
replicasManagement: mode: Static static: replicas: 3
replicasManagement: mode: HPA hpa: minReplicas: 2 maxReplicas: 5 metrics: - type: CPU targetAverageUtilization: 80
- объект
Параметры управления репликами и масштабированием в режиме HPA.
- массив объектов
Обязательный параметр
HPA будет основываться на этих метриках при принятии решения об увеличении или уменьшении количества реплик.
- строка
Режим работы с репликами:
Standard
— режим управления репликами и масштабированием в соответствии с глобальным режимом отказоустойчивости (параметр highAvailability);Static
— режим, где количество реплик указывается явно (параметр static.replicas);HPA
— режим, где количество реплик рассчитывается автоматически с помощью HPA на основе загрузки CPU. Настраивается в секции параметров hpa.
По умолчанию:
"Standard"
Допустимые значения:
Standard
,Static
,HPA
- объект
Параметры управления репликами и масштабированием в режиме Static.
- объект
Настройки запросов (requests) и ограничений (limits) использования CPU и памяти подами istiod.
Примеры:
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
- строка
Режим управления ресурсами:
По умолчанию:
"VPA"
Допустимые значения:
VPA
,Static
- объект
Настройка управления ресурсами в режиме
Static
.- объект
Настройка ограничений (limits) использования CPU и памяти.
- объект
Настройки запросов ресурсов (requests) подов.
- число
Коэффициент расчета ограничений использования CPU относительно запросов (limits/requests).
Применяется для расчета начальных ограничений использования CPU для пода (CPU limits).
Если параметр указан, то VPA, при пересчете запросов CPU (CPU requests) будет пересчитывать ограничения использования CPU (CPU limits) сохраняя указанное соотношение ограничений к запросам (limits/requests).
- число
Коэффициент расчета ограничений использования памяти относительно запросов (limits/requests).
Применяется для расчета начальных ограничений использования памяти для пода (memory limits).
Если параметр указан, то VPA, при пересчете запросов памяти (memory requests) будет пересчитывать ограничения использования памяти (memory limits) сохраняя указанное соотношение ограничений к запросам (limits/requests).
- массив объектов
Опциональные tolerations для компонента istiod.
Структура, аналогичная
spec.tolerations
пода Kubernetes.Если значение не указано или указано
false
, будет использоваться автоматика.
- строка
Управление режимом перенаправления прикладного трафика для передачи под управление Istio в сетевом пространстве имён пода.
CNIPlugin
— в этом режиме настройку осуществляет CNI plugin при создании пода на узле. Этот режим не требует дополнительных прав для пода и является рекомендуемым. Режим имеет ограничения при использовании прикладных init-контейнеров, которые осуществляют сетевое взаимодействие с другими сервисами.InitContainer
— классический режим, при котором каждый под автоматически снабжается специальным init-контейнером, который осуществляет настройку сетевого окружения пода. Для того, чтобы осуществить эту настройку, контейнеру выдаются дополнительные права, что может не соответствовать требованиям безопасности в отдельных инсталляциях.
По умолчанию:
"InitContainer"
Допустимые значения:
CNIPlugin
,InitContainer
Примеры:
trafficRedirectionSetupMode: CNIPlugin
trafficRedirectionSetupMode: InitContainer
- объект
Параметры федерации с другими кластерами.
Доступно только в enterprise edition.
- булевый
Обозначить данный кластер как участник федерации (см. Включение федерации).
По умолчанию:
false
Пример:
enabled: true
- булевый
Ручное управление режимом отказоустойчивости.
По умолчанию режим отказоустойчивости определяется автоматически. Подробнее про режим отказоустойчивости.
Пример:
highAvailability: true
- объект
Тип сертификата, используемого для публичных веб-интерфейсов модуля.
При использовании этого параметра полностью переопределяются глобальные настройки
global.modules.https
.Примеры:
https: mode: CustomCertificate customCertificate: secretName: foobar
https: mode: CertManager certManager: clusterIssuerName: letsencrypt
- строка
Имя Secret’а в namespace
d8-system
, который будет использоваться для Kiali/metadata-exporter (including SPIFFE endpoint)/api-proxy.Secret должен быть в формате kubernetes.io/tls.
По умолчанию:
"false"
- строка
Режим работы HTTPS:
CertManager
— Kiali/metadata-exporter (including SPIFFE endpoint)/api-proxy будут работать по HTTPS и заказывать сертификат с помощью ClusterIssuer заданном в параметреcertManager.clusterIssuerName
.CustomCertificate
— Kiali/metadata-exporter (including SPIFFE endpoint)/api-proxy будут работать по HTTPS, используя сертификат из namespaced8-system
.OnlyInURI
— Kiali/metadata-exporter (including SPIFFE endpoint)/api-proxy будут работать по HTTP (подразумевая, что перед ними стоит внешний балансировщик, который терминирует HTTPS) и все ссылки в user-authn будут генерироваться с HTTPS-схемой. Балансировщик должен обеспечивать перенаправление с HTTP на HTTPS.
Важно! В отличие от остальных модулей, istio не поддерживает работу без использования HTTPS (
mode: Disabled
).По умолчанию:
"CertManager"
Допустимые значения:
CertManager
,CustomCertificate
,OnlyInURI
- объект
Параметры мультикластерной инсталляции.
Доступно только в enterprise edition.
- булевый
Обозначить данный кластер как участник мультикластера (см. Включение мультикластера).
По умолчанию:
false
Пример:
enabled: true
- объект
Опциональный селектор для компонентов istio-operator, metadata-exporter и Kiali.
Структура, аналогичная
spec.nodeSelector
пода Kubernetes.Если значение не указано или указано
false
, будет использоваться автоматика. - строка
Как поступать с запросами в сторону внешних, то есть не учтенных в mesh’е сервисов:
AllowAny
— пропускать;RegistryOnly
— запрещать. В данном случае для работы с внешними сервисами потребуется регистрировать их с помощью ресурса ServiceEntry или организовывать egressgateway.
По умолчанию:
"AllowAny"
Допустимые значения:
AllowAny
,RegistryOnly
Пример:
outboundTrafficPolicyMode: AllowAny
- булевый
Этот параметр заставляет sidecar-injector вставлять sidecar-контейнер на первое место в списке контейнеров пода. Также он добавляет postStart-хук для того, чтобы убедиться, что Envoy инициализировался раньше самого приложения. Это позволит избежать сетевых ошибок при старте пода.
Этот глобальный параметр может быть переопределен на уровне пода аннотацией
proxy.istio.io/config: '{ "holdApplicationUntilProxyStarts": true }'
.По умолчанию:
false
Пример:
holdApplicationUntilProxyStarts: true
- строка
Тайм-аут для соединений без прикладной активности, которые установлены между istio-сайдкаром клиента и сервисом. По истечении тайм-аута, соединение между сайдкаром и сервисом закрывается, но между приложением и сайдкаром — не закрывается. Если установить значение
0s
, то тайм-аут будет отключен. Этот глобальный параметр может быть переопределен на уровне пода аннотацией:proxy.istio.io/config: |- proxyMetadata: ISTIO_META_IDLE_TIMEOUT: "12h"
Внимание! Отключение этого таймаута (значение
0s
) с большой вероятностью может привести к утечке соединений из-за потери пакетов TCP FIN и т.п. Внимание! После изменения настройки необходим рестарт клиентских подов.По умолчанию:
"1h"
Шаблон:
^[0-9]+(s|m|h)$
Пример:
idleTimeout: 24h
- массив строк
Диапазоны входящих портов, чей трафик гарантированно не заворачивается через Istio.
Можно переопределить этот параметр для отдельного пода с помощью аннотации
traffic.sidecar.istio.io/excludeInboundPorts
.По умолчанию:
[]
Пример:
excludeInboundPorts: - '8080' - '8443'
- массив строк
Трафик в сторону этих диапазонов IP гарантированно не заворачивается через Istio.
Можно переопределить этот параметр для отдельного пода с помощью аннотации
traffic.sidecar.istio.io/excludeOutboundIPRanges
.По умолчанию:
[]
Пример:
excludeOutboundIPRanges: - 10.1.1.0/24
- массив строк
Диапазоны исходящих портов, чей трафик гарантированно не заворачивается через Istio.
Можно переопределить этот параметр для отдельного пода с помощью аннотации
traffic.sidecar.istio.io/excludeOutboundPorts
.По умолчанию:
[]
Пример:
excludeOutboundPorts: - '8080' - '8443'
- массив строк
Трафик в сторону этих диапазонов IP безоговорочно заворачивается через Istio.
Можно переопределить этот параметр для отдельного пода с помощью аннотации
traffic.sidecar.istio.io/includeOutboundIPRanges
.По умолчанию:
["0.0.0.0/0"]
Пример:
includeOutboundIPRanges: - 10.1.1.0/24
- объект
Управляет ресурсами sidecar-контейнера Istio.
Внимание! Настройка применяется только для новых подов с
istio-proxy
.Пример:
resourcesManagement: static: requests: cpu: 100m memory: 128Mi limits: cpu: 2000m memory: 1Gi
- строка
Режим управления ресурсами:
Static
— с помощью прямого указания запросов/ограничений (requests/limits). Настраивается в секции параметров static;
По умолчанию:
"Static"
Допустимые значения:
Static
- объект
Настройка ограничений (limits) использования CPU и памяти.
- объект
Настройки запросов ресурсов (requests) подов.
- массив объектов
Опциональные tolerations для компонентов istio-operator, metadata-exporter и Kiali.
Структура, аналогичная
spec.tolerations
пода Kubernetes.Если значение не указано или указано
false
, будет использоваться автоматика. - объект
Параметры протокола zipkin, который использует Istio для отправки трейсов.
Jaeger поддерживает этот протокол.
- объект
Настройки отображения span’ов в Kiali.
Если настройки не предоставлены, Kiali не будет отображать трассировку.
Примеры:
kiali: {}
kiali: jaegerURLForUsers: https://tracing-service:4443/jaeger jaegerGRPCEndpoint: http://tracing.myjaeger.svc:16685/
- строка
Адрес GRPC-интерфейса Jaeger’а в формате
<proto>://<fqdn>[:port]/
, доступный сервису Kiali изнутри кластера для служебных запросов.Если не указать, то Kiali не будет интерпретировать трейсы самостоятельно и ограничится генерацией ссылок на
jaegerURLForUsers
.Пример:
jaegerGRPCEndpoint: http://tracing.myjaeger.svc:16685/
- число
Параметр sampling используется для определения процента запросов, которые передаются в систему трассировки.
Этот параметр должен быть настроен в зависимости от трафика в сети и количества данных трассировки, которые необходимо собрать.
Параметр можно переопределить для каждого пода индивидуально с помощью следующей аннотации:
proxy.istio.io/config: | tracing: sampling: 100.0
По умолчанию:
1.0
Допустимые значения:
0.01 <= X <= 100.0
Пример:
sampling: 50.05
Аутентификация
По умолчанию используется модуль user-authn. Также можно настроить аутентификацию через externalAuthentication
(см. ниже).
Если эти варианты отключены, модуль включит basic auth со сгенерированным паролем.
Посмотреть сгенерированный пароль можно командой:
kubectl -n d8-system exec svc/deckhouse-leader -c 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
больше не поддерживается.