Глобальные настройки Deckhouse Platform позволяют вам настраивать параметры, которые используются по умолчанию всеми модулями и компонентами. Некоторые модули могут переопределять часть этих параметров (это можно узнать в разделе настройки соответствующего модуля в документации модуля).
Практические навыки администрирования платформы подробно разобраны в курсе «Администрирование Deckhouse Platform» в Deckhouse Академии.
Глобальные настройки Deckhouse хранятся в ModuleConfig global.
В параметре publicDomainTemplate указывается шаблон DNS-имен, с учётом которого некоторые модули Deckhouse создают Ingress-ресурсы. Если параметр не указан, Ingress-ресурсы создаваться не будут.
Если у вас нет возможности заводить wildcard-записи DNS, для тестирования можно воспользоваться сервисом sslip.io или его аналогами.
Домен, указанный в шаблоне, не может совпадать или быть поддоменом домена, заданного в параметре clusterDomain. Мы не рекомендуем менять значение clusterDomain без особой необходимости.
Для корректной работы шаблона необходимо предварительно настроить службы DNS как в сетях, где будут располагаться узлы кластера, так и в сетях, из которых к служебным веб-интерфейсам платформы будут обращаться клиенты.
В случае, если шаблон совпадает с доменом сети узлов, используйте только А записи для назначения служебным веб-интерфейсам платформы адресов Frontend узлов. Например, для узлов заведена зона company.my, а шаблон имеет вид %s.company.my.
Пример ресурса ModuleConfig/global:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: global
spec:
version: 2
settings: # <-- Параметры модуля из раздела "Параметры" ниже.
defaultClusterStorageClass: 'default-fast'
modules:
publicDomainTemplate: '%s.kube.company.my'
placement:
customTolerationKeys:
- dedicated.example.com
storageClass: 'default-fast'
Конверсии
Глобальные параметры настраиваются с помощью ModuleConfig global, схема которого содержит номер версии.
При применении в кластере старой версии схемы ModuleConfig выполняются автоматические преобразования. Чтобы обновить версию схемы ModuleConfig вручную, необходимо последовательно для каждой версии выполнить следующие действия
:
- Обновление из версии 1 в 2:
Перенесите
storageClassвmodules.storageClass. Удалите параметрыmodules.resourcesRequests.everyNode,modules.resourcesRequests.masterNodeиmodules.proxy.
Параметры
Версия схемы: 2
- объектsettings
- объектsettings.applications
Общие параметры приложений экосистемы Deckhouse.
- объектsettings.applications.https
Способ организации доступа по протоколу HTTPS для приложений экосистемы Deckhouse.
Примеры:
https: certManager: clusterIssuerName: letsencrypt mode: CertManagerhttps: mode: Disabledhttps: mode: OnlyInURIhttps: mode: CustomCertificate customCertificate: secretName: plainstring- объектsettings.applications.https.certManager
- строкаsettings.applications.https.certManager.clusterIssuerName
Имя ClusterIssuer, используемого приложениями для получения TLS-сертификатов.
Модуль
cert-managerпредоставляет следующие ClusterIssuer:letsencrypt;letsencrypt-staging;selfsigned;clouddns;cloudflare;digitalocean;route53.
При необходимости вы можете использовать собственный ClusterIssuer.
По умолчанию:
letsencrypt
- объектsettings.applications.https.customCertificate
- строкаsettings.applications.https.customCertificate.secretName
Имя Secret в неймспейсе
d8-system, содержащего TLS-сертификат, который будет использоваться приложениями.Указанный Secret должен быть в формате
kubernetes.io/tls.По умолчанию:
false
- строкаsettings.applications.https.mode
Режим работы HTTPS:
CertManager— приложения работают по HTTPS и самостоятельно заказывают сертификаты с помощью ClusterIssuer, указанного в параметреcertManager.clusterIssuerName;CustomCertificate— приложения работают по HTTPS, используя сертификат из неймспейсаd8-system;Disabled— приложения работают только по HTTP;OnlyInURI— приложения работают по HTTP, подразумевая, что перед ними стоит внешний HTTPS-балансировщик, который терминирует HTTPS. Балансировщик должен обеспечивать перенаправление запросов с HTTP на HTTPS.
По умолчанию:
CertManagerДопустимые значения:
Disabled,CertManager,CustomCertificate,OnlyInURI
- строкаsettings.applications.ingressClass
Имя класса Ingress-контроллера (IngressClass), используемого приложениями экосистемы Deckhouse по умолчанию при создании Ingress-ресурсов.
Некоторые приложения поддерживают собственный параметр
ingressClass, позволяющий использовать другой класс Ingress-контроллера вместо используемого по умолчанию.По умолчанию:
nginxШаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Пример:
ingressClass: nginx - строкаsettings.applications.publicDomainTemplate
Шаблон DNS-имён с тремя ключами
%sв качестве динамических частей строки.При формировании DNS-имени:
- первый ключ заменяется на имя компонента;
- второй — на имя экземпляра приложения;
- третий — на имя неймспейса приложения.
Приложения экосистемы Deckhouse используют этот шаблон при создании Ingress-ресурсов.
Например, для шаблона
%s.%s.%s.kube.company.myкомпонентwebэкземпляра приложенияgrafana, работающего в неймспейсеmonitoring, получит Ingress-ресурс на адресweb.grafana.monitoring.kube.company.my.Особенности использования:
- Если параметр не указан, Ingress-ресурсы создаваться не будут.
- Домен, указанный в шаблоне, не может совпадать или быть поддоменом домена, заданного в параметре
clusterDomain. Не рекомендуется изменять значениеclusterDomainбез необходимости. - Перед использованием шаблона настройте службы DNS как в сетях, где будут располагаться узлы кластера, так и в сетях, из которых клиенты будут обращаться к служебным веб-интерфейсам.
- Если домен шаблона совпадает с доменом сети узлов, используйте только А-записи для назначения служебным веб-интерфейсам платформы адресов frontend-узлов. Например, если для узлов заведена зона
company.my, шаблон должен иметь вид%s.%s.%s.company.my.
Шаблон:
^(%s([-a-z0-9]*[a-z0-9])?|[a-z0-9]([-a-z0-9]*)?%s([-a-z0-9]*)?[a-z0-9]|[a-z0-9]([-a-z0-9]*)?%s)\.(%s([-a-z0-9]*[a-z0-9])?|[a-z0-9]([-a-z0-9]*)?%s([-a-z0-9]*)?[a-z0-9]|[a-z0-9]([-a-z0-9]*)?%s)\.(%s([-a-z0-9]*[a-z0-9])?|[a-z0-9]([-a-z0-9]*)?%s([-a-z0-9]*)?[a-z0-9]|[a-z0-9]([-a-z0-9]*)?%s)(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Примеры:
publicDomainTemplate: "%s.%s.%s.company.my"publicDomainTemplate: "%s.%s.%s.kube.company.my" - объектsettings.applications.update
Настройки обновления приложений экосистемы Deckhouse: режим обновления, окна обновлений, оповещения об обновлении и блокировка обновления при наличии алертов.
Настройки используются приложениями, у которых не заданы собственные настройки
spec.update. Настройки оповещений используются и приложениями с собственными настройками обновления, так как для отдельного приложения оповещения не настраиваются.Если параметр не указан, приложения используют настройки обновления Deckhouse — параметр
updateмодуляdeckhouse.Пример:
update: mode: AutoPatch windows: - from: '8:00' to: '15:00' days: - Tue - Sat notification: webhook: https://release-webhook.mydomain.com minimalNotificationTime: 6h auth: basic: username: user password: password- объектsettings.applications.update.blockOnAlerts
Настройки блокировки обновления приложений при наличии алертов в кластере.
- булевыйsettings.applications.update.blockOnAlerts.enabled
Если включено, обновление приложений блокируется, пока в кластере есть алерты с уровнем серьезности, равным указанному в параметре
severityили выше.По умолчанию:
false - целочисленныйsettings.applications.update.blockOnAlerts.severity
Уровень серьезности алертов, которые блокируют обновление.
Уровень серьезности — число от 0 до 9, где 0 — наибольшая серьезность, а 9 — наименьшая.
По умолчанию:
4Допустимые значения:
0 <= X <= 9
- строкаsettings.applications.update.mode
Режим обновления приложений на выбранном для них канале обновлений.
-
AutoPatch— автоматический режим обновления для патч-версий.Для обновления минорной версии (например, с
v1.2.*наv1.3.*) необходимо подтверждение.Обновление патч-версии (например, с
v1.3.1наv1.3.2) применяется с учетом окон обновлений, если они заданы. -
Auto— автоматический режим обновления для всех версий.Обновления минорной версии (например, с
v1.2.*наv1.3.*) и патч-версии (например, сv1.3.1наv1.3.2) применяются с учетом окон обновлений, если они заданы. -
Manual— ручной режим обновления для всех версий.Для обновления и минорной, и патч-версии необходимо подтверждение.
По умолчанию:
AutoPatchДопустимые значения:
AutoPatch,Auto,Manual -
- объектsettings.applications.update.notification
Настройки оповещений о запланированном обновлении приложений.
Имеет эффект только при установленном автоматическом режиме обновления.
Пример:
notification: webhook: https://release-webhook.mydomain.com minimalNotificationTime: 8h retryMinTime: 2s- объектsettings.applications.update.notification.auth
Настройки аутентификации на вебхуке.
Если параметр не указан, вебхук вызывается без аутентификации.
- объектsettings.applications.update.notification.auth.basic
Настройки Basic-аутентификации на вебхуке.
- строкаsettings.applications.update.notification.auth.basic.password
Обязательный параметр
Пароль для аутентификации на вебхуке.
Имя и пароль пользователя будут в заголовке
Authorizationв форматеBasic <base64(username:password)>. - строкаsettings.applications.update.notification.auth.basic.username
Обязательный параметр
Имя пользователя для аутентификации на вебхуке.
Имя и пароль пользователя будут в заголовке
Authorizationв форматеBasic <base64(username:password)>.
- строкаsettings.applications.update.notification.auth.bearerToken
Токен для аутентификации на вебхуке.
Токен будет в заголовке
Authorizationв форматеBearer <token>.
- строкаsettings.applications.update.notification.minimalNotificationTime
Минимальное время, которое должно пройти перед обновлением с момента появления новой минорной версии приложения на его канале обновлений.
Задается в виде строки с указанием часов и минут: 30m, 1h, 2h30m, 24h.
Механизм обновления гарантирует, что приложение не обновится, пока не пройдет указанный период времени.
При использовании окон обновлений обновление приложения произойдет в ближайшее возможное окно обновлений, но не ранее чем истечет указанное в
minimalNotificationTimeвремя.Шаблон:
^([0-9]+h([0-9]+m)?|[0-9]+m)$Пример:
minimalNotificationTime: 6h - строкаsettings.applications.update.notification.releaseType
Определяет тип версии, о которой будет отправлено оповещение:
Minor— только для обновления минорной версии.All— для любых обновлений, включая обновление патч-версии.
По умолчанию:
MinorДопустимые значения:
All,MinorПример:
releaseType: All - строкаsettings.applications.update.notification.retryMinTime
Минимальный интервал между повторными попытками вызова вебхука при неуспешном запросе.
Задается в виде строки с указанием часов, минут или секунд: 30s, 1m, 1h, 2h30m.
Повторные попытки выполняются с экспоненциальной задержкой: каждый следующий интервал в два раза больше предыдущего. Например, при
retryMinTime = 2sзадержки будут: 2s, 4s, 8s, 16s, 32s.По умолчанию — 2 секунды (если не указано).
Шаблон:
^([0-9]+h([0-9]+m)?|[0-9]+m|[0-9]+s)$Пример:
retryMinTime: 2s - булевыйsettings.applications.update.notification.tlsSkipVerify
Пропустить валидацию TLS-сертификата при запросе вебхука.
По умолчанию:
false - строкаsettings.applications.update.notification.webhook
URL-адрес вебхука.
Вызов вебхука произойдет после появления новой минорной версии приложения на его канале обновлений, но до момента ее применения в кластере.
Внимание. При указании неверного адреса вебхука обновление приложений будет заблокировано.
Используйте параметр
minimalNotificationTimeпри необходимости установить минимальное время, которое должно пройти перед обновлением с момента появления новой минорной версии на канале обновлений.Шаблон:
^https?://[^\s/$.?#].[^\s]*$Пример:
webhook: https://webhook.site/#!/bc8f71ac-c182-4181-9159-6ba6950afffa
- массив объектовsettings.applications.update.windows
Список окон обновлений в течение суток.
- массив строкsettings.applications.update.windows.days
Дни недели, в которые применяется окно обновлений.
Пример:
days: - Mon - Wed- строкаЭлемент массива
День недели.
Допустимые значения:
Mon,Tue,Wed,Thu,Fri,Sat,SunПример:
Mon
- строкаsettings.applications.update.windows.from
Обязательный параметр
Время начала окна обновления (в часовом поясе UTC).
Должно быть меньше времени окончания окна обновления.
Шаблон:
^(?:\d|[01]\d|2[0-3]):[0-5]\d$Пример:
from: '13:00' - строкаsettings.applications.update.windows.to
Обязательный параметр
Время окончания окна обновления (в часовом поясе UTC).
Должно быть больше времени начала окна обновления.
Шаблон:
^(?:\d|[01]\d|2[0-3]):[0-5]\d$Пример:
to: '18:30'
- строкаsettings.defaultClusterStorageClass
Имя StorageClass, который DP определит как StorageClass используемый в кластере по умолчанию.
DP запрещает вручную добавлять или изменять default-аннотацию (
storageclass.kubernetes.io/is-default-class='true') у StorageClass. Используйте параметр, чтобы определять или изменять StorageClass используемый в кластере по умолчанию.Если значение не указано, фактический StorageClass используемый в кластере по умолчанию будет определяться в следующем порядке:
- StorageClass в кластере, имеющий default-аннотацию (
storageclass.kubernetes.io/is-default-class='true'); - Первый (по алфавиту) StorageClass из создаваемых модулем облачного провайдера (если какой-либо модуль облачного провайдера используется).
По умолчанию:
- StorageClass в кластере, имеющий default-аннотацию (
- булевыйsettings.highAvailability
Параметр глобального включения режима отказоустойчивости для модулей, которые его поддерживают.
Если значение не указано, оно определяется автоматически как
trueдля кластеров с более чем одним master-узлом. В остальных случаях значение определяется какfalse.Примеры:
highAvailability: truehighAvailability: false - объектsettings.modules
Общие параметры модулей Deckhouse.
- объектsettings.modules.gatewayAPIGateway
Ссылка на объект Gateway (из Gateway API), используемый модулями Deckhouse при создании ресурсов Gateway API.
Если параметр не указан, модули используют Gateway, автоматически обнаруженный в кластере (если он есть).
- строкаsettings.modules.gatewayAPIGateway.name
Обязательный параметр
Имя объекта Gateway.
- строкаsettings.modules.gatewayAPIGateway.namespace
Обязательный параметр
Неймспейс объекта Gateway.
- объектsettings.modules.https
Способ организации доступа по протоколу HTTPS для модулей экосистемы Deckhouse.
Примеры:
https: certManager: clusterIssuerName: letsencrypt mode: CertManagerhttps: mode: Disabledhttps: mode: OnlyInURIhttps: mode: CustomCertificate customCertificate: secretName: plainstring- объектsettings.modules.https.certManager
- строкаsettings.modules.https.certManager.clusterIssuerName
Имя ClusterIssuer, используемого модулями для получения TLS-сертификатов.
Модуль
cert-managerпредоставляет следующие ClusterIssuer:letsencrypt;letsencrypt-staging;selfsigned;clouddns;cloudflare;digitalocean;route53.
При необходимости вы можете использовать собственный
ClusterIssuer.По умолчанию:
letsencrypt
- объектsettings.modules.https.customCertificate
- строкаsettings.modules.https.customCertificate.secretName
Имя Secret в неймспейсе
d8-system, содержащего TLS-сертификат, который будет использоваться модулями.Указанный Secret должен быть в формате
kubernetes.io/tls.По умолчанию:
false
- строкаsettings.modules.https.mode
Режим работы HTTPS:
CertManager— модули работают по HTTPS и самостоятельно заказывают сертификаты с помощью ClusterIssuer, указанного в параметреcertManager.clusterIssuerName;CustomCertificate— модули работают по HTTPS, используя сертификат из неймспейсаd8-system;Disabled— модули работают только по HTTP (при этом некоторые модули могут не работать — например,user-authn);OnlyInURI— модули работают по HTTP, подразумевая, что перед ними стоит внешний HTTPS-балансировщик, который терминирует HTTPS. Такой балансировщик должен обеспечивать перенаправление запросов с HTTP на HTTPS.
По умолчанию:
CertManagerДопустимые значения:
Disabled,CertManager,CustomCertificate,OnlyInURI
- строкаsettings.modules.ingressClass
Имя класса Ingress-контроллера (IngressClass), используемого модулями Deckhouse по умолчанию при создании Ingress-ресурсов.
Некоторые модули поддерживают собственный параметр
ingressClass, позволяющий использовать другой класс Ingress-контроллера вместо используемого по умолчанию.По умолчанию:
nginxШаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Пример:
ingressClass: nginx - объектsettings.modules.placement
Настройки, определяющие расположение компонентов модулей Deckhouse по умолчанию.
- массив строкsettings.modules.placement.customTolerationKeys
Список ключей пользовательских toleration.
Необходимо указывать, чтобы позволить планировщику размещать критически важные компоненты Deckhouse, такие как cni и csi, на выделенных узлах.
Пример:
customTolerationKeys: - dedicated.example.com - node-dedicated.example.com/master
- строкаsettings.modules.publicDomainTemplate
Шаблон DNS-имен c ключом
%sв качестве динамической части строки.Модули Deckhouse используют этот шаблон при создании Ingress-ресурсов.
Например, для шаблона
%s.kube.company.myмодуль prometheus создаст Ingress-ресурс на адресgrafana.kube.company.myдля доступа к Grafana.Обратите внимание:
- Если параметр не указан, Ingress-ресурсы создаваться не будут.
- Домен, указанный в шаблоне, не может совпадать или быть поддоменом домена, заданного в параметре
clusterDomain. Мы не рекомендуем менять значениеclusterDomainбез особой необходимости. - Для корректной работы шаблона необходимо предварительно настроить службы DNS как в сетях, где будут располагаться узлы кластера, так и в сетях, из которых к служебным веб-интерфейсам платформы будут обращаться клиенты.
- В случае, если шаблон совпадает с доменом сети узлов, используйте только А записи для назначения служебным веб-интерфейсам платформы адресов Frontend узлов. Например, для узлов заведена зона
company.my, а шаблон имеет вид%s.company.my.
Шаблон:
^(%s([-a-z0-9]*[a-z0-9])?|[a-z0-9]([-a-z0-9]*)?%s([-a-z0-9]*)?[a-z0-9]|[a-z0-9]([-a-z0-9]*)?%s)(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Примеры:
publicDomainTemplate: "%s.kube.company.my"publicDomainTemplate: kube-%s.company.my - объектsettings.modules.resourcesRequests
Количество ресурсов (CPU и памяти), выделяемых для работы некоторых компонентов.
Подробнее про единицы измерения ресурсов.
- объектsettings.modules.resourcesRequests.controlPlaneПараметр устарел
Устарело. Вместо этого используйте параметр
.spec.settings.resourcesRequestsв конфигурации модуляcontrol-plane-manager.Объём ресурсов (CPU и памяти), выделяемых для компонентов control plane на каждом master-узле кластера.
Настройки не применяются, если control plane кластера управляется облачным провайдером (например, Google Kubernetes Engine или Azure Kubernetes Service).
Пример:
controlPlane: cpu: 1000m memory: 500M- строка or числоsettings.modules.resourcesRequests.controlPlane.cpuПараметр устарел
Устарело. Вместо этого используйте параметр
controlPlaneManager.spec.settings.resourcesRequests.cpu.Количество CPU, выделяемых для компонентов control plane, работающих на каждом master-узле кластера.
Шаблон:
^[0-9]+m?$ - строкаsettings.modules.resourcesRequests.controlPlane.memoryПараметр устарел
Устарело. Вместо этого используйте параметр
controlPlaneManager.spec.settings.resourcesRequests.memory.Объем памяти, выделяемой для компонентов control plane, работающих на каждом master-узле кластера.
Шаблон:
^[0-9]+(\.[0-9]+)?(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)?$
- строкаsettings.modules.storageClass
Имя StorageClass, который будет использоваться для всех компонентов Deckhouse Platform (Prometheus, Grafana, OpenVPN и т. д.), если он не переопределен в конфигурации модуля.
Если значение не указано, то используется StorageClass по умолчанию, установленный в кластере.
Важные замечания:
- Этот параметр применяется только при включения модуля, при создании новых PVC.
- Если для модуля уже существует PersistentVolumeClaim (PVC), то изменение этого параметра не влияет на существующий PVC и не приводит к пересозданию дисков. Модуль использует существующий PVC и его StorageClass.
- Если в конфигурации модуля определен свой собственный параметр
storageClass, то используется значение из конфигурации модуля, а этот параметр не применяется. - Этот параметр имеет смысл использовать только в исключительных ситуациях.
По умолчанию:
- строкаsettings.storageClassПараметр устарел
Устарел. Используйте параметр settings.modules.storageClass.
Имя StorageClass, который будет использоваться для всех компонентов Deckhouse Platform (Prometheus, Grafana, OpenVPN и т. д.).
- Если значение не указано, то используется StorageClass по умолчанию, установленный в кластере.
- Этот параметр имеет смысл использовать только в исключительных ситуациях.
- Этот параметр применяется в процессе включения модуля.
По умолчанию: