Global configuration settings allow you to customize parameters that are used by default by all modules and components of the Deckhouse Platform. Some modules may override some of these parameters (this can be found in the settings section of the respective module’s documentation).
The global configuration settings are stored in the ModuleConfig global.
The publicDomainTemplate parameter specifies a DNS name template used by some Deckhouse modules to create Ingress resources. If this parameter is not specified, Ingress resources will not be created.
If you don’t have access to wildcard DNS records, you can use sslip.io or similar services for testing purposes.
The domain specified in the template must not match or be a subdomain of the domain specified in the network.clusterDomain parameter of the control-plane-manager module. We do not recommend changing the cluster domain unless absolutely necessary.
For the template to function correctly, you must first configure DNS services both in the networks where the cluster nodes will be located and in the networks from which clients will access the platform’s service web interfaces.
If the template matches the domain of the node network, use only A records to assign addresses of the nodes’ Frontend interfaces to the platform’s service web interfaces.
For example, if the nodes are registered under the company.my zone and the template is %s.company.my.
Example of the ModuleConfig/global:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: global
spec:
version: 2
settings: # <-- Module parameters from the "Parameters" section below.
defaultClusterStorageClass: 'default-fast'
modules:
publicDomainTemplate: '%s.kube.company.my'
placement:
customTolerationKeys:
- dedicated.example.com
storageClass: 'default-fast'
Conversions
Global configuration settings are configured using the global ModuleConfig, the schema of which contains a version number.
When you apply an old version of the ModuleConfig schema in a cluster, automatic transformations are performed. To manually update the ModuleConfig schema version, the following steps must be completed sequentially for each version
:
- Updates from version 1 to 2:
Move
storageClasstomodules.storageClass. Removemodules.resourcesRequests.everyNode,modules.resourcesRequests.masterNodeandmodules.proxyparameters. - Updates from version 2 to 3:
Move
modules.ingressClasstomodules.ingress.ingressClass, andmodules.gatewayAPIGatewaytomodules.gatewayAPI.gateway.
Parameters
Schema version: 3
- objectsettings
- objectsettings.applications
Common parameters of the Deckhouse ecosystem applications.
- objectsettings.applications.https
HTTPS access implementation method used by the Deckhouse ecosystem applications.
Examples:
https: certManager: clusterIssuerName: letsencrypt mode: CertManagerhttps: mode: Disabledhttps: mode: OnlyInURIhttps: mode: CustomCertificate customCertificate: secretName: plainstring- objectsettings.applications.https.certManager
- stringsettings.applications.https.certManager.clusterIssuerName
ClusterIssuer name used by applications to obtain TLS certificates.
The
cert-managermodule offers the following ClusterIssuer options:letsencryptletsencrypt-stagingselfsignedclouddnscloudflaredigitaloceanroute53
You can use your own ClusterIssuer if necessary.
Default:
letsencrypt
- objectsettings.applications.https.customCertificate
- stringsettings.applications.https.customCertificate.secretName
Name of the Secret in the
d8-systemnamespace containing a TLS certificate for applications.This Secret must be in the
kubernetes.io/tlsformat.Default:
false
- stringsettings.applications.https.mode
HTTPS usage mode:
CertManager: Applications use HTTPS and obtain certificates automatically using the ClusterIssuer defined in thecertManager.clusterIssuerNameparameter.CustomCertificate: Applications use HTTPS with the certificate from thed8-systemnamespace.Disabled: Applications use HTTP only.OnlyInURI: Applications use HTTP in the expectation that there is an external upstream HTTPS load balancer, which terminates HTTPS. This load balancer should be capable of redirecting requests from HTTP to HTTPS.
Default:
CertManagerAllowed values:
Disabled,CertManager,CustomCertificate,OnlyInURI
- stringsettings.applications.ingressClass
Default IngressClass name used by the Deckhouse ecosystem applications when creating Ingress resources.
Some applications support their own
ingressClassparameter, which lets you use a different IngressClass instead of the default one.Default:
nginxPattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Example:
ingressClass: nginx - stringsettings.applications.publicDomainTemplate
DNS name template with two
%skeys used as the dynamic parts of the string.Whenever a DNS is generated:
- First key is replaced with the application instance name.
- Second key is replaced with the application’s namespace.
The Deckhouse ecosystem applications use this template when creating Ingress resources.
For example, given the template
%s.%s.kube.company.my, the application instance namedgrafanarunning in themonitoringnamespace will get an Ingress resource at the addressgrafana.monitoring.kube.company.my.Usage notes:
- If this parameter is not specified, Ingress resources will not be created.
- The domain specified in the template must not match or be a subdomain of the domain specified in the
network.clusterDomainparameter of thecontrol-plane-managermodule. Changing the cluster domain is not recommended unless necessary. - Before using the template, configure DNS services both in the networks where the cluster nodes will be located and in the networks from which clients will access the service web interfaces.
- If the template domain matches the domain of the node network, use only A records to assign addresses of the frontend nodes to the platform service web interfaces.
For example, if the nodes are registered under the
company.myzone, the template must be%s.%s.company.my.
Pattern:
^(%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])?)*$Examples:
publicDomainTemplate: "%s.%s.company.my"publicDomainTemplate: "%s.%s.kube.company.my" - objectsettings.applications.update
Update settings of the Deckhouse ecosystem applications: the update mode, update windows, update notifications, and blocking the update on alerts.
The settings are used by applications that do not have their own
spec.updatesettings. The notification settings are also used by applications that have their own update settings, because notifications cannot be configured for a single application.If the parameter is omitted, applications use the Deckhouse update settings: the
updateparameter of thedeckhousemodule.Example:
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- objectsettings.applications.update.blockOnAlerts
Settings for blocking application updates while there are alerts in the cluster.
- booleansettings.applications.update.blockOnAlerts.enabled
If enabled, application updates are blocked while there are alerts in the cluster with a severity level equal to or higher than the one set in the
severityparameter.Default:
false - integersettings.applications.update.blockOnAlerts.severity
The severity level of the alerts that block the update.
The severity level is a number from 0 to 9, where 0 is the highest severity and 9 is the lowest severity.
Default:
4Allowed values:
0 <= X <= 9
- stringsettings.applications.update.mode
Update mode of applications on the release channel selected for them.
-
AutoPatch: Automatic update mode for patch versions.To change a minor version (for example, from
v1.2.*tov1.3.*), confirmation is required.A patch version update (for example, from
v1.3.1tov1.3.2) is applied taking into account the update windows, if they are set. -
Auto: Automatic update mode for all versions.Minor version updates (for example, from
v1.2.*tov1.3.*) and patch version updates (for example, fromv1.3.1tov1.3.2) are applied taking into account the update windows, if they are set. -
Manual: Manual update mode for all versions.Confirmation is required for updating both minor and patch versions.
Default:
AutoPatchAllowed values:
AutoPatch,Auto,Manual -
- objectsettings.applications.update.notification
Settings for notifications of scheduled application updates.
Has an effect only when an automatic update mode is set.
Example:
notification: webhook: https://release-webhook.mydomain.com minimalNotificationTime: 8h retryMinTime: 2s- objectsettings.applications.update.notification.auth
Authentication settings for the webhook.
If the parameter is omitted, the webhook will be called without authentication.
- objectsettings.applications.update.notification.auth.basic
Basic authentication settings for the webhook.
- stringsettings.applications.update.notification.auth.basic.password
Required value
The password for the webhook.
The username and password will be sent in the
Authorizationheader in the formatBasic <base64(username:password)>. - stringsettings.applications.update.notification.auth.basic.username
Required value
The username for the webhook.
The username and password will be sent in the
Authorizationheader in the formatBasic <base64(username:password)>.
- stringsettings.applications.update.notification.auth.bearerToken
The token for the webhook.
The token will be sent in the
Authorizationheader in the formatBearer <token>.
- stringsettings.applications.update.notification.minimalNotificationTime
The minimum time that must pass before updating from the moment a new minor version of an application appears on its release channel.
It is specified as a string containing the time unit in hours and minutes: 30m, 1h, 2h30m, 24h.
The update mechanism ensures that an application will not be updated until the specified period of time has passed.
When using update windows, the application update will happen at the nearest possible update window but not before the time specified in
minimalNotificationTimeexpires.Pattern:
^([0-9]+h([0-9]+m)?|[0-9]+m)$Example:
minimalNotificationTime: 6h - stringsettings.applications.update.notification.releaseType
Defines the type of version for which the notification will be sent:
Minor: Only for updating the minor version.All: For any updates, including updating a patch version.
Default:
MinorAllowed values:
All,MinorExample:
releaseType: All - stringsettings.applications.update.notification.retryMinTime
The minimum time between webhook retry attempts when the webhook request fails.
It is specified as a string containing the time unit in hours, minutes, or seconds: 30s, 1m, 1h, 2h30m.
The retry mechanism uses exponential backoff: each subsequent retry attempt waits twice as long as the previous one. For example, if
retryMinTimeis set to2s, the retry delays will be: 2s, 4s, 8s, 16s, 32s.Default value is 2 seconds if not specified.
Pattern:
^([0-9]+h([0-9]+m)?|[0-9]+m|[0-9]+s)$Example:
retryMinTime: 2s - booleansettings.applications.update.notification.tlsSkipVerify
Skip TLS certificate verification while webhook request.
Default:
false - stringsettings.applications.update.notification.webhook
URL for an external webhook handler.
The POST request is sent to the webhook URL after a new minor version of an application appears on its release channel, before it is applied to the cluster.
Warning. If you specify an invalid webhook address, application updates will be blocked.
Use the
minimalNotificationTimeparameter if necessary to set the minimum time that must pass before updating from the moment a new minor version appears on the release channel.Pattern:
^https?://[^\s/$.?#].[^\s]*$Example:
webhook: https://webhook.site/#!/bc8f71ac-c182-4181-9159-6ba6950afffa
- array of objectssettings.applications.update.windows
List of update windows during the day.
- array of stringssettings.applications.update.windows.days
The days of the week on which the update window is applied.
Example:
days: - Mon - Wed- stringElement of the array
Day of the week.
Allowed values:
Mon,Tue,Wed,Thu,Fri,Sat,SunExample:
Mon
- stringsettings.applications.update.windows.from
Required value
Start time of the update window (UTC timezone).
Should be less than the end time of the update window.
Pattern:
^(?:\d|[01]\d|2[0-3]):[0-5]\d$Example:
from: '13:00' - stringsettings.applications.update.windows.to
Required value
End time of the update window (UTC timezone).
Should be more than the start time of the update window.
Pattern:
^(?:\d|[01]\d|2[0-3]):[0-5]\d$Example:
to: '18:30'
- stringsettings.defaultClusterStorageClass
The name of the StorageClass that DP will define as the default StorageClass used in the cluster.
DP prohibits manually adding or modifying the default annotation (
storageclass.kubernetes.io/is-default-class='true') for StorageClass. Use the parameter to define or change the StorageClass that is used as the default in the cluster.If the parameter is omitted, the default StorageClass is either:
- A StorageClass in the cluster that has the default annotation (
storageclass.kubernetes.io/is-default-class='true'); - The first (alphabetically) StorageClass created by the cloud provider module (if any cloud provider module is used).
Use this parameter to change the default StorageClass in the cluster, as manually adding the default annotation to a StorageClass is not allowed.
Default:
- A StorageClass in the cluster that has the default annotation (
- booleansettings.highAvailability
A global switch to enable the high availability mode for modules that support it.
If not defined, the value is determined automatically as
truefor clusters with more than one master node. Otherwise, it is determined asfalse.Examples:
highAvailability: truehighAvailability: false - objectsettings.modules
Common parameters of Deckhouse modules.
- objectsettings.modules.gatewayAPI
Common parameters for Gateway API usage by DP modules.
- booleansettings.modules.gatewayAPI.enabled
Enables the use of Gateway API resources (Gateway, HTTPRoute, etc.) by the DP modules that support it.
Unlike ingressClass, there is no built-in default Gateway, so Gateway API is only actually used by a module if this flag is enabled and a Gateway can be resolved for it — either from this parameter’s gateway field, a module-specific override, or a Gateway automatically discovered in the cluster.
Modules that support Gateway API can override this setting with their own
gatewayAPI.enabledparameter. - objectsettings.modules.gatewayAPI.gateway
Reference to the Gateway object (from the Gateway API) used by DP modules when creating Gateway API resources.
If not specified, modules use the Gateway automatically discovered in the cluster (if any).
- stringsettings.modules.gatewayAPI.gateway.name
Required value
Name of the Gateway object.
- stringsettings.modules.gatewayAPI.gateway.namespace
Required value
Namespace of the Gateway object.
- objectsettings.modules.gatewayAPIGatewayDeprecated
Deprecated. Use settings.modules.gatewayAPI.gateway instead.
Reference to the Gateway object (from the Gateway API) used by DP modules when creating Gateway API resources.
If not specified, modules use the Gateway automatically discovered in the cluster (if any).
- stringsettings.modules.gatewayAPIGateway.name
Required value
Name of the Gateway object.
- stringsettings.modules.gatewayAPIGateway.namespace
Required value
Namespace of the Gateway object.
- objectsettings.modules.https
HTTPS access implementation method used by the Deckhouse ecosystem modules.
Examples:
https: certManager: clusterIssuerName: letsencrypt mode: CertManagerhttps: mode: Disabledhttps: mode: OnlyInURIhttps: mode: CustomCertificate customCertificate: secretName: plainstring- objectsettings.modules.https.certManager
- stringsettings.modules.https.certManager.clusterIssuerName
ClusterIssuer name used by modules to obtain TLS certificates.
The
cert-managermodule offers the following ClusterIssuer options:letsencryptletsencrypt-stagingselfsignedclouddnscloudflaredigitaloceanroute53
You can use your own ClusterIssuer if necessary.
Default:
letsencrypt
- objectsettings.modules.https.customCertificate
- stringsettings.modules.https.customCertificate.secretName
Name of the Secret in the
d8-systemnamespace containing a TLS certificate for modules.This Secret must be in the
kubernetes.io/tlsformat.Default:
false
- stringsettings.modules.https.mode
HTTPS usage mode:
CertManager: Modules use HTTPS and obtain certificates automatically using the ClusterIssuer defined in thecertManager.clusterIssuerNameparameter.CustomCertificate: Modules use HTTPS with the certificate from thed8-systemnamespace.Disabled: Modules use HTTP only (some modules, such asuser-authn, may not work).OnlyInURI: Modules use HTTP in the expectation that there is an external upstream HTTPS load balancer, which terminates HTTPS. This load balancer should be capable of redirecting requests from HTTP to HTTPS.
Default:
CertManagerAllowed values:
Disabled,CertManager,CustomCertificate,OnlyInURI
- objectsettings.modules.ingress
Common parameters for Ingress usage by DP modules.
- booleansettings.modules.ingress.enabled
Enables the creation of Ingress resources by the DP modules that support it.
Modules that support Ingress can override this setting with their own
ingress.enabledparameter.Default:
true - stringsettings.modules.ingress.ingressClass
Default IngressClass name used by DP modules when creating Ingress resources.
Some modules support their own
ingressClassparameter, which lets you use a different IngressClass instead of the default one.Default:
nginx
- stringsettings.modules.ingressClassDeprecated
Deprecated. Use settings.modules.ingress.ingressClass instead.
Default IngressClass name used by DP modules when creating Ingress resources.
Some modules support their own
ingressClassparameter, which lets you use a different IngressClass instead of the default one.Default:
nginxPattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Example:
ingressClass: nginx - objectsettings.modules.placement
Parameters regulating the layout of Deckhouse module components.
- array of stringssettings.modules.placement.customTolerationKeys
A list of custom toleration keys; use them to allow the deployment of some critical add-ons (such as cni and csi) on dedicated nodes.
Example:
customTolerationKeys: - dedicated.example.com - node-dedicated.example.com/master
- stringsettings.modules.publicDomainTemplate
A DNS name template with the
%skey used as a dynamic part of the string.Deckhouse modules use this template when creating Ingress resources.
For example, given the template
%s.kube.company.my, theprometheusmodule will create an Ingress resource at the addressgrafana.kube.company.myto provide access to Grafana.Pay attention to the following:
- If this parameter is not specified, Ingress resources will not be created.
- The domain specified in the template must not match or be a subdomain of the domain specified in the
network.clusterDomainparameter of thecontrol-plane-managermodule. It is not recommended to change the cluster domain unless absolutely necessary. - For the template to function correctly, you must first configure DNS services both in the networks where the cluster nodes will be located and in the networks from which clients will access the platform’s service web interfaces.
- If the template matches the domain of the node network, use only A records to assign addresses of the nodes’ Frontend interfaces to the platform’s service web interfaces.
For example, if the nodes are registered under the
company.myzone and the template is%s.company.my.
Pattern:
^(%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])?)*$Examples:
publicDomainTemplate: "%s.kube.company.my"publicDomainTemplate: kube-%s.company.my - objectsettings.modules.resourcesRequests
The amount of resources (CPU and memory) allocated to some components.
More info in the Kubernetes documentation.
- objectsettings.modules.resourcesRequests.controlPlaneDeprecated
Deprecated. Use
control-plane-managermoduleconfig parameter.spec.settings.resourcesRequestsinstead.Amount of resources (CPU and memory) allocated to control-plane components on each master node.
These settings do not apply if the cluster control plane is managed by a cloud provider (for example, Google Kubernetes Engine or Azure Kubernetes Service).
Example:
controlPlane: cpu: 1000m memory: 500M- string or numbersettings.modules.resourcesRequests.controlPlane.cpuDeprecated
Deprecated. Use
controlPlaneManager.spec.settings.resourcesRequests.cpuinstead.The combined CPU requests for control-plane components on each master node.
Pattern:
^[0-9]+m?$ - stringsettings.modules.resourcesRequests.controlPlane.memoryDeprecated
Deprecated. Use
controlPlaneManager.spec.settings.resourcesRequests.memoryinstead.The combined memory requests for control-plane components on each master node.
Pattern:
^[0-9]+(\.[0-9]+)?(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)?$
- stringsettings.modules.storageClass
The StorageClass to use with all Deckhouse Platform components (Prometheus, Grafana, OpenVPN, etc.) unless it is overridden in the module configuration.
If the value is not specified, the default StorageClass set in the cluster is used.
Important notes:
- If the module’s configuration defines its own
storageClassparameter, the module’s value takes precedence and the globalmodules.storageClassis not used. - If a PersistentVolumeClaim (PVC) for a module already exists, changing this parameter does not affect the existing PVC or require disk recreation. The module uses the existing PVC and its StorageClass. See the prometheus module example for more details on how this parameter is applied.
- This parameter is applied during module activation when creating new PVCs.
- Use this parameter only in exceptional circumstances.
Default:
- If the module’s configuration defines its own
- stringsettings.prefix
A prefix of the objects to be created in the cloud.
Is used, for example, to distinguish objects created for different clusters, to configure routing, etc.
This is the new home for the prefix that was previously set in
ClusterConfiguration.cloud.prefix. If not set, the value fromClusterConfiguration.cloud.prefixis used.The prefix is used to name cloud objects such as disks (e.g.
<prefix>-kubernetes-data-0). Cloud object names are limited to 63 characters, so the prefix is capped at 45 characters to leave room for the generated suffix. Depending on the provider and the number of master nodes, the effective limit may be lower; this is additionally enforced by a bootstrap preflight check.Warning. This value names existing cloud infrastructure (security groups, route tables, resource groups, instances, etc.). It must match the prefix the cluster was bootstrapped with — setting a different value will break cloud integration. It is not intended to be changed in a running cluster.
Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$Maximum length:
45Example:
prefix: kube - stringsettings.storageClassDeprecated
Deprecated. Use settings.modules.storageClass instead.
The StorageClass to use with all Deckhouse Platform components (Prometheus, Grafana, OpenVPN, etc.).
- If the value is not specified, the default StorageClass set in the cluster is used.
- Use this parameter only in exceptional circumstances.
- This parameter is applied during module activation.
Default: