# Announcing KUDO 0.16.0
We are happy to release KUDO v0.16.0 (opens new window), with focus on upgradability, support for immutable parameters and a lot of other small improvements and bugfixes.
To see the full changelog and the list of contributors who contributed to this release, visit the Github Release (opens new window) page.
# KUDO Upgrades
Until recently, kubectl kudo init
would simply apply the expected state to the cluster and ignore any breaking changes that may have been introduced. This is now changed, from now on:
kubectl kudo init
will fail if it detects an existing KUDO installation to prevent accidental upgrades.- You can use
kubectl kudo init --upgrade
to upgrade an existing installation.
The upgrade process will verify that the upgrade can be executed correctly and - in later versions - will check installed operators and may contain migrations and other features that have to be done in an upgrade.
In the same vein, we started to integrate upgrade-tests into our CI to ensure that new KUDO releases won't break existing installations and can be upgraded with a defined process.
Run kubectl kudo init --help
for more details.
# Immutable Parameters
Operators sometimes have the need to specify parameters that are effectively immutable. For example the NUM_TOKENS
parameter in the KUDO Cassandra operator must not be changed in an update to the instance because Cassandra does not allow this property to be changed. Until now it was not really possible to define a parameter as immutable. This has now changed, with KUDO 0.16.0 it is possible to define a parameter like this:
- name: NUM_TOKENS
description: "The number of tokens assigned to each node."
default: "256"
immutable: true
This will prevent the user from ever changing the parameter value in an update to the instance. For more details about immutable parameters, take a look at KEP-30 (opens new window). The document also defines the details of changing an existing parameter to immutable in a new operator version.
Show parameters
You can get a list of all operator parameters with package list
. For example: kubectl kudo package list parameters zookeeper
will show all parameters from the zk operator. This includes immutability and other attributes.
# New Repository Index
The default repository when installing operators with KUDO is the community repository. Adding new operators to this repository has been greatly simplified with a new index of operators and a new community repository URL that is used starting with KUDO 0.16.
WARNING
The community repository URL has changed!
KUDO users with existing installations must update their repository configuration!
# Updating the community repository URL
If you had installed KUDO before, you must update your repository configuration.
Please check your ~/.kudo/repository/repositories.yaml
. If you have never modified it, simply delete the file and run kubectl kudo init --client-only
. This will recreate the file with the new URL.
If you have modified the repositories.yaml
before, you need to update the community repository URL.
- Old:
https://kudo-repository.storage.googleapis.com/0.10.0
- New:
https://kudo-repository.storage.googleapis.com/v1
The old repository will still be served for the foreseeable future, but will not receive any updates anymore.
For more details have a look at the full article about the new operators index.
# YAML/JSON output
There are some more commands that now allow yaml/json output so it can be better used in scripts and tools:
kubectl kudo plan status --output yaml
planStatus:
deploy:
lastUpdatedTimestamp: "2019-10-17T01:01:01Z"
name: deploy
phases:
- name: deploy
status: FATAL_ERROR
steps:
- message: error detail
name: deploy
status: FATAL_ERROR
status: FATAL_ERROR
kubectl kudo package verify --output json
{
"errors": [
"parameter \"Cpus\" has a duplicate",
"parameter \"comma,\" contains invalid character ','",
"\"operatorVersion\" is required and must be semver",
"plan \"not-existing-plan\" used in parameter \"comma,\" is not defined"
],
"warnings": [
"parameter \"Cpus\" defined but not used."
],
"valid": false
}
Make sure to look at the command parameters with kubectl kudo <command> --help
to see if a command supports yaml/json output. Please open an Enhancement Request (opens new window) if you are missing it somewhere.