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 clusterDomain parameter. We do not recommend changing the clusterDomain value 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.
Parameters
Schema version: 2
- 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 three
%skeys used as the dynamic parts of the string.Whenever a DNS is generated:
- First key is replaced with the component name.
- Second key is replaced with the application instance name.
- Third 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.%s.kube.company.my, thewebcomponent of an application instance namedgrafanarunning in themonitoringnamespace will get an Ingress resource at the addressweb.grafana.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
clusterDomainparameter. Changing theclusterDomainvalue 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.%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)\.(%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.%s.company.my"publicDomainTemplate: "%s.%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.gatewayAPIGateway
Reference to the Gateway object (from the Gateway API) used by Deckhouse 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
- stringsettings.modules.ingressClass
Default IngressClass name used by Deckhouse 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
clusterDomainparameter. It is not recommended to change theclusterDomainvalue 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.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: