Migrating From Py-Kube-Downscaler
In most cases it's very simple to migrate and step 3 and 4 can be skipped.
Step 1:
Uninstall the py-kube-downscaler
helm uninstall py-kube-downscaler
Step 2:
Adjust any old values.yaml files to the new structure.
Step 3:
Make sure all non-official automations support the breaking changes.
You can skip this if you didn't have external automations for the downscaler.
Step 4:
Make sure all timestamps are RFC3339. To make this easier you could also just run the downscaler and see if it gives an error.
Since only some edge cases of the ISO 8601 timestamp format are not compatible you can likely skip this step. Should the downscaler error because of this you can still change them afterwards.
Step 5:
Now you're ready to install the Downscaler. For that you can follow our Installation Guide.
Features
Incompatibility
Some values are now incompatible with each other. This makes it easier to debug unwanted behavior from misconfiguration.
See the breaking changes entry for more information.
Duration Units
Instead of just integer seconds you can now also use duration strings with units. This makes it more intuitive to configure.
Uniform Timestamps
The downscaler now uses RFC3339 timestamps exclusively. This means that you will not have to juggle with multiple timestamp formats.
See the breaking changes entry for more information.
Scopes
The scaling values are now ordered into scopes. This makes it easier to understand where the values are taken from.
See the breaking changes entry for more information.
Explicit Include
Added the --explicit-include
cli argument.
This is a simple way to exclude all workloads by default and only add those you want to have scaled.
Comfort Spaces
Lists now allow for spaces in-between the entries.
This allows for lists to be more readable since the entries are separated.
Reverse Relative Timespans
Reverse Timespans can now overlap into the "next day" (20:00-08:00
)
This is a faster and less verbose way of matching the opposite of an up/downtime.
Actual Exclusion
Excluding a workload now will ignore scaling the workload, instead of forcing it into uptime. This means that what happens when excluding a workload is more intuitive.
See the breaking changes entry for more information.
Workload Errors
Configuration errors on workloads are now shown as error events on the workload. This makes it so you don't have to have access to the downscalers console just to see whats wrong with your configuration.
Booleans to Timespans
All boolean values (e.g. force up/downtime, exclude) now support timespans to dynamically do things.
Breaking Changes
New Structure of values.yaml
Some fields of the values.yaml file have been restructured.
The following fields would have to be adjusted in an old values.yaml file from the py-kube-downscaler:
constrainedDownscaler
is now not needed anymoreconfigMapName
is now underconfigMap.name
extraConfig
is now underconfigMap.extraConfig
Incompatible Fields
Some values are now incompatible with each other.
This shouldn't break anything. And will only cause a problem if the downscaler was misconfigured.
See the features entry for more information.
RFC3339 Timestamps
The downscaler now uses RFC3339 timestamps exclusively.
This should not break anything.
This only causes a problem in some edge cases of the previously supported ISO 8601 timestamp format (examples: 2023-08-12
, 2023-233
or 2023-W34-1
).
See the features entry for more information.
Changed Value Hierarchy
The scaling values are now ordered into scopes.
This should not break anything. This only causes a problem if there was a weird quirk in the way the py-kube-downscaler got its scaling attributes from you relied on.
See the features entry for more information.
Stricter Exclusion
Excluding a workload now will ignore scaling the workload, instead of forcing it into uptime. This only causes problems if you relied on the workload being automatically scaled up when excluded.
See the features entry for more information.