The schematic comparison logic had an edge case: if a machine predates the image factory, it is installed via a `ghcr.io` installer image (or a custom one). Those machines do not have the schematic meta extension on them, and Omni creates a synthetic schematic ID and properties for those. These properties do not have the "actual" kernel args of the machine, but rather, Omni sets them as what it thinks they should be (the "correct" siderolink args from the Omni perspective). Later, if Omni gets its siderolink API advertised URL get updated, it wrongly detects those synthetic kernel args to be the "new ones (with the new URL)", hence, the desired vs actual schematic comparison returns a mismatch. And Omni does an unnecessary upgrade to that machine. Fix this by using the "current (non-protected) args of the machine" as the synthetic args in such cases. Those "current" args will be synthetic themselves (since we cannot read them from the machine, as it does not have schematic info on it), but, it will prevent changes when the advertised URL changes. Additionally, we have two checks to detect a schematic mismatch in the `ClusterMachineConfigStatus` controller - make them check the mismatch in the same way, to be more consistent. Unrelated to this bug, also fix the `SchematicReady` check (introduced in 1.5) to treat invalid schematics as valid, as otherwise we cannot create clusters from non-factory images. Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
SaaS-simple deployment of Kubernetes - on your own hardware.
Omni manages Kubernetes on bare metal, virtual machines, or in a cloud. Built on Talos Linux by the folks at Sidero.
Boot from an Omni image. Click to allocate to a cluster. That’s it!
- Vanilla Kubernetes, on your machines, under your control.
- Elegant UI for management and operations
- Security taken care of—ties into your Enterprise ID provider
- Highly Available Kubernetes API endpoint built in
- Firewall friendly—manage edge nodes securely
- From single-node clusters to the largest scale
- Support for GPUs and most CSIs
Install
Omni is available via a Business Source License which allows free installations in non-production environments. If you would like to deploy Omni for production use please contact Sidero sales. If you would like to subscribe to the hosted version of Omni please see the SaaS pricing.
If you would like to self-host Omni for non-production workloads please follow the instructions in the documentation.
To deploy Omni on Kubernetes, see the Helm chart.
Development
For instructions on developing Omni, see DEVELOPMENT.md.
Community
- Support: Questions, bugs, feature requests GitHub Issues
- Slack: Join our slack channel. Request access via inviter.co.
- Twitter: @SideroLabs
- Email: info@SideroLabs.com
If you're interested in this project and would like to help in engineering efforts or have general usage questions, we are happy to have you! We hold a weekly meeting that all audiences are welcome to attend.
Office Hours
- When: Mondays at 16:30 UTC.
- Where: Google Meet.
You can subscribe to this meeting by joining the community forum above.
Note: You can convert the meeting hours to your local time.
Contributing
Contributions are welcomed and appreciated! See Contributing for our guidelines.
Licenses
The Omni code is released under a combination of two licenses:
- The main Omni Server code is licensed under Business Source License 1.1 (BSL-1.1).
- The Omni client library is licensed under Mozilla Public License 2.0 (MPL-2.0).
When contributing to an Omni feature, you can find the relevant license in the comments at the top of each file.
