В модуле реализовано 15 алертов.
Модуль не включен по умолчанию в каком-либо наборе модулей.
Чтобы настроить модуль, используйте custom resource ModuleConfig
с именем istio
(подробнее о настройке Deckhouse…).
Пример ресурса ModuleConfig/istio
для настройки модуля:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: istio
spec:
version: 2
enabled: true
settings: # <-- Параметры модуля из раздела "Параметры" ниже.
Параметры
Версия схемы: 2
- additionalVersions
Дополнительные версии control plane Istio, которые будут установлены. Они будут обслуживать namespace’ы, где явно указана версия с помощью лейбла
istio.io/rev=
.По умолчанию:
[]
- Элемент массива
Шаблон:
^[0-9]+\.[0-9]+$
- alliance
Общие настройки для федерации и мультикластера.
Доступно только в enterprise edition.
- alliance.ingressGateway
Параметры для ingressgateway.
Доступно только в enterprise edition.
- alliance.ingressGateway.inlet
Способ публикации ingressgateway:
LoadBalancer
— рекомендуется в случае, если площадка облачная и поддерживает LB;NodePort
— для площадок без LB.
По умолчанию:
"LoadBalancer"
Доступно только в enterprise edition.
Допустимые значения:
LoadBalancer
,NodePort
Пример:
inlet: LoadBalancer
- alliance.ingressGateway.nodePort
Специальные настройки для ingressgateway с инлетом
NodePort
.Доступно только в enterprise edition.
Примеры:
nodePort: {}
nodePort: port: 30001
- alliance.ingressGateway.nodePort.port
Статичный порт для сервиса с типом NodePort. Должен быть из диапазона, заданного аргументом
kube-apiserver --service-node-port-range
(по умолчанию 30000-32767).Допустимые значения:
1024 <= X <= 65535
- alliance.ingressGateway.nodeSelector
Селектор для DaemonSet’а ingressgateway.
Структура, аналогичная
spec.nodeSelector
пода Kubernetes.Доступно только в enterprise edition.
Пример:
nodeSelector: type: ingress
- alliance.ingressGateway.serviceAnnotations
Дополнительные аннотации для сервиса ingressgateway.
Полезно, например, для настройки локального LB в Yandex Cloud (аннотация
yandex.cpi.flant.com/listener-subnet-id
).Доступно только в enterprise edition.
Пример:
serviceAnnotations: yandex.cpi.flant.com/listener-subnet-id: xyz-123
- alliance.ingressGateway.tolerations
tolerations для DaemonSet’а ingressgateway.
Структура, аналогичная
spec.tolerations
пода Kubernetes.Доступно только в enterprise edition.
Пример:
tolerations: - operator: Exists
- alliance.ingressGateway.tolerations.effect
- alliance.ingressGateway.tolerations.key
- alliance.ingressGateway.tolerations.operator
- alliance.ingressGateway.tolerations.tolerationSeconds
- alliance.ingressGateway.tolerations.value
- auth
Опции, связанные с аутентификацией или авторизацией в приложении.
Пример:
auth: externalAuthentication: authURL: https://dex.d8.svc.cluster.local/dex/auth authSignInURL: https://example.com/dex/sign_in allowedUserGroups: - admins
- auth.allowedUserGroups
Массив групп, пользователям которых позволен доступ в публичные веб-интерфейсы модуля.
Используется, если включен модуль user-authn или параметр
externalAuthentication
.Внимание! При использовании совместно с модулем user-authn необходимо также добавить разрешенные группы в соответствующее поле в настройках DexProvider.
- auth.externalAuthentication
Параметры для подключения внешней аутентификации (используется механизм NGINX Ingress external-auth, работающий на основе модуля Nginx auth_request.
Внешняя аутентификация включается автоматически, если включен модуль user-authn.
- auth.externalAuthentication.authSignInURL
URL, куда будет перенаправлен пользователь для прохождения аутентификации (если сервис аутентификации вернул код ответа HTTP, отличный от 200).
Пример:
authSignInURL: https://example.com/dex/sign_in
- auth.externalAuthentication.authURL
URL сервиса аутентификации. Если пользователь прошел аутентификацию, сервис должен возвращать код ответа HTTP 200.
Пример:
authURL: https://example.com/dex/auth
- auth.satisfyAny
Разрешает пройти только одну из аутентификаций.
В комбинации с опцией
whitelistSourceRanges
позволяет считать авторизованными всех пользователей из указанных сетей без ввода логина и пароля.По умолчанию:
false
Пример:
satisfyAny: true
- auth.whitelistSourceRanges
Массив адресов в формате CIDR, которым разрешено проходить авторизацию в публичные веб-интерфейсы модуля.
Пример:
whitelistSourceRanges: - 1.1.1.1/32
- ca
Явно заданный корневой сертификат, который будет использован для подписывания индивидуальных сертификатов сервисов в случае включения MTLS.
- ca.cert
Корневой или промежуточный сертификат в формате PEM.
- ca.chain
Цепочка сертификатов в формате PEM на случай, если
cert
— промежуточный сертификат. - ca.key
Ключ корневого сертификата в формате PEM.
- ca.root
Корневой сертификат в формате PEM на случай, если
cert
— промежуточный сертификат.
- controlPlane
Настройки для компонента istiod.
- controlPlane.nodeSelector
Опциональный селектор для компонентa istiod. Структура, аналогичная
spec.nodeSelector
пода Kubernetes.Если ничего не указано или указано
false
, будет использоваться автоматика. - controlPlane.replicasManagement
Настройки управления репликами и горизонтальным масштабированием istiod.
Примеры:
replicasManagement: mode: Standard
replicasManagement: mode: Static static: replicas: 3
replicasManagement: mode: HPA hpa: minReplicas: 2 maxReplicas: 5 metrics: - type: CPU targetAverageUtilization: 80
- controlPlane.replicasManagement.hpa
Параметры управления репликами и масштабированием в режиме HPA.
- controlPlane.replicasManagement.hpa.maxReplicas
Обязательный параметр
Максимальное количество реплик, которое может быть установлено HPA. Не может быть меньше
minReplicas
.Допустимые значения:
1 <= X
- controlPlane.replicasManagement.hpa.metrics
Обязательный параметр
HPA будет основываться на этих метриках при принятии решения об увеличении или уменьшении количества реплик.
- controlPlane.replicasManagement.hpa.metrics.targetAverageUtilization
Обязательный параметр
Целевое значение средней загрузки CPU во всех репликах. Задается в процентах от
Requests CPU
.Допустимые значения:
1 <= X <= 100
- controlPlane.replicasManagement.hpa.metrics.type
Обязательный параметр
Тип метрики.
Допустимые значения:
CPU
- controlPlane.replicasManagement.hpa.minReplicas
Обязательный параметр
Минимальное количество реплик, которое может быть установлено HPA.
Допустимые значения:
1 <= X
- controlPlane.replicasManagement.mode
Режим работы с репликами:
Standard
— режим управления репликами и масштабированием в соответствии с глобальным режимом отказоустойчивости (параметр highAvailability);Static
— режим, где количество реплик указывается явно (параметр static.replicas);HPA
— режим, где количество реплик рассчитывается автоматически с помощью HPA на основе загрузки CPU. Настраивается в секции параметров hpa.
По умолчанию:
"Standard"
Допустимые значения:
Standard
,Static
,HPA
- controlPlane.replicasManagement.static
Параметры управления репликами и масштабированием в режиме Static.
- controlPlane.replicasManagement.static.replicas
Обязательный параметр
Желаемое количество реплик.
Допустимые значения:
1 <= X
- controlPlane.resourcesManagement
Настройки запросов (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
- controlPlane.resourcesManagement.mode
Режим управления ресурсами:
По умолчанию:
"VPA"
Допустимые значения:
VPA
,Static
- controlPlane.resourcesManagement.static
Настройка управления ресурсами в режиме
Static
.- controlPlane.resourcesManagement.static.limits
Настройка ограничений (limits) использования CPU и памяти.
- controlPlane.resourcesManagement.static.limits.cpu
Настройка ограничений использования CPU (CPU limits).
- controlPlane.resourcesManagement.static.limits.memory
Настройка ограничений использования памяти (memory limits).
- controlPlane.resourcesManagement.static.requests
Настройки запросов ресурсов (requests) подов.
- controlPlane.resourcesManagement.static.requests.cpu
Настройка запроса CPU (CPU requests).
- controlPlane.resourcesManagement.static.requests.memory
Настройка запроса памяти (memory requests).
- controlPlane.resourcesManagement.vpa
Параметры управления ресурсами в режиме VPA.
- controlPlane.resourcesManagement.vpa.cpu
Настройки VPA при работе с CPU.
- controlPlane.resourcesManagement.vpa.cpu.limitRatio
Коэффициент расчета ограничений использования CPU относительно запросов (limits/requests).
Применяется для расчета начальных ограничений использования CPU для пода (CPU limits).
Если параметр указан, то VPA, при пересчете запросов CPU (CPU requests) будет пересчитывать ограничения использования CPU (CPU limits) сохраняя указанное соотношение ограничений к запросам (limits/requests).
- controlPlane.resourcesManagement.vpa.cpu.max
Максимальное значение, которое может выставить VPA для запроса CPU (CPU requests).
По умолчанию:
2
- controlPlane.resourcesManagement.vpa.cpu.min
Минимальное значение, которое может выставить VPA для запроса CPU (CPU requests).
По умолчанию:
50m
- controlPlane.resourcesManagement.vpa.memory
Настройки VPA при работе с памятью.
- controlPlane.resourcesManagement.vpa.memory.limitRatio
Коэффициент расчета ограничений использования памяти относительно запросов (limits/requests).
Применяется для расчета начальных ограничений использования памяти для пода (memory limits).
Если параметр указан, то VPA, при пересчете запросов памяти (memory requests) будет пересчитывать ограничения использования памяти (memory limits) сохраняя указанное соотношение ограничений к запросам (limits/requests).
- controlPlane.resourcesManagement.vpa.memory.max
Максимальное значение, которое может выставить VPA для запроса к памяти (memory requests).
По умолчанию:
2Gi
- controlPlane.resourcesManagement.vpa.memory.min
Минимальное значение, которое может выставить VPA для запроса к памяти (memory requests).
По умолчанию:
256Mi
- controlPlane.resourcesManagement.vpa.mode
Режим работы VPA.
По умолчанию:
"Auto"
Допустимые значения:
Initial
,Auto
- controlPlane.tolerations
Опциональные tolerations для компонента istiod.
Структура, аналогичная
spec.tolerations
пода Kubernetes.Если ничего не указано или указано
false
, будет использоваться автоматика.- controlPlane.tolerations.effect
- controlPlane.tolerations.key
- controlPlane.tolerations.operator
- controlPlane.tolerations.tolerationSeconds
- controlPlane.tolerations.value
- dataPlane
- dataPlane.trafficRedirectionSetupMode
Управление режимом перенаправления прикладного трафика для передачи под управление Istio в сетевом неймспейсе пода.
CNIPlugin
— в этом режиме настройку осуществляет CNI plugin при создании пода на узле. Этот режим не требует дополнительных прав для пода и является рекомендуемым. Режим имеет ограничения при использовании прикладных init-контейнеров, которые осуществляют сетевое взаимодействие с другими сервисами.InitContainer
— классический режим, при котором каждый под автоматически снабжается специальным init-контейнером, который осуществляет настройку сетевого окружения пода. Для того, чтобы осуществить эту настройку, контейнеру выдаются дополнительные права, что может не соответствовать требованиям безопасности в отдельных инсталляциях.
По умолчанию:
"InitContainer"
Допустимые значения:
CNIPlugin
,InitContainer
Примеры:
trafficRedirectionSetupMode: CNIPlugin
trafficRedirectionSetupMode: InitContainer
- enableHTTP10
Обрабатывать ли HTTP/1.0-запросы в sidecar-контейнерах или отвергать их с кодом ответа
426 Upgrade Required
.По умолчанию:
false
Пример:
enableHTTP10: true
- federation
Параметры федерации с другими кластерами.
Доступно только в enterprise edition.
- federation.enabled
Обозначить данный кластер как участник федерации (см. Включение федерации).
По умолчанию:
false
Пример:
enabled: true
- globalVersion
Явно заданная версия control plane Istio, который обслуживает data plane по умолчанию (namespace с лейблом
istio-injection=enabled
, но неistio.io/rev=
).По умолчанию:
"1.19"
Шаблон:
^[0-9]+\.[0-9]+$
- highAvailability
Ручное управление режимом отказоустойчивости.
По умолчанию режим отказоустойчивости определяется автоматически. Подробнее про режим отказоустойчивости.
Пример:
highAvailability: true
- https
Тип сертификата, используемого для публичных веб-интерфейсов модуля.
При использовании этого параметра полностью переопределяются глобальные настройки
global.modules.https
.Примеры:
https: mode: CustomCertificate customCertificate: secretName: foobar
https: mode: CertManager certManager: clusterIssuerName: letsencrypt
- https.certManager
- https.certManager.clusterIssuerName
ClusterIssuer, используемый для Kiali/metadata-exporter (including SPIFFE endpoint)/api-proxy.
Доступны
letsencrypt
,letsencrypt-staging
,selfsigned
, но вы можете определить свои.По умолчанию:
"letsencrypt"
- https.customCertificate
- https.customCertificate.secretName
Имя Secret’а в namespace
d8-system
, который будет использоваться для Kiali/metadata-exporter (including SPIFFE endpoint)/api-proxy.Secret должен быть в формате kubernetes.io/tls.
По умолчанию:
"false"
- https.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, используя сертификат из 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
- ingressClass
Класс Ingress-контроллера, который используется для Kiali, metadata-exporter и api-proxy.
Опциональный параметр, по умолчанию используется глобальное значение
modules.ingressClass
.Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- multicluster
Параметры мультикластерной инсталляции.
Доступно только в enterprise edition.
- multicluster.enabled
Обозначить данный кластер как участник мультикластера (см. Включение мультикластера).
По умолчанию:
false
Пример:
enabled: true
- nodeSelector
Опциональный селектор для компонентов istio-operator, metadata-exporter и Kiali.
Структура, аналогичная
spec.nodeSelector
пода Kubernetes.Если ничего не указано или указано
false
, будет использоваться автоматика. - outboundTrafficPolicyMode
Как поступать с запросами в сторону внешних, то есть не учтенных в mesh’е сервисов:
AllowAny
— пропускать;RegistryOnly
— запрещать. В данном случае для работы с внешними сервисами потребуется регистрировать их с помощью ресурса ServiceEntry или организовывать egressgateway.
По умолчанию:
"AllowAny"
Допустимые значения:
AllowAny
,RegistryOnly
Пример:
outboundTrafficPolicyMode: AllowAny
- proxyConfig.holdApplicationUntilProxyStarts
Этот параметр заставляет sidecar-injector вставлять sidecar-контейнер на первое место в списке контейнеров пода. Также он добавляет postStart-хук для того, чтобы убедиться, что Envoy инициализировался раньше самого приложения. Это позволит избежать сетевых ошибок при старте пода.
Этот глобальный параметр может быть переопределен на уровне пода аннотацией
proxy.istio.io/config: '{ "holdApplicationUntilProxyStarts": true }'
.По умолчанию:
false
Пример:
holdApplicationUntilProxyStarts: true
- proxyConfig.idleTimeout
Тайм-аут для соединений без прикладной активности, которые установлены между istio-сайдкаром клиента и сервисом. По истечении тайм-аута, соединение между сайдкаром и сервисом закрывается, но между приложением и сайдкаром — не закрывается. Если установить значение
0s
, то тайм-аут будет отключен. Этот глобальный параметр может быть переопределен на уровне пода аннотацией:proxy.istio.io/config: |- proxyMetadata: ISTIO_META_IDLE_TIMEOUT: "12h"
Внимание! Отключение этого таймаута (значение
0s
) с большой вероятностью может привести к утечке соединений из-за потери пакетов TCP FIN и т.п. Внимание! После изменения настройки необходим рестарт клиентских подов.По умолчанию:
"1h"
Шаблон:
^[0-9]+(s|m|h)$
Пример:
idleTimeout: 24h
- sidecar
Настройки для перехвата сетевого трафика в istio-sidecar.
- sidecar.excludeInboundPorts
Диапазоны входящих портов, чей трафик гарантированно не заворачивается через Istio.
Можно переопределить этот параметр для отдельного пода с помощью аннотации
traffic.sidecar.istio.io/excludeInboundPorts
.По умолчанию:
[]
Пример:
excludeInboundPorts: - '8080' - '8443'
- Элемент массива
Шаблон:
^[0-9]{1,5}$
- sidecar.excludeOutboundIPRanges
Трафик в сторону этих диапазонов IP гарантированно не заворачивается через Istio.
Можно переопределить этот параметр для отдельного пода с помощью аннотации
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}$
- sidecar.excludeOutboundPorts
Диапазоны исходящих портов, чей трафик гарантированно не заворачивается через Istio.
Можно переопределить этот параметр для отдельного пода с помощью аннотации
traffic.sidecar.istio.io/excludeOutboundPorts
.По умолчанию:
[]
Пример:
excludeOutboundPorts: - '8080' - '8443'
- Элемент массива
Шаблон:
^[0-9]{1,5}$
- sidecar.includeOutboundIPRanges
Трафик в сторону этих диапазонов IP безоговорочно заворачивается через Istio.
Можно переопределить этот параметр для отдельного пода с помощью аннотации
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}$
- sidecar.resourcesManagement
Управляет ресурсами sidecar-контейнера Istio.
Внимание! Настройка применяется только для новых подов с
istio-proxy
.Пример:
resourcesManagement: static: requests: cpu: 100m memory: 128Mi limits: cpu: 2000m memory: 1Gi
- sidecar.resourcesManagement.mode
Режим управления ресурсами:
Static
— с помощью прямого указания запросов/ограничений (requests/limits). Настраивается в секции параметров static;
По умолчанию:
"Static"
Допустимые значения:
Static
- sidecar.resourcesManagement.static
Настройка управления ресурсами в режиме
Static
.- sidecar.resourcesManagement.static.limits
Настройка ограничений (limits) использования CPU и памяти.
- sidecar.resourcesManagement.static.limits.cpu
Настройка ограничений использования CPU (CPU limits).
По умолчанию:
2000m
- sidecar.resourcesManagement.static.limits.memory
Настройка ограничений использования памяти (memory limits).
По умолчанию:
1Gi
- sidecar.resourcesManagement.static.requests
Настройки запросов ресурсов (requests) подов.
- sidecar.resourcesManagement.static.requests.cpu
Настройка запроса CPU (CPU requests).
По умолчанию:
100m
- sidecar.resourcesManagement.static.requests.memory
Настройка запроса памяти (memory requests).
По умолчанию:
128Mi
- tolerations
Опциональные tolerations для компонентов istio-operator, metadata-exporter и Kiali.
Структура, аналогичная
spec.tolerations
пода Kubernetes.Если ничего не указано или указано
false
, будет использоваться автоматика.- tolerations.effect
- tolerations.key
- tolerations.operator
- tolerations.tolerationSeconds
- tolerations.value
- tracing
Параметры трассировки.
- tracing.collector
Параметры отправки трейсов в коллектор.
- tracing.collector.zipkin
Параметры протокола zipkin, который использует Istio для отправки трейсов.
Jaeger поддерживает этот протокол.
- tracing.collector.zipkin.address
Сетевой адрес в формате
<IP of FQDN>:<port>
, по которому доступен zipkin-коллектор.Шаблон:
[0-9a-zA-Z\.-]+
Пример:
address: zipkin.myjaeger.svc:9411
- tracing.enabled
Включить отправку трейсов в коллектор и интегрировать их отображение в Kiali.
По умолчанию:
false
Пример:
enabled: true
- tracing.kiali
Настройки отображения span’ов в Kiali.
Если настройки не предоставлены, Kiali не будет отображать трассировку.
Примеры:
kiali: {}
kiali: jaegerURLForUsers: https://tracing-service:4443/jaeger jaegerGRPCEndpoint: http://tracing.myjaeger.svc:16685/
- tracing.kiali.jaegerGRPCEndpoint
Адрес GRPC-интерфейса Jaeger’а в формате
<proto>://<fqdn>[:port]/
, доступный сервису Kiali изнутри кластера для служебных запросов.Если не указать, то Kiali не будет интерпретировать трейсы самостоятельно и ограничится генерацией ссылок на
jaegerURLForUsers
.Пример:
jaegerGRPCEndpoint: http://tracing.myjaeger.svc:16685/
- tracing.kiali.jaegerURLForUsers
Адрес UI Jaeger, доступный пользователю в формате
<proto>://<fqdn>[:port]/<base path>
.Обязательный параметр.
Пример:
jaegerURLForUsers: https://tracing-service:4443/jaeger
- tracing.sampling
Параметр 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
больше не поддерживается.