-
Notifications
You must be signed in to change notification settings - Fork 275
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Operator should check all instances versions before upgrading itself #485
Comments
... such that we comply with
https://www.rabbitmq.com/feature-flags.html#version-compatibility |
A key point with this is that the validation needs to happen before the operator is upgraded, warning when attempting to apply YAML to upgrade the operator version. This feels like a good case for a validating webhook for the operator itself, if that's possible? |
I wonder under what circumstances this would be actually used. The quote from RabbitMQ docs is not necessarily an argument for a check like this - we might as well allow the operator to upgrade but then prevent a (hypothetical) 3.8->3.10 cluster upgrade. For me that's more flexible and works better when the person responsible for the Operator's deployment and the owner of the RabbitMQ cluster are different folks on different teams. Now, how would the Operator know that 3.8->3.10 is attempted is less clear - since images can be relocated and renamed, relying on image tags can be tricky (although we could make that an explicit requirement for relocated images). Another option is something we discussed a few months back, which is to add metadata to the OCI images. When the image property changes in the |
This issue has been marked as stale due to 60 days of inactivity. Stale issues will be closed after a further 30 days of inactivity; please remove the stale label in order to prevent this occurring. |
@MirahImage @yaronp68 @mkuratczyk Documentation page of operator highlights this, Scaling up and automated rolling upgrades of RabbitMQ clusters. Also, we do not see features like maintenance mode, rebalancing queues during scaling cluster etc. being used. Are these not in the scope of the operator yet ? |
Hi. Rebalancing and maintenance mode are used: As for version version checks, we keep coming back to this discussion but it's not implemented yet. Have you run into a case where an upgrade failed because of no such checks? The problem is ultimately with the flexibility of containers. Since we allow the |
@mkuratczyk |
Can you give some examples of |
I think this should be handled different - a common way would be to set a "cluster version" in your rabbitmqcluster.rabbitmq.com CRD. The user should not be able to set a custom docker image url / tag. The operator should then watch the CRD and if you increase your cluster version from 3.8 -> 3.9 is should trigger a rolling upgrade of the existing containers (one by one). |
Thanks for your input. This is one of the options we are considering. However, it's not without drawbacks. Many large users relocate images to their internal registries. As I mentioned in the comments above, this leads to potentially unpredictable images names. At the very list, the Operator would need it's own configuration to define the registry. Likely, it would also need some configuration options for tags or a requirement not to change the tags when relocating the image. We are deferring work on this issue, hoping that a pattern will emerge in the Kubernetes community so that we can follow it. For the time being, we offer maximum flexibility to enable different use cases. |
As a user I want to make sure I will be able to upgrade all my clusters through the operator. To prevent such upgrade issues, the operator should not upgrade itself unless all instances are in the latest minor or major the operator supports before upgrade. In case one or more instances are not upgraded the operator should not upgrade and issue a warning. The user can override this with some flag in the yaml to ignore upgrade path problems or similar
The text was updated successfully, but these errors were encountered: