Releasenotes
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project will adhere to Semantic Versioning.
We use towncrier for the generation of our release notes file.
Information about unreleased changes can be found here.
v9.0.14 (2025-09-05)
Bugfixes
A bug in the migration script resulting in infinite recursion has been fixed (!2093)
k8s-login run in root CA rotation phase 1 works again with a Vault token only having the
yaook/orchestrator
policy. (regression of v9.0.11)Note
Action needed
To activate the fix the Vault orchestrator policy needs to be updated.
VAULT_TOKEN=$vault_root_token ./managed-k8s/tools/vault/init.sh
_ (!2093)
Changes in the Documentation
Changelogs of previous releases have been dropped. These are still accessible when switching to the respective version. From now on, changelogs for each version will be maintained separately and not continously. (!2093)
Misc
v9.0.13 (2025-08-19)
Changed functionality
The Thanos image repository has been set to
bitnamilegacy/thanos
due to recent changes by the Bitnami offering. (!1990)
v9.0.12 (2025-08-13)
Changed functionality
The project has been renamed from YAOOK/K8s to TAROOK. The repository location has been updated to reflect this change. (!2001)
Other Tasks
v9.0.11 (2025-07-16)
Bugfixes
The CA rotation procedure has been fixed once again including force-renewal of the certificates and kubeconfig on Kubernetes nodes and k8s-login for the orchestrator’s kubeconfig. (!1935)
v9.0.10 (2025-05-07)
Changed functionality
We are now using packages from NixOS stable. One reason for that is that we’re using boto3 to manage the S3 bucket for yk8s.k8s-service-layer.etcd-backup, but the latest versions of boto3 are incompatible to OpenStack Swift. (!1848)
v9.0.9 (2025-05-05)
Bugfixes
Fixed application of yk8s.k8s-service-layer.prometheus.remote_writes.*.basic_auth_secret_name when unset. (regression of v9.0.6) (!1839)
Fixed application of yk8s.miscellaneous.openstack_cinder_volume_type when unset. (regression of v9.0.6) (!1839)
v9.0.8 (2025-04-15)
Bugfixes
A minor bug in the monitoring playbook got fixed that caused it to fail if no CRD update is needed. (!1781)
v9.0.7 (2025-03-27)
Bugfixes
A bug has been fixed which accidentally applied the Prometheus resource requests and limits yk8s.k8s-service-layer.prometheus.prometheus_resources also to the operator yk8s.k8s-service-layer.prometheus.operator_resources. (!1771)
v9.0.6 (2025-03-27)
Attention
This release introduced two minor regressions
The connect-k8s-to-openstack
Ansible role fails if yk8s.miscellaneous.openstack_cinder_volume_type is unset.
Likewise, the monitoring_v2
Ansible role fails if yk8s.k8s-service-layer.prometheus.remote_writes.*.basic_auth_secret_name is unset.
These regressions are fixed with release v9.0.9.
Bugfixes
The default value of option yk8s.k8s-service-layer.prometheus.common_labels has been set to an empty set again such that Prometheus collects all ServiceMonitors by default. (!1768)
Changes in the Documentation
The option yk8s.k8s-service-layer.prometheus.remote_writes.*.basic_auth_secret_name has been added to documentation. (!1768)
v9.0.5 (2025-03-25)
Bugfixes
Fix IP address autodetection in Calico when used with VRRP on the hosts
If keepalived was installed on a host, Calico would sometimes incorrectly pick the VRRP address as node address. While generally harmless, this could cause calico-node to break during/after VRRP failovers because it would then see the VRRP address on a different node all of a sudden, leading to a node IP address conflict. (!1753)
v9.0.4 (2025-03-25)
Bugfixes
Due to a vulnerability in the ingress-nginx admission controller, ingress-nginx has been updated. (!1761)
v9.0.3 (2025-03-07)
Bugfixes
The bare metal simulation guide has been fixed. (regression of release v9.0.0) (!1728)
v9.0.2 (2025-03-04)
Bugfixes
The type of the
yk8s.rook.nodes.devices
config option was fixed. (regression of release v9.0.0) (!1725)
v9.0.1 (2025-02-19)
Bugfixes
A bug has been fixed that made the inventory updater erroneously output
error: Neither IPv4 nor IPv6 are enabled.
to users with a broken locale setup and swallowed any error output related to that. (!1677)An envrc function has been added to address common locale issues on non-NixOS systems. (!1679)
A bug has been fixed that caused k8s-supplements to fail if yk8s.miscellaneous.openstack_cinder_volume_type was not set. (!1688)
pre-commit
has been added back to the default group. (!1693)The default value of yk8s.k8s-service-layer.prometheus.scheduling_key for thanos_v2 has been fixed. (!1693)
A bug regarding the renaming of
pod_limit
topod_limit_worker
has been fixed. (!1693)
Changes in the Documentation
Instructions on how to Install system requirements. have been refined. We additionally explain how to install on Ubuntu 24.04 from Ubuntu repositories now. (!1689)
Other Tasks
v9.0.0 (2025-02-14)
Breaking changes
The configuration has been reworked and is now based on Nix, which makes Nix a hard dependency.
All configuration options are documented at Configuration Options.
The cluster repository layout has changed:
your_cluster_repo ├── config/ # All user configuration now resides in this directory │ ├── default.nix # Nix-based cluster configuration │ └── hosts # Manual Ansible hosts file for bare-metal, referenced in default.nix ├── inventory/yaook-k8s/ # Ansible inventory is now completely generated and MAY be excluded from version control │ ├── group-vars/ # Variables passed to Ansible │ └── hosts # Ansible hosts file, generated from config even for bare-metal ├── state/ # Auto-generated files that need to be preserved. MUST be checked into version control │ ├── wireguard/ │ │ └── ipam.toml # WireGuard IP address management │ ├── terraform/ # Terraform specific state files ┊ ┊
Attention
Action required
Ensure you’ve installed and configured Nix according to Install System Requirements
Attention
Action required
In order to migrate to the new cluster repository layout, run
$ ./managed-k8s/actions/migrate-cluster-repo.sh
The first run may fail, because manual adjustments to the config are required. These cases require manual action:
Jinja templates in values need to be replaced with the equivalent Nix expressions
Options that no longer exist need to be removed
Custom config options you may have added must be moved to the
custom
section
The migration script will point out these cases.
_ (!1265)
The following Terraform resources are deprecated and have been updated:
openstack_compute_floatingip_associate_v2
replaced byopenstack_networking_floatingip_associate_v2
Attention
Action required
For the replacement to be perfomed correctly (therefore non-disruptive) you must run the migration script before any apply-terraform action.
./managed-k8s/actions/migrate-cluster-repo.sh
The Vault S3 backup configuration file moved to Vault.
Attention
You must update the Vault policies.
Note
A root token must be sourced.
$ bash managed-k8s/tools/vault/init.sh
If yk8s.k8s-service-layer.vault.enabled is true and yk8s.k8s-service-layer.vault.enable_backups is true, you addditionally have to import the S3 backup config to Vault.
Inserting the Vault S3 backup config into Vault can be automated by storing the configuration at
config/vault_backup_s3_config.yaml
. Please check the documentation on HashiCorp Vault how to create a configuration.Note
A root token must be sourced.
$ bash managed-k8s/tools/vault/update.sh $ bash managed-k8s/actions/apply-k8s-supplements.sh install-vault.yaml
_ (!1616)
The
.gitignore
-template has been changed and starting with this release, it is highly recommended thatinventory/
is ignored and not checked into version control.Attention
Action required
You must run the migration script to ensure your
.gitignore
contains the necessary entries andinventory/
is removed from version control:./managed-k8s/actions/migrate-cluster-repo.sh
_ (!1653)
New Features
Automatic evaluation of the devShell can now be disabled by setting
YAOOK_K8S_DIRENV_MANUAL=true
in.config/yaook-k8s/env
or.envrc.local
(!1323)The default version of rook has been bumped to v1.15.4. (!1453)
Add multicluster support for grafana dashoards (!1483)
Add support for basic auth in Prometheus remote write (!1484)
The LCM continuously ensures that all Kubernetes control plane and worker nodes are labeled with
node-role.kubernetes.io/control-plane=
xornode-role.kubernetes.io/worker=
respectively.This is part of the concept of LCM managed labels which is introduced at the same time. Refer to the documentation for details.
Amongst other things, this allows monitoring and alerting solutions to reliably target nodes by their role. For instance, the monitoring stack that can optionally be installed with YAOOK/k8s, exposes the
kube_node_role
metric._ (!1587)
Kubernetes node labels and taints are now applied on LCM rollout instead on node join. This allows additions and changes of node labels and taints through the config after the respective node joined the cluster. Removal is still unsupported.
related documentation: Scheduling (Taints and Labels) (!1597)
A script has been added which can be used to create new CSRs for clusters using intermediate CAs. A procedure description has been added to the documentation: Importing new Intermediates. (!1599)
Add support for specifying the maximum number of pods allowed to be scheduled on master nodes (maxPods). The former configuration option
pod_limit
only allowed modifying maxPods for worker nodes. We now support setting maxPods for both master nodes and worker nodes introducing two different configuration options yk8s.kubernetes.kubelet.pod_limit_master and yk8s.kubernetes.kubelet.pod_limit_worker (!1606)A new option has been added which allows to configure a specific volume type for the
csi-sc-cinderplugin
StorageClass: yk8s.miscellaneous.openstack_cinder_volume_type. (!1617)
Changed functionality
The Prometheus integration with Vault has been updated to use a long-lived periodic token.
To activate this change, the Vault policy must be updated.
Follow these steps:
Retrieve the root token from the Vault instance running within Kubernetes.
Write the root token to the file
etc/vault_root_token
in the cluster repository.Execute the following command to complete the process:
./managed-k8s/actions/apply-k8s-supplements.sh install-vault.yaml
_ (!1456)
Most options from the terraform configuration section have moved into one of two new sections, either
openstack
for OpenStack specific options orinfra
for options used by all clusters. Have a look at the deprecation warnings during Nix evaluation. (!1466)vault.cluster_name
now defaults toinfra.cluster_name
(!1466)Cloud&Heat specific default have been removed from the Terraform module. (!1504)
Depending on the IP version enabled, node address autodetection is explicitly set to
{}
. (!1529)Additional testing in the CI pipeline has been added that verifies that Kubernetes certificate signing is functional. (!1543)
The default blackbox-exporter version has been bumped to v9.1.0. (!1575)
The default version of the Prometheus stack has been bumped to v66.2.2. (!1575)
The default version of Prometheus adapter has been bumped to v4.11.0. (!1575)
The default Thanos version has been bumped to v15.8.2. (!1575)
The Kubernetes upgrade procedure has been adjusted such that the system update happens after switching to the next Kubernetes repository. (!1586)
The Prometheus node exporter metrics now additionally contain a
role
label which reflects the Kubernetes role of the node. Based upon if a node is labeled withnode-role.kubernetes.io/worker
ornode-role.kubernetes.io/control-plane
, the value is eitherworker
orcontrol-plane
. (!1596)The Nix binary cache has been moved to a new location. Please remove all occurences of “tarook.cachix.org” and, if desired, configure
extra-substituters = https://nix-cache.tarook.cloud extra-trusted-public-keys = nix-cache.tarook.cloud-2:2X2yPTrpwmakhSgS83FVB2fKkG6IzfOJ1AGIIcvNyM0=
in
/etc/nix/nix.conf
. Then dosystemctl restart nix-daemon.service
for the change to take effect immediately. (!1600)The default Kubernetes version and the internally used ones have been bumped to their latest patch releases. (!1607)
Bugfixes
Marked the following immutable config setting as such:
k8s-service-layer.prometheus.thanos_storegateway_size
k8s-service-layer.prometheus.thanos_storegateway_size
k8s-service-layer.prometheus.thanos_compactor_size
k8s-service-layer.rook.mon_volume_storage_class
k8s-service-layer.rook.mon_volume_size
k8s-service-layer.rook.osd_volume_size
k8s-service-layer.rook.osd_storage_class
A manual workaround to change these settings nonetheless is outlined in the respective documentation. (!1498)
Fixed Ansible to never assume any host in the
gateways
host group. (!1503)The proxy-support role has been fixed. A missing template has been re-added. (!1528)
The type of
k8s-service-layer.prometheus.remote_writes
has been fixed. (!1541)The regex for the option type that handles memory and volume sizes has been fixed to allow fractional values. (!1544)
Thanos compactor is now restarted on failure. Previously it just stopped operation but never exited (see issue #724). (!1592)
The YAOOK/K8s Terraform module does not fail anymore if there are multiple Openstack images with the same name but simply selects the most recent one. (!1598)
A bug has been fixed which caused Kubernetes upgrades to fail if yk8s.kubernetes.controller_manager.enable_signing_requests is enabled. (!1608, !1675)
A bug has been fixed that made the
nix-fmt
pre-commit check always fail. (!1614)
Changes in the Documentation
direnv has been marked as requirement (!1512)
A
jq
command was fixed in the Openstack credentials rotation guide. (!1555)Unused variables were removed, and Vault documentation has been updated to eliminate outdated path references. (!1557)
The exact format of the
wg_conf_name
environment variable is mentioned in the documentation. (!1579)A short description about
tools/vault/rotate-root-ca-intermediate.sh
andtools/vault/rotate-root-ca-root.sh
has been added. (!1599)A short description about
tools/vault/update.sh
has been added. (!1599)A user facing tutorial has been created, which describes how to upgrade to a new YAOOK/K8s release. (!1602, !1660)
The Terraform developer reference documentation has been dropped in favor of yk8s.terraform. (!1611)
Some typos have been fixed (!1615)
Minor fixes in the docs. (!1642)
Deprecations and Removals
Other Tasks
!1280, !1493, !1502, !1505, !1508, !1509, !1514, !1515, !1516, !1517, !1518, !1519, !1520, !1526, !1527, !1537, !1538, !1554, !1561, !1571, !1572, !1573, !1574, !1577, !1588, !1589, !1591, !1618, !1619, !1621, !1628, !1633, !1634, !1651, !1666, !1668, !1670, !1678
Ubuntu 24.04 is now the default image for Kubernetes nodes and tested in the CI. (!1610)