Skip to content

Gardener settings & export

PaaSbox exposes a curated set of Gardener settings, in Gardener’s own field names and schema, so that nothing you configure is PaaSbox-specific. You paste a JSON or YAML block per cluster or per pool in the console or the API; it is validated against this list, merged into the cluster definition, and the platform’s own fields are re-asserted afterwards.

SettingRange or valuesNotes
kubernetes.kubelet.maxPods10–500, default 110must fit the node CIDR mask
kubernetes.kubelet.podPidsLimitinteger
kubernetes.kubelet.registryPullQPS / registryBurstinteger
kubernetes.kubelet.imageGCHighThresholdPercent / imageGCLowThresholdPercent0–100
kubernetes.kubelet.serializeImagePullstrue / false
kubernetes.kubelet.failSwapOntrue / false
kubernetes.kubeControllerManager.nodeCIDRMaskSize16–28create-time only
kubernetes.verticalPodAutoscaler.enabledtrue / falsedefault true
systemComponents.nodeLocalDNS.enabledtrue / falsedefault false
systemComponents.coreDNS.autoscaling.modehorizontal, cluster-proportional
maintenance.timeWindow.begin / endHHMMSS+ZZZZat least 30 minutes
maintenance.autoUpdate.kubernetesVersion / machineImageVersiontrue / falsedefault true
maintenance.confineSpecUpdateRollouttrue / falseapply spec changes only in the window
hibernation.schedules[]cron start, end, locationtime zone names
SettingRange or valuesNotes
maxSurge / maxUnavailablecount or percentpooled pools keep fixed values
labels, taints, annotationskey/value; taints with effectreserved key prefixes rejected
kubernetes.kubelet.*as per clusteroverrides the cluster value for this pool
sysctlskeys under net., kernel., vm., fs.
machineControllerManager.machineDrainTimeout / machineHealthTimeout / machineCreationTimeoutdurationsdefaults 2h, 10m, 10m
providerConfig.placementGroupTypespreadmaximum + maxSurge ≤ 10
providerConfig.publicIP.enableIPv4 / enableIPv6true / falseIPv6 on a private node is rejected

Private clusters are configured through the console’s egress card or the API’s egress settings; the values map to the provider’s infrastructure configuration. See private clusters for what each one does.

SettingValues
egress.modepublic, nat
egress.nat.serverTypea type your datacentre sells
egress.nat.imagedebian, ubuntu
egress.nat.sshAllowFrom[]CIDRs; applies in both modes
egress.nat.allowList.modeenforce, audit
egress.nat.allowList.cidrs[] / fqdns[]destinations
egress.nat.logging.drops / flows / forwardTobooleans; host:port
egress.nat.metricsAllowFrom[]CIDRs

These fields are set by the platform from your choices in the composer and are re-asserted after every merge, so a settings block cannot change them: cluster and pool names, machine type and image, minimum and maximum, zones, pool priority, the public-address setting of a pool in a private cluster, the hibernation state, the seed, the credentials binding, the cluster’s purpose, the control plane’s failure tolerance, and the egress mode. Change them in the composer; the console explains why a change is refused when it is.

Not exposed: kubeAPIServer.* (your identity provider is configured through bring your own identity provider), seedName, purpose, per-pool Kubernetes versions, existingNetwork by id, and the cloud-controller flags. The reasoning is on how it is built.

Export as Gardener YAML on the cluster page, or GET …/clusters/{name}/export on the API, returns the exact Shoot object the platform applies, with:

  • the namespace and the seed removed;
  • the credentials binding replaced by a placeholder;
  • no token, no secret, no key;
  • a note listing what travels and what does not.

The export applies unchanged to any Gardener landscape that has the Hetzner stack installed — the exit kit bootstraps one — after you fill in the placeholder with your own credentials binding.