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.
Pro Cluster
Abschnitt betitelt „Pro Cluster“| Einstellung | Bereich oder Werte | Hinweise |
|---|---|---|
kubernetes.kubelet.maxPods | 10–500, Default 110 | muss zur Node-CIDR-Maske passen |
kubernetes.kubelet.podPidsLimit | Ganzzahl | |
kubernetes.kubelet.registryPullQPS / registryBurst | Ganzzahl | |
kubernetes.kubelet.imageGCHighThresholdPercent / imageGCLowThresholdPercent | 0–100 | |
kubernetes.kubelet.serializeImagePulls | true / false | |
kubernetes.kubelet.failSwapOn | true / false | |
kubernetes.kubeControllerManager.nodeCIDRMaskSize | 16–28 | nur beim Erstellen |
kubernetes.verticalPodAutoscaler.enabled | true / false | Default true |
systemComponents.nodeLocalDNS.enabled | true / false | Default false |
systemComponents.coreDNS.autoscaling.mode | horizontal, cluster-proportional | |
maintenance.timeWindow.begin / end | HHMMSS+ZZZZ | mindestens 30 Minuten |
maintenance.autoUpdate.kubernetesVersion / machineImageVersion | true / false | Default true |
maintenance.confineSpecUpdateRollout | true / false | Spec-Änderungen nur im Fenster anwenden |
hibernation.schedules[] | Cron start, end, location | Zeitzonen-Namen |
Pro Pool
Abschnitt betitelt „Pro Pool“| Einstellung | Bereich oder Werte | Hinweise |
|---|---|---|
maxSurge / maxUnavailable | Anzahl oder Prozent | Pooled-Pools behalten feste Werte |
labels, taints, annotations | Key/Value; Taints mit Effect | reservierte Key-Präfixe werden abgelehnt |
kubernetes.kubelet.* | wie pro Cluster | überschreibt den Cluster-Wert für diesen Pool |
sysctls | Keys unter net., kernel., vm., fs. | |
machineControllerManager.machineDrainTimeout / machineHealthTimeout / machineCreationTimeout | Dauern | Defaults 2h, 10m, 10m |
providerConfig.placementGroupType | spread | maximum + maxSurge ≤ 10 |
providerConfig.publicIP.enableIPv4 / enableIPv6 | true / false | IPv6 auf einem privaten Node wird abgelehnt |
Egress, pro Cluster
Abschnitt betitelt „Egress, pro Cluster“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.
| Einstellung | Werte |
|---|---|
egress.mode | public, nat |
egress.nat.serverType | ein Typ, den dein Rechenzentrum verkauft |
egress.nat.image | debian, ubuntu |
egress.nat.sshAllowFrom[] | CIDRs; gilt in beiden Modi |
egress.nat.allowList.mode | enforce, audit |
egress.nat.allowList.cidrs[] / fqdns[] | Ziele |
egress.nat.logging.drops / flows / forwardTo | Booleans; host:port |
egress.nat.metricsAllowFrom[] | CIDRs |
Was der Plattform gehört
Abschnitt betitelt „Was der Plattform gehört“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.