Глобальные настройки Deckhouse Kubernetes Platform позволяют вам настраивать параметры, которые используются по умолчанию всеми модулями и компонентами. Некоторые модули могут переопределять часть этих параметров (это можно узнать в разделе настройки соответствующего модуля в документации модуля).
Глобальные настройки 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'
      resourcesRequests:
        controlPlane:
          cpu: 1000m
          memory: 500M
      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.defaultClusterStorageClassИмя StorageClass, который DKP определит как StorageClass используемый в кластере по умолчанию. DKP запрещает вручную добавлять или изменять 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.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, используемого модулями Deckhouse.В модуле 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, который будет использоваться модулями Deckhouse.Указанный Secret должен быть в формате kubernetes.io/tls. По умолчанию: false
 
- строкаsettings.modules.https.modeРежим работы HTTPS: - CertManager— модули Deckhouse будут работать по HTTPS, самостоятельно заказывая сертификат с помощью ClusterIssuer, указанного в параметре- certManager.clusterIssuerName;
- CustomCertificate— модули Deckhouse будут работать по HTTPS, используя сертификат из пространства имен- d8-system;
- Disabled— модули Deckhouse будут работать только по HTTP (некоторые модули могут не работать, например user-authn);
- OnlyInURI— модули Deckhouse будут работать по HTTP, подразумевая, что перед ними стоит внешний HTTPS-балансировщик, который терминирует HTTPS. Балансировщик должен обеспечивать перенаправление с HTTP на HTTPS.
 По умолчанию: CertManagerДопустимые значения: Disabled,CertManager,CustomCertificate,OnlyInURI
 
- строкаsettings.modules.ingressClassИмя класса Ingress-контроллера (IngressClass), используемый для модулей Deckhouse. Если имя IngressClass задано как nginx, соответствующий Ingress-контроллер автоматически считается Ingress-контроллером, используемым по умолчанию для всех модулей. При использовании любого другого имени 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 и памяти), выделяемых для работы компонентов Deckhouse, работающих на каждом узле кластера (обычно это DaemonSet’ы, например cni-flannel,monitoring-ping).Подробнее про единицы измерения ресурсов. - объектsettings.modules.resourcesRequests.controlPlaneКоличество ресурсов (CPU и памяти), выделяемых для компонентов control plane, работающих на каждом master-узле кластера. Не работает для not-managed-облаков (например, GKE). Пример: controlPlane: cpu: 1000m memory: 500M- settings.modules.resourcesRequests.controlPlane.cpuКоличество CPU, выделяемых для компонентов control plane, работающих на каждом master-узле кластера. 
- строкаsettings.modules.resourcesRequests.controlPlane.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 Kubernetes Platform (Prometheus, Grafana, OpenVPN и т. д.). - Если значение не указано, то используется StorageClass по умолчанию, установленный в кластере.
- Этот параметр имеет смысл использовать только в исключительных ситуациях.
- Этот параметр применяется в процессе включения модуля.
 По умолчанию: 
 
- строкаsettings.storageClassПараметр устарелУстарел. Используйте параметр settings.modules.storageClass. Имя StorageClass, который будет использоваться для всех компонентов Deckhouse Kubernetes Platform (Prometheus, Grafana, OpenVPN и т. д.). - Если значение не указано, то используется StorageClass по умолчанию, установленный в кластере.
- Этот параметр имеет смысл использовать только в исключительных ситуациях.
- Этот параметр применяется в процессе включения модуля.
 По умолчанию: