Zum Inhalt springen

Gardener-Einstellungen & Export

PaaSbox legt einen kuratierten Satz Gardener-Einstellungen offen – in Gardeners eigenen Feldnamen und in Gardeners Schema –, damit nichts, was du konfigurierst, PaaSbox-spezifisch ist. Du fügst pro Cluster oder pro Pool einen JSON- oder YAML-Block in der Konsole oder über die API ein; er wird gegen diese Liste validiert, in die Cluster-Definition gemerged, und die eigenen Felder der Plattform werden danach erneut durchgesetzt.

EinstellungBereich oder WerteHinweise
kubernetes.kubelet.maxPods10–500, Default 110muss zur Node-CIDR-Maske passen
kubernetes.kubelet.podPidsLimitGanzzahl
kubernetes.kubelet.registryPullQPS / registryBurstGanzzahl
kubernetes.kubelet.imageGCHighThresholdPercent / imageGCLowThresholdPercent0–100
kubernetes.kubelet.serializeImagePullstrue / false
kubernetes.kubelet.failSwapOntrue / false
kubernetes.kubeControllerManager.nodeCIDRMaskSize16–28nur beim Erstellen
kubernetes.verticalPodAutoscaler.enabledtrue / falseDefault true
systemComponents.nodeLocalDNS.enabledtrue / falseDefault false
systemComponents.coreDNS.autoscaling.modehorizontal, cluster-proportional
maintenance.timeWindow.begin / endHHMMSS+ZZZZmindestens 30 Minuten
maintenance.autoUpdate.kubernetesVersion / machineImageVersiontrue / falseDefault true
maintenance.confineSpecUpdateRollouttrue / falseSpec-Änderungen nur im Fenster anwenden
hibernation.schedules[]Cron start, end, locationZeitzonen-Namen
EinstellungBereich oder WerteHinweise
maxSurge / maxUnavailableAnzahl oder ProzentPooled-Pools behalten feste Werte
labels, taints, annotationsKey/Value; Taints mit Effectreservierte Key-Präfixe werden abgelehnt
kubernetes.kubelet.*wie pro Clusterüberschreibt den Cluster-Wert für diesen Pool
sysctlsKeys unter net., kernel., vm., fs.
machineControllerManager.machineDrainTimeout / machineHealthTimeout / machineCreationTimeoutDauernDefaults 2h, 10m, 10m
providerConfig.placementGroupTypespreadmaximum + maxSurge ≤ 10
providerConfig.publicIP.enableIPv4 / enableIPv6true / falseIPv6 auf einem privaten Node wird abgelehnt

Private Cluster werden über die Egress-Karte der Konsole oder die Egress-Einstellungen der API konfiguriert; die Werte bilden auf die Infrastruktur-Konfiguration des Providers ab. Was jede einzelne bewirkt, steht unter Private Cluster.

EinstellungWerte
egress.modepublic, nat
egress.nat.serverTypeein Typ, den dein Rechenzentrum verkauft
egress.nat.imagedebian, ubuntu
egress.nat.sshAllowFrom[]CIDRs; gilt in beiden Modi
egress.nat.allowList.modeenforce, audit
egress.nat.allowList.cidrs[] / fqdns[]Ziele
egress.nat.logging.drops / flows / forwardToBooleans; host:port
egress.nat.metricsAllowFrom[]CIDRs

Diese Felder setzt die Plattform aus deinen Entscheidungen im Composer und setzt sie nach jedem Merge erneut durch – ein Einstellungs-Block kann sie also nicht ändern: Cluster- und Pool-Namen, Maschinentyp und Image, Minimum und Maximum, Zonen, Pool-Priorität, die Einstellung für öffentliche Adressen eines Pools in einem privaten Cluster, der Ruhezustand, der Seed, das Credentials-Binding, der Zweck des Clusters, die Fehlertoleranz der Control Plane und der Egress-Modus. Ändere sie im Composer; die Konsole erklärt, warum eine Änderung abgelehnt wird, wenn sie es wird.

Nicht offengelegt: kubeAPIServer.* (deinen Identity Provider konfigurierst du über Eigener Identity Provider), seedName, purpose, Kubernetes-Versionen pro Pool, existingNetwork per ID und die Cloud-Controller-Flags. Die Begründung steht unter So ist es gebaut.

Export als Gardener-YAML auf der Cluster-Seite oder GET …/clusters/{name}/export über die API liefert genau das Shoot-Objekt, das die Plattform anwendet – mit:

  • entferntem Namespace und Seed;
  • dem Credentials-Binding durch einen Platzhalter ersetzt;
  • keinem Token, keinem Secret, keinem Schlüssel;
  • einer Notiz, die auflistet, was mitreist und was nicht.

Der Export lässt sich unverändert auf jede Gardener-Landschaft anwenden, auf der der Hetzner-Stack installiert ist – das Exit-Kit bootstrappt eine solche –, nachdem du den Platzhalter mit deinem eigenen Credentials-Binding gefüllt hast.