Глобальные настройки 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: 1
  settings: # <-- Параметры модуля из раздела "Параметры" ниже.
    defaultClusterStorageClass: 'default-fast'
    modules:
      publicDomainTemplate: '%s.kube.company.my'
      resourcesRequests:
        controlPlane:
          cpu: 1000m
          memory: 500M
      placement:
        customTolerationKeys:
        - dedicated.example.com
    storageClass: 'default-fast'

Параметры

Версия схемы: 1

  • 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.proxy
        Параметр устарел
        объект

        Глобальная настройка proxy для модулей.

        Пример:

        proxy:
          httpProxy: http://1.2.3.4:80
          httpsProxy: https://1.2.3.4:443
          noProxy:
          - 127.0.0.1
          - 192.168.0.0/24
          - example.com
          - ".example.com"
        
        • settings.modules.proxy.httpProxy
          Параметр устарел
          строка

          Proxy URL для HTTP-запросов.

          Шаблон: ^(http|https)://[0-9a-zA-Z\.\-:]+$

        • settings.modules.proxy.httpsProxy
          Параметр устарел
          строка

          Proxy URL для HTTPS-запросов.

          Шаблон: ^(http|https)://[0-9a-zA-Z\.\-:]+$

        • settings.modules.proxy.noProxy
          Параметр устарел
          массив строк

          Список IP и доменных имен, для которых проксирование не применяется. Для указания wildcard-домена используйте имя с точкой в качестве префикса (например, .example.com).

          • Элемент массива
            строка

            Шаблон: ^[a-z0-9\-\./]+$

      • 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.resourcesRequests.everyNode
          Параметр устарел
          объект

          Количество ресурсов (CPU и памяти), выделяемых для компонентов Deckhouse, работающих на каждом узле кластера.

          Пример:

          everyNode:
            cpu: 100m
            memory: 150M
          
          • settings.modules.resourcesRequests.everyNode.cpu

            Количество CPU, выделяемых на каждом узле.

            По умолчанию: 300m

          • settings.modules.resourcesRequests.everyNode.memory
            строка

            Объем памяти, выделяемой на каждом узле.

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

            Шаблон: ^[0-9]+(\.[0-9]+)?(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)?$

        • settings.modules.resourcesRequests.masterNode
          Параметр устарел
          объект

          Количество ресурсов (CPU и памяти), выделяемых для компонентов Deckhouse, работающих на каждом master-узле (в том числе control plane, если control plane управляется Deckhouse).

          Внимание! В случае managed-кластера (Kubernetes as a Service) Deckhouse может не управлять компонентами control plane. В таких случаях все указанные в параметре masterNode ресурсы отдаются компонентам Deckhouse.

          Пример:

          masterNode:
            cpu: '1'
            memory: 150Mi
          
          • settings.modules.resourcesRequests.masterNode.cpu

            Количество CPU, выделяемых на каждом master-узле дополнительно к указанному в параметре everyNode.cpu:

            • Для кластера, управляемого Deckhouse, значение по умолчанию определяется автоматически по формуле: .status.allocatable.cpu минимального master-узла (но не более 4 (ядер CPU)) минус количество CPU, указанное в параметре everyNode.cpu.
            • Для managed-кластера значение по умолчанию: 1 (одно ядро CPU) минус количество CPU, указанное в параметре everyNode.cpu.
          • settings.modules.resourcesRequests.masterNode.memory
            строка

            Объем памяти, выделяемой на каждом master-узле, дополнительно к указанному в параметре everyNode.memory:

            • Для кластера, управляемого Deckhouse, значение по умолчанию определяется автоматически по формуле: .status.allocatable.memory минимального master-узла (но не более 8Gi) минус значение, указанное в параметре everyNode.memory.
            • Для managed-кластера значение по умолчанию: 1Gi минус значение, указанное в параметре everyNode.memory.

            Шаблон: ^[0-9]+(\.[0-9]+)?(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)?$

    • settings.storageClass
      строка

      Имя StorageClass, который будет использоваться для всех компонентов Deckhouse Kubernetes Platform (Prometheus, Grafana, OpenVPN и т. д.).

      • Если значение не указано, то используется StorageClass по умолчанию, установленный в кластере.
      • Этот параметр имеет смысл использовать только в исключительных ситуациях.
      • Этот параметр применяется в процессе включения модуля.

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