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

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

    • settings.highAvailability
      булевый

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

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

      Примеры:

      highAvailability: true
      
      highAvailability: 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: CertManager
        
        https:
          mode: Disabled
        
        https:
          mode: OnlyInURI
        
        https:
          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
          
          • settings.modules.resourcesRequests.controlPlane.cpu
            Параметр устарел
            строка or число

            Устарело. Вместо этого используйте параметр 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 по умолчанию, установленный в кластере.
      • Этот параметр имеет смысл использовать только в исключительных ситуациях.
      • Этот параметр применяется в процессе включения модуля.

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

Дополнительные ресурсы