Changelog since v1.14.0
Urgent and BREAKING Upgrade Notes
(No, really, you MUST read this before you upgrade)
- Support for Kubernetes 1.34 has been removed. KubeOne v1.15 supports Kubernetes versions 1.35, 1.36, and 1.37. Before upgrading KubeOne, ensure your clusters are running Kubernetes v1.35 or newer. (#4249, @kron4eg)
kubeone applyandkubeone localno longer create the PKI backup<cluster-name>.tar.gzby default. The archive contains sensitive credentials (e.g. the cluster CA key) and is now only created when--backup <path>is set explicitly. (#4304, @steled)- unattended-upgrades addon: the Flatcar Linux Update Operator is now deployed only if the cluster has at least one Flatcar Linux node (control plane, static workers, dynamic workers or MachineDeployments in the cluster). On existing clusters without Flatcar nodes, the next
kubeone applyprunes thereboot-coordinatornamespace and its workloads, but the cluster-scopedflatcar-linux-update-agentandflatcar-linux-update-operatorClusterRoles and ClusterRoleBindings are not removed automatically and can be deleted manually. (#4264, @steled) - KubeVirt: the
csi-kubevirtaddon now deploys the KubeVirt CSI Driver operator. The nextkubeone applyon an existing KubeVirt cluster replaces thekube-systemnode plugin with the operator's DaemonSet. StorageClasses and VolumeSnapshotClasses are now configured viacloudProvider.kubevirt.storageClassesandcloudProvider.kubevirt.volumeSnapshotClasses. (#4307, @kron4eg) - Addons are now applied with server-side apply instead of
kubectl apply. KubeOne takes over ownership of fields previously set by client-side apply, and prunes objects of the applied kinds that were removed from an addon. Changes made to addon-managed fields outside of KubeOne will be overwritten on the next apply. (#4272, @kron4eg)
Changes by Kind
API Change
- Add
clusterNetwork.clusterDNSto override the DNS servers that kubelets configure for pods on all nodes. It can't be combined withfeatures.nodeLocalDNS.deploy. (#4251, @kron4eg) - Add structured AuthenticationConfiguration support via
features.authenticationConfiguration(kube-apiserver--authentication-config). It is mutually exclusive withfeatures.openidConnect. (#4267, @kron4eg) - Add
journald.systemMaxUseto configure journald'sSystemMaxUseon all nodes (default5G). (#4278, @rajaSahil)
Feature
- Add support for Kubernetes v1.37 (#4249, @kron4eg)
- Managed control plane: add the AWS control-plane provider (#4204, @kron4eg)
- Managed control plane: add the Azure control-plane provider (#4185, @kron4eg)
- Managed control plane: add support for DigitalOcean (#4262, @rajaSahil)
- Managed control plane: add support for GCP (#4269, @rajaSahil)
- Add a
--destroy-control-planeflag tokubeone resetto destroy control plane machines at the cloud provider instead of resetting them (#4210, @kron4eg) - Add a
--destroy-control-plane-load-balancerflag tokubeone reset(#4215, @kron4eg) - Add
kubeone addons applycommand to install, update and remove user addons and helm releases without running a fullkubeone apply. The--nameflag limits it to specific addons or helm releases. (#4263, @steled) kubeone addons listshows the source (embedded, overridden, custom) of each addon (#4305, @steled)- Add
--providerflag tokubeone config images listandkubeone mirror-imagesto include CCM/CSI images only for the given cloud provider(s) (#4112, @kron4eg) - Added support for an
addonParamssection in the credentials file, allowing addon secret parameters (e.g. the built-inbackups-resticaddon'sresticPassword) to be provided viacredentials.yamlinstead of the KubeOneCluster manifest (#4206, @steled) - Parametrize schedule and flags in the
backups-resticaddon (#4207, @kron4eg) - Added support for deploying OpenStack clusters with dual-stack networking (#4259, @4ch3los)
- Static worker upgrade retries now retry only the failed worker instead of repeating upgrades on workers that already succeeded (#4192, @taaahaaa)
- The Hubble certgen job of the
cni-ciliumaddon now fails when the Cilium CA (kube-system/cilium-ca) would expire before the newly issued certificates, instead of succeeding until the CA has expired. Rotate the CA when thehubble-generate-certsjob fails. (#4232, @steled) - Async dashboard loading (#4165, @kron4eg)
Bug or Regression
- Fix worker nodes provisioned by operating-system-manager getting a non-existent DNS server (
10.10.10.10) when NodeLocalDNS is disabled, including clusters using Cilium Local Redirect Policy. With Cilium Local Redirect Policy, kubelets now use the node-local DNS address with CoreDNS as fallback. The CoreDNS IP is now computed from the IPv6 service subnet on IPv6-primary clusters. (#4251, @kron4eg) - Fix the Cilium Local Redirect Policy (#4189, @kron4eg)
- Add lease permissions for Cilium and enable
l2announcementsin helm values (#4257, @kron4eg) - Fix Cilium
tlsinterception-secretsRoles/RoleBindings being deployed tokube-systeminstead ofcilium-secrets(#4276, @kron4eg) - Fixed a bug where upgrading a vSphere cluster from an older KubeOne version left behind a stale
validation.csi.vsphere.vmware.comValidatingWebhookConfiguration, blocking StorageClass changes and all new dynamic volume provisioning/PVC deletion (#4195, @steled) - Migrate stale VolumeGroupSnapshot CRDs (#4299, @kron4eg)
- Fix provisioning with cloud provider
nonefailing on CSI webhook certificate generation when no CSI addon is deployed (#4234, @mvanhorn) - Fix the
ccm-hetzneraddon PodDisruptionBudget selector so it matches the hcloud-cloud-controller-manager pods (#4280, @damienbenon) - Fix PodDisruptionBudget selectors that match no pods in addons (#4281, @rajaSahil)
- Fix KubeVirt CSI reconcile and add missing RBAC to the KubeVirt CCM. The KubeVirt StorageClass bus now defaults to
scsi. (#4309, @kron4eg) - Add subnet ID retrieval for OpenStack load balancer members (#4242, @kron4eg)
- Fix KubeOne retrying PodDisruptionBudget-blocked pod evictions without a delay during node drain (#4181, @taaahaaa)
- Errors updating the kubeadm-config, kubelet-config or kube-proxy ConfigMaps are no longer ignored (#4308, @sarankumar1325)
- Fix
overridePathhandling inContainerRuntimeConfig.MachineControllerFlags(#4174, @kron4eg) - Update Helm dry run strategy on release upgrade (#4168, @kron4eg)
- Fix OCI registry auth for helm charts and digest-pinned image retagging (#4221, @mohamed-rafraf)
- Fixed OCI Helm chart authentication so
HelmRelease.Authcredentials are correctly passed to private OCI registries. - Fixed
mirror-imagesfailing to retag digest-pinned images by preserving the source digest instead of incorrectly using it as a tag.
- Fixed OCI Helm chart authentication so
- Update flatcar-linux-update-operator to v0.10.0 to fix the update agent crashing on Flatcar >= 4757 due to quoted
/etc/os-releasevalues (#4229, @steled)
Documentation
Chore
- Update system addons to support Kubernetes 1.37 (#4260, @kron4eg)
- Update Hetzner CCM to v1.39.2
- Update Hetzner CSI Driver to v2.24.1
- Update OpenStack CSI driver to v1.37.1
- Update OpenStack Cloud Controller Manager to v1.37.1
- Update AWS EBS CSI driver to v2.67.0
- Update external CSI snapshot controller to v8.7.0
- Update AzureFile CSI driver to v1.35.10
- Update AzureDisk CSI driver to v1.36.1
- Update Cilium to v1.20.2
- Update vSphere CSI driver to v3.8.0
- Update vSphere CPI to v1.36.0
- Update Nutanix CSI Storage to v3.9.0
- Update Nutanix Cloud Provider to v0.6.3
- Update GCP Cloud Controller Manager to v37.0.1
- Update GCP Compute Persistent Disk CSI driver to v1.27.1
- Update DigitalOcean CSI driver to v4.19.0
- Update DigitalOcean CCM to v0.1.71
- Update Canal to v3.33.0
- Update DNSNodeCache to v1.27.1
- Update metrics-server to v0.9.0
- Update Cilium to v1.19.7 (#4209, @archups)
- Update Cilium to v1.19.6 (#4163, @kron4eg)
- Update machine-controller to v1.66.1 (#4157, @archups)
- Update OSM to v1.11.1 and Go to v1.26.5 (#4180, @archups)
- Upgrade Go to 1.27 (#4208, @kron4eg)
- Upgrade golang.org/x/crypto to v0.56.0 (#4217, @kron4eg)
- Update golang.org/x/net to v0.60.0 (#4252, @kron4eg)
- Update oras-go dependency to v2.6.2 (#4233, @kron4eg)
- Update MachineController to v1.67.0, update Operating System Manager to v1.12.0 (#4312, @kron4eg)