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.