Releases: berops/claudie
v0.12.1
v0.12.1
What's Changed
- New feature introduced 'upgrade-lock' label. When set on nodes, it signals to Claudie to skip node drain on those nodes, blocking the workflow of pending changes until the label is removed from the nodes. #2062
# Before triggering an update
kubectl label node <node-name> claudie.io/upgrade-lock=true
# Apply updated InputManifest
kubectl apply -f manifest.yaml
# Claudie drains unlabeled nodes, skips labeled ones, and retries
# Verify replication/health on your workload
# Release the node when safe
kubectl label node <node-name> claudie.io/upgrade-lock-
-
For some of the newly added providers (Openstack), NAT hairpin has been introduced for some of the networking shortcomings as a workaround to make Claudie work correctly. #2066
-
Duplicate Taint definitions for Nodepools will now be removed. #2070
-
For autoscaled nodepools if a scaleup fails at least 3x Claudie will now consider that as a failure and will stop autoscaling instead of retrying indefinitely #2069
v0.12.0
v0.12.0
What's Changed
-
Changing credentials for providers will now be correctly propagated within the reconciliation loop #2056
-
Updated MongoDB to version 6.0 #2053
- After deploying, verify Mongo version is
6.0
kubectl exec -it <primary-mongo-pod> -n claudie -- mongosh \ -u <username> -p <password> --authenticationDatabase admin \ --eval "db.adminCommand({ buildInfo: 1 }).version"- Manually set the feature set to version 6.0
kubectl exec -it <primary-mongo-pod> -n claudie -- mongosh \ -u <username> -p <password> --authenticationDatabase admin \ --eval "db.adminCommand({ setFeatureCompatibilityVersion: '6.0' })"This command must perform writes to an internal system collection. If for any reason the command does not complete successfully, you can safely retry the command as the operation is idempotent.
- Verify the update was processed. The following command should return
6.0for the feature set.
kubectl exec -it <primary-mongo-pod> -n claudie -- mongosh \ -u <username> -p <password> --authenticationDatabase admin \ --eval "db.adminCommand({ getParameter: 1, featureCompatibilityVersion: 1 })" - After deploying, verify Mongo version is
Bug fixes
- Fixed deletion of zero sized nodepools that would result in an endless reconciliation loop #2049
v0.11.2
v0.11.2
What's Changed
-
Add custom SSH port support for dynamic and static nodepools by #2026
The requirement of the SSH port to be opened at
22has been dropped. It is now possible for external templates to define
their own SSH port to which Claudie will connect to. The same applies to static nodepools which have the option exposed in the InputManifest
static:
- name: control
sshPort: 2222 # Optional: SSH port for connecting to static nodes. Defaults to 22.
nodes:
- endpoint: "192.168.10.1"
secretRef:
name: static-node-key
namespace: <your-namespace>
-
Gracefully handling missing Cloudflare Load Balancing #2029
-
Dynamic nodes within a Kubernetes cluster will now be healthchecked by Claudie and if they're unhealthy for more than 12 mins Claudie will trigger an auto-repair mechanism
in which the node is replaced by first deleting it and subsequently joining a new node into the cluster. #2038
0.11.1
v0.11.0
v0.11.0
What's Changed
-
Updated longhorn to version v1.11.1 #2007
Before upgrading to this Claudie version from v0.10.2, detach all Longhorn volumes and follow the manual checks described here: https://longhorn.io/docs/1.11.1/deploy/upgrade/#manual-checks-before-upgrade -
More validation of the input manifest was moved into the webhook for the operator so that more immediate feedback is given when
kubectl applyis executed #2008 -
When a node is scheduled for deletion, its drain is now limited to a ~30 minute timeout, after which the node will be deleted #2011
-
For node deletion disk scheduling on the longhorn level will now be applied before the node is deleted #2012
v0.10.2
v0.10.2
What's Changed
-
Hetzner DNS will now be considered to be part of the hetzner cloud (
hcloud) provider within claudie #1993
If you're using hetzner for DNS you will also need to use thev0.9.19templates as from
this Claudie version onwards the previous templates will not work with the old hetzner dns solution. -
Claudie will now deploy longhorn with version 1.10.2 #1998
Before upgrading to this Claudie version from
v0.10.1, detach all Longhorn volumes and follow the manual checks described here: https://longhorn.io/docs/1.10.2/deploy/upgrade/#manual-checks-before-upgradeAdditional manual steps may also be required to ensure Longhorn upgrades correctly. To see the necessary steps, look at the
Migration Requirement Before Longhorn v1.10 Upgradesection in Longhorn v1.10.1 release
Bug fixes
- Fix API endpoint changes with proxy turned on
#1996
v0.10.1
v0.10.0
Most notable changes (TL;DR)
-
This version introduces a regular loop that will periodically ensure that the created infrastructure always matches the specs from the InputManifest and it is aligned and corrected if it drifts.
This mechanism will be applied on any newly created clusters. Clusters imported from older versions of Claudie will become regularly reconciled after their first modification in InputManifest. -
Longhorn v1.9.2 will now be deployed for clusters built with Claudie. For existing clusters built with
v0.9.16manual steps need to be done
before deploying Claudiev0.10.0:- Please read about the manual steps here
-
The Builder service has been completely removed from Claudie. It is also recommended that you delete the Builder deployment after deploying the v0.10.x versions of Claudie. Claudie now uses NATS instead of the builder to dispatch tasks among the other services.
-
The BuilderTTL field, which was internal to Claudie's task dispatching process, was completely removed in favor of a work queue. Previously, when the BuilderTTL reached 0, a new diff with the current desired state was made, even if the scheduled task did not finish. Thus, it was possible for another task to be dispatched. This is no longer possible, as the move to NATS requires an explicit acknowledgment of the task to progress the building of the cluster.
-
The identification and scheduling of tasks has been overhauled. Claudie now has an initial version of a reconciliation loop. In the v0.9.x versions of Claudie, whenever a change was detected after running
kubectl apply -f <your-input-manifest>
Claudie stopped and did not continue to health check or fix the error, even if the error was simply a network inconvenience, upon either a failure or success of building that change. As of now, with the reconciliation loop, every
kubectl apply -f <your-input-manifest>will explicitly state the desired state of your clusters, and Claudie will try endlessly to reach that desired state. This means that, in the event of any errors, changes will be reverted and then
reapplied, along with health checking, which helps identify potential misconfigurations or infrastructure issues. Claudie will then try to auto-repair these issues, if possible. The goal is to further improve the reconciliation loop with each release. -
DynamoDB was removed in favor of native locking supported by newer versions of OpenTofu which ship with Claudie
v0.10.x -
Support for Exoscale
v0.10.0
What's Changed
-
Use native state locking provided by OpenTofu instead of relying on DynamoDB #1906
-
Upgrade kubeone to v1.12.1. Claudie now supports building the following Kubernetes versions:
v1.32, v1.33, v1.34#1913 -
Making use of a provider cache in the
Terraformer, essentially removing the time spent downloading the provider on a cache hit #1907 -
Preventing kubeone from overriding
config.tomlwhich would collide withNvidiaGPUoperator overrides #1916 -
Longhorn will now be deployed with the
best-effortdata-locality setting #1933 -
The
Ansiblerstage has been tweaked to take less time overall #1917 -
Genesis Cloud provider support dropped #1941
-
The
zonefield is now optional for dynamic nodepools defined in the Input Manifest. If omitted, Claudie will automatically distribute the nodes across zones #1947 -
Claudie will now deploy Longhorn with version 1.9.2 #1956.
Manual steps need to be done before
upgrading to Claudiev0.10.0for Longhorn. -
Claudie will now support GPU guest accelerator for GCP nodepools #1952
Previously, it was not possible to communicate this information to the templates used to spawn the infrastructure. With
the new changes, the GPU type and count will now be passed to the templates, correctly spawning a VM with the requested GPU.nodePools: dynamic: - name: gpu-workers providerSpec: name: gcp-provider region: europe-west1 zone: europe-west1-b count: 1 serverType: n1-standard-4 image: ubuntu-2204-lts machineSpec: nvidiaGpuCount: 1 # <-- specify number of gpus. nvidiaGpuType: nvidia-tesla-t4 # <-- specify gpu type -
Initial version of the reconciliation loop was added to Claudie #1951
Claudie will now endlessly healthcheck and try to fix errors on identified tasks. While currently this only resolves
basic scenarios, such as unreachable nodes, the aim is to broaden this with every release. -
Claudie will no longer expect NGINX to be installed on existing clusters #1980
-
Part of the reconciliation loop is to refresh the current state infrastructure periodically after no tasks have been identified #1979
-
Added support for a new provider Exoscale