Skip to content

Tracking issue for In-place Updates implementation #12291

@alexander-demicev

Description

@alexander-demicev

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.

Follow-up (after everything else is done, possibly in the next relase cyle)

  • Improve InfraMachine controller to only add finalizer after InfraMachine has owner (avoids retries on conflict in RemoveManagedFieldsForLabelsAndAnnotations) (ask @sbueringer for more details, same in CAPV)
  • [MHC] We should probably find a way to remediate based on Ready & Available Machine condition
  • [MHC] More advanced MHC behavior (e.g. different behavior during in-place update)
  • KCP: Optimize preflightCheck calls: ✨ KCP: Implement CanUpdateMachine #12857 (comment)
    • KCP should not spam "Rolling out Control Plane machines.." while waiting for preflightChecks to pass
  • Consider if to improve the MS definition of Unhealthy when picking machines for deletion, see 🐛 Fix race conditions ScaleDownOldMS #12812 (comment)
  • Improve Machine controller unit tests to share more setup and verification code across tests in table tests: ✨ Add in-place updates support for machine controller #12831 (comment)
  • Improve ExtensionConfig pause behavior: updating the registry is also paused, warmup runnable ignores pause today
  • Improve how to configure to which “objects” a RuntimeExtension applies
    • Goal: We should avoid unnecessary CanUpdateMachine/MachineSet calls (e.g. for the wrong infra provider)
    • Ideas: ExtensionConfig objectSelector (like FieldSelectorRequirement), Extend response of Discovery call (e.g. objectSelector (like FieldSelectorRequirement) or “infraProviderKind”)
  • Hook ordering
    • Note: It’s important that hooks of different update extensions are called in the same order for CanUpdateMachine/CanUpdateMachineSet and UpdateMachine hooks
  • We are overwriting Machine / InfraMachine / BootstrapConfig in-place.This is better than trying to rotate InfraMachine / BootstrapConfig as rotation would be very hard to handle for infra providers. With some infra providers InfraMachines are immutable, this would have to be changed if they want to start supporting in-place updates of InfraMachines.
    • TBD: If immutability check should be dropped entirely or only when the update comes from core CAPI (this could maybe be detected via the UserAgent header example)
    • Probably need some docs for in-place updates with infra providers (e.g. to cover what they should or shouldn't do once an InfraMachine was updated)
  • Anything to do for autoscaler?

Docs

Metadata

Metadata

Labels

help wantedDenotes an issue that needs help from a contributor. Must meet "help wanted" guidelines.kind/featureCategorizes 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.triage/acceptedIndicates an issue or PR is ready to be actively worked on.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions