k8ssandra 2.0 will be based on k8ssandra-operator. We will support Helm as one of the ways to install the operator. There are some questions we need to address with respect to users moving from 1.x to 2.0.
- Do we support upgrades, migrations, both?
- How will upgrades be done?
https://github.com/k8ssandra/k8ssandra/pull/1080 added a chart for k8ssandra-operator. The PR also made the new k8ssandra-operator chart a dependency of the k8ssandra chart. I think the idea is to eventually change the k8ssandra chart such that it installs k8ssandra-operator. This makes sense from an upgrade perspective. As a user who has installed k8ssandra 1.x, it makes sense that I would do a
helm upgrade to upgrade to k8ssandra 2.0. It is arguably less intuitive for me to upgrade by doing a
helm install of the k8ssandra-operator chart.
The k8ssandra-operator chart has as its only dependency k8ssandra-common. I think that this is wrong. The chart should also depend on the cass-operator chart; otherwise,
helm install won’t work.
For 2.0, the k8ssandra chart should just depend on the k8ssandra-common and k8ssandra-operator charts. All of the other dependencies are for 1.x and should be removed in 2.0. It is a fair question to ask whether we need both charts. Couldn’t we just put everything in the k8ssandra chart? The answer is yes, but by having a separate k8ssandra-operator chart we can more easily support development of both 1.x and 2.x which I think we may have to do for a bit.
The user will do a
helm upgrade for the 2.0 k8ssandra chart which will perform the necessary migration steps which includes:
- Install k8ssandra-operator
- Create a
- Add the
helm.sh/resource-policy: keepannotation so that Helm does not manage the object. Helm will ignore it on upgrade, uninstall, and rollback.
- Includes the existing
- If there is a Stargate deployment, create a
Stargateobject and add it to the
- If there is a
Reaperobject, add it to the
K8ssandraCluster(note that Reaper is not yet supported in k8ssandra-operator)
- Add the
- Upgrade cass-operator
- Remove medusa-operator Deployment
- Remove reaper-operator Deployment
Upgrading from 1.x to 2.x is the only time the k8ssandra chart should create a
K8ssandraCluster object. We are not going to manage
K8ssandraCluster objects via Helm.