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

Параметры

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

  • highAvailabilityбулевый

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

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

    Примеры:

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

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

    • modules.httpsобъект

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

      Примеры:

      https:
        certManager:
          clusterIssuerName: letsencrypt
        mode: CertManager
      
      https:
        mode: Disabled
      
      https:
        mode: OnlyInURI
      
      https:
        mode: CustomCertificate
        customCertificate:
          secretName: plainstring
      
      • modules.https.certManagerобъект
        • modules.https.certManager.clusterIssuerNameстрока

          Имя ClusterIssuer, используемого модулями Deckhouse.

          В модуле cert-manager доступны следующие ClusterIssuer: letsencrypt, letsencrypt-staging, selfsigned, clouddns, cloudflare, digitalocean, route53. Также вы можете использовать свой ClusterIssuer.

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

      • modules.https.customCertificateобъект
        • modules.https.customCertificate.secretNameстрока

          Имя Secret’а в пространстве имен d8-system, который будет использоваться модулями Deckhouse.

          Указанный Secret должен быть в формате kubernetes.io/tls.

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

      • 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

    • 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
      
    • modules.placementобъект

      Настройки, определяющие расположение компонентов модулей Deckhouse по умолчанию.

      • modules.placement.customTolerationKeysмассив строк

        Список ключей пользовательских toleration.

        Необходимо указывать, чтобы позволить планировщику размещать критически важные компоненты Deckhouse, такие как cni и csi, на выделенных узлах.

        Пример:

        customTolerationKeys:
        - dedicated.example.com
        - node-dedicated.example.com/master
        
    • 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"
      
      • modules.proxy.httpProxyПараметр устарелстрока

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

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

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

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

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

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

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

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

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

    • 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.

      Если параметр не указан, 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
      
    • modules.resourcesRequestsобъект

      Количество ресурсов (CPU и памяти), выделяемых для работы компонентов Deckhouse, работающих на каждом узле кластера (обычно это DaemonSet’ы, например cni-flannel, monitoring-ping).

      Подробнее про единицы измерения ресурсов.

      • modules.resourcesRequests.controlPlaneобъект

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

        Пример:

        controlPlane:
          cpu: 1000m
          memory: 500M
        
        • modules.resourcesRequests.controlPlane.cpu

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

        • modules.resourcesRequests.controlPlane.memoryстрока

          Объем памяти, выделяемой для компонентов control plane, работающих на каждом master-узле кластера.

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

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

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

        Пример:

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

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

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

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

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

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

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

      • 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
        
        • modules.resourcesRequests.masterNode.cpu

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

          • Для кластера, управляемого Deckhouse, значение по умолчанию определяется автоматически по формуле: .status.allocatable.cpu минимального master-узла (но не более 4 (ядер CPU)) минус количество CPU, указанное в параметре everyNode.cpu.
          • Для managed-кластера значение по умолчанию: 1 (одно ядро CPU) минус количество CPU, указанное в параметре everyNode.cpu.
        • 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)?$

  • storageClassстрока

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

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

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