-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Open
Labels
help wantedDenotes an issue that needs help from a contributor. Must meet "help wanted" guidelines.Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines.kind/featureCategorizes issue or PR as related to a new feature.Categorizes issue or PR as related to a new feature.priority/important-longtermImportant over the long term, but may not be staffed and/or may need multiple releases to complete.Important over the long term, but may not be staffed and/or may need multiple releases to complete.triage/acceptedIndicates an issue or PR is ready to be actively worked on.Indicates an issue or PR is ready to be actively worked on.
Description
This is a tracking issue for the implementation of in-place updates. At the moment, it only covers the work required for the initial phase of the project to reach the experimental (alpha) stage.
The design and approach are described in the in-place updates proposal.
-
Initial refactorings / prereqs:
-
Add
InPlaceUpdates
feature gate: ✨Add inplace updates featuregate #12755 -
Introduce Runtime Hook API changes, see examples section of the proposal for details.
- Introduce CanUpdateMachine/CanUpdateMachineSet hooks and corresponding Request/Response types @alexander-demicev
- Introduce UpdateMachine hook and corresponding Request/Response types @alexander-demicev
- Define API contract for
CanUpdateMachineRequest
andCanUpdateMachineResponse
- Define API contract for
UpdateMachineRequest
andUpdateMachineResponse
-
Create reference external updater (CAPD Kubeadm Updater)
- Set up the project structure
- Implement handlers for both runtime endpoints
- Implement container commands for upgrading Kubernetes components
- Provide config samples for the updater
-
Modify core controllers
- KubeadmControlPlane controller updates
- ✨ KCP: compare ClusterConfiguration via KubeadmConfig instead of annotation on Machine #12758
- 🌱 Simplify cleanupConfigFields in KCP #12776
- 🌱 Cleanup KCP code: variable/func renames, func order #12793
- 🌱 Simplify KCP matchesKubeadmConfig #12813
- [WIP] 🌱 KCP: Add current/desired objects to NotUpToDateResult #12817
- See these parts of the proposal for details:
- MachineDeployment controller updates
- [Fabrizio] Add rollout planner part1: 🌱 Add rollout planner #12804
- [Fabrizio] Fix issue in scale down old MS 🐛 Fix race conditions ScaleDownOldMS #12812
- [Fabrizio] Add support for in-place in rollout planner part1: 🌱 Refactor MachineTemplateUpToDate #12811
- Implement CanUpdateMachineSet
- Change MS controller to handle move
- See these parts of the proposal for details:
- Machine controller modifications (@alexander-demicev)
- See these parts of the proposal for details:
- MHC: unhealthyMachineConditions (@furkatgofurov7): MHC should provide support for checking Machine conditions #5450
- KubeadmControlPlane controller updates
-
Follow-ups
- Consider if to improve the MS definition of Unhealthy when picking machines for deletion, see 🐛 Fix race conditions ScaleDownOldMS #12812 (comment)
- Consider if to improve SSA helper to add items to the cache immediately after apply (currently they are added only after a no-op patch, so we are performing two apply for each change) (@lentzi90)
-
Set up E2E testing
- Implement E2E suite that uses the CAPD Kubeadm Updater
-
Misc
- Finalize all
TODO(in-place)
- Finalize all
-
Create documentation
- Feature flag configuration
- New runtime hook and its API contracts
- Updater structure and logic
- Guide to implementing extensions
- Explanation of the CAPD Kubeadm Updater
- Tutorials for usage
Follow-up (after everything else is done, possibly in the next relase cyle)
- Improve ExtensionConfig pause behavior: updating the registry is also paused, warmup runnable ignores pause today
Docs
- Implementation design: https://docs.google.com/document/d/1MuhwSL-1ZMsiMoEHE9fVRha9Wkb5ORUFCLSMVNK_mTA/edit?tab=t.0
furkatgofurov7, hyunsun, s3rj1k, dkoshkin and nikParasyr
Metadata
Metadata
Assignees
Labels
help wantedDenotes an issue that needs help from a contributor. Must meet "help wanted" guidelines.Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines.kind/featureCategorizes issue or PR as related to a new feature.Categorizes issue or PR as related to a new feature.priority/important-longtermImportant over the long term, but may not be staffed and/or may need multiple releases to complete.Important over the long term, but may not be staffed and/or may need multiple releases to complete.triage/acceptedIndicates an issue or PR is ready to be actively worked on.Indicates an issue or PR is ready to be actively worked on.