Idea: Elevate Site CRD to top-level config and introduce Site Controller
- Dominant language
- Go
- Stars
- 28
- Forks
- 11
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 55
Description
# Problems
1. No site-level concept of configuration that all components can consume. The net component owns the Site resource currently and the pattern is to make configuration resources per-component which is both annoying to implement and frustrating to manage.
2. Initialization and upgrade of a Site is complicated. Init right now relies on the user invoking the `kubectl-unbounded site init` plugin with potentially a plethora of command line switches. The upgrade path is currently non-existent and unguided and can basically be summed up as "take the latest tarball and run `kubectl apply -f` and hope for the best. Because we don't have any complex migrations or upgrade logic this works right now but it is an overly simplistic model.
# Idea
- Promote the Site CR to the global unbounded namespace and make it a top-level configuration resource.
- Make it so specific features in a Site can be configured through the Site CR.
- Implement a Site controller which reconciles the Site state with the Site CR. In the future the installation of Unbounded thus become basically `kubectl apply -f ` and then you create a Site CR. The Site controller is responsible for deploying, net, machina, storage, gantry and any other desired components.
- The Site controller becomes the orchestration for upgrades. The site controller knows how to gracefully upgrade each component. We can have features like "auto-upgrade" which can automatically keep Unbounded components up-to-date OR operators can specify specific versions on the Site CR and the Site controller will ensure those versions are brought online. Upgrades become just a matter of repointing the version and waiting for the controller to operate.
Contributor guide
Research direction
Start by reading the existing net-owned Site resource and the `kubectl-unbounded site init` plugin entry point. Map how net, machina, storage, and gantry are currently initialized and upgraded. Done would require an agreed Site CR shape, controller responsibilities, and upgrade behavior, followed by implementation and validation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, kubernetes
- Domain
- devops, infrastructure
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100