Last modified November 28, 2025
Customizing default apps
In a Giant Swarm platform, every workload cluster has a set of apps that are installed automatically at creation time, called default apps. Default apps are defined in the cluster app and the list includes important applications that are mandatory to make the cluster work correctly. Examples of these apps are CoreDNS or Cilium.
Normally it’s advisable to stick to the default values for the configuration of default apps. Sometimes, though, some level of customization is needed. This page explains how to customize the configuration of default apps.
Find out what configuration can be changed
Customizing the app’s configuration means providing overrides to the Helm chart’s default values for that app.
In order to find out what options you can customize for each app, you can refer to the app’s default values file in the GitHub repository.
For example, for the app providing CoreDNS you can refer to the file helm/coredns-app/values.yaml in the repository.
If you can’t find the default values file for the app you need to customize the configuration for, please reach out to your account engineer.
Prepare the configuration file
Let’s say for example you want to decrease the cache lifetime for CoreDNS. The relevant setting in the values file is:
configmap:
cache: 30
To change the default value of 30 seconds to 15 seconds, you need to prepare a file with the same structure, such as:
configmap:
cache: 15
For the sake of this example, let’s call the file coredns-config-override.yaml.
Create a ConfigMap
Once you have your configuration override file ready, you need to create a ConfigMap in the management cluster. The ConfigMap has to be created in the namespace of the organization that owns the workload cluster.
export NAMESPACE=org-<organization name>
kubectl --namespace $NAMESPACE \
create configmap coredns-override-default \
--from-file=values=coredns-config-override.yaml
After you have created the ConfigMap, you need to label it to associate the configuration with the app you want to override the configuration for. In our example, the label value is coredns.
kubectl --namespace $NAMESPACE \
label configmap coredns-override-default \
app.kubernetes.io/name=coredns
Confidential data
In case the configuration change involves confidential data, you might want to provide the setting as a secret rather than a ConfigMap. Example:
kubectl --namespace $NAMESPACE \
create secret generic coredns-override-default \
--from-file=values=coredns-config-override.yaml
You still need to label the secret with the app name:
kubectl --namespace $NAMESPACE \
label secret coredns-override-default \
app.kubernetes.io/name=coredns
Multiple configurations and priority
Please note that you can override multiple configuration fields in the same ConfigMap or Secret, and you can have multiple ConfigMaps and Secrets for the same app.
To specify a priority order in case of multiple ConfigMaps or Secrets, you can use the cluster-operator.giantswarm.io/app-config-priority annotation.
Please refer to the app configuration page for more details.
Need help, got feedback?
We listen to your Slack support channel. You can also reach us at support@giantswarm.io. And of course, we welcome your pull requests!