Глобальные настройки Deckhouse хранятся в ресурсе ModuleConfig/global (см. конфигурация Deckhouse).

В параметре publicDomainTemplate указывается шаблон DNS-имен, с учетом которого некоторые модули Deckhouse создают Ingress-ресурсы.

Если у вас нет возможности заводить wildcard-записи DNS, для тестирования можно воспользоваться сервисом sslip.io или его аналогами.

Домен, используемый в шаблоне, не должен совпадать с доменом, указанным в параметре clusterDomain. Например, если clusterDomain установлен в cluster.local (значение по умолчанию), то publicDomainTemplate не может быть %s.cluster.local.

Пример ресурса 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'

Параметры

Версия схемы: 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 из создаваемых модулем облачного провайдера (если какой-либо модуль облачного провайдера используется).

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

    • settings.highAvailability
      булевый

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

      Если значение не указано, оно определяется автоматически как true для кластеров с более чем одним master-узлом. В остальных случаях значение определяется как false.

      Примеры:

      highAvailability: true
      
      highAvailability: false
      
    • settings.modules
      объект

      Общие параметры модулей Deckhouse.

      • settings.modules.https
        объект

        Способ реализации протокола HTTPS, используемый модулями Deckhouse.

        Примеры:

        https:
          certManager:
            clusterIssuerName: letsencrypt
          mode: CertManager
        
        https:
          mode: Disabled
        
        https:
          mode: OnlyInURI
        
        https:
          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-контроллера (Ingress class), используемый для модулей Deckhouse.

        По умолчанию: "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.

        Обратите внимание:

        • Нельзя использовать в кластере DNS-имена (создавать соответствующие Ingress-ресурсы), подпадающие под указанный шаблон. Это может вызвать пересечения с создаваемыми Deckhouse Ingress-ресурсами.
        • Домен, используемый в шаблоне, не должен совпадать с доменом, указанным в параметре clusterDomain. Например, если clusterDomain установлен в cluster.local (значение по умолчанию), то publicDomainTemplate не может быть %s.cluster.local.
        • Домен, используемый в шаблоне, не должен совпадать с доменом, указанным в параметре clusterDomain и внутренней сервисной зоне сети. Например, если clusterDomain установлен в cluster.local (по умолчанию), а сервисная зона сети — ru-central1.internal, то publicDomainTemplate не может быть %s.cluster.local или %s.ru-central1.internal.
        • Если параметр не указан, Ingress-ресурсы создаваться не будут.

        Шаблон: ^(%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 по умолчанию, установленный в кластере.
      • Этот параметр имеет смысл использовать только в исключительных ситуациях.
      • Этот параметр применяется в процессе включения модуля.

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