Skip to content

Commit f96435f

Browse files
yiannistrig-gaston
authored andcommitted
Additional feedback changes
1 parent 6cf0a63 commit f96435f

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

docs/proposals/20240807-in-place-updates.md

+6-4
Original file line numberDiff line numberDiff line change
@@ -155,11 +155,11 @@ The responsibility to determine which machine should be rolled out as well as th
155155
- To provide rollbacks in case of an in-place update failure. Failed updates need to be fixed manually by the user on the machine or by replacing the machine.
156156
- Introduce any changes to KCP (or any other control plane provider), MachineDeployment, MachineSet, Machine APIs.
157157
- Ammend the desired state to something that the registered updaters can cover or register additional updaters capable of handling the desired changes.
158-
- Allow in-place updates for single-node clusters without the requirement to reprovision hosts.
158+
- Allow in-place updates for single-node clusters without the requirement to reprovision hosts (future goal).
159159

160160
## Proposal
161161

162-
We propose to extend upgrade workflows to call External Update Extensions, if defined.
162+
We propose a pluggable update strategy architecture that allows the registration of External Update Extensions to optionally handle the update process.
163163

164164
Initially, this feature will be implemented without making API changes in the current core Cluster API objects. It will follow Kubernetes' feature gate mechanism. This means that any changes in behavior are controlled by the feature gate `InPlaceUpdates`, which must be enabled by users for the new in-place updates workflow to be available. It is disabled unless explicitly configured.
165165

@@ -303,8 +303,6 @@ loop For all machines
303303
end
304304
```
305305

306-
The MachineDeployment controller updates machines in place in a very similar way to rolling updates: by creating a new MachineSet and moving the machines from the old MS to the new one. We want to stress that the Machine objects won't be deleted and recreated like in the current rolling strategy. The MachineDeployment will just update the OwnerRefs and labels, effectively moving the existing Machine object from one MS to another. The number of machines moved at once might be made configurable on the MachineDeployment in the same way `maxSurge` and `maxUnavailable` control this for rolling updates.
307-
308306
### KCP updates
309307

310308
```mermaid
@@ -896,6 +894,10 @@ Both the `kcp-version-upgrade` and the `vsphere-vm-memory-update` extensions inf
896894

897895
Since the fallback to machine replacement is a default strategy and always enabled, the MachineDeployment controller proceeds with the rollout process as it does today, replacing the old machines with new ones.
898896

897+
### API Changes
898+
899+
*All functionality related to In-Place Updates will be available only if the `InPlaceUpdates` feature flag is set to true.*
900+
899901
### Security Model
900902

901903
On the core CAPI side, the security model for this feature is very straightforward: CAPI controllers only require to read/create/update CAPI resources and those controllers are the only ones that need to modify the CAPI resources. Moreover, the controllers that need to perform these actions already have the necessary permissions over the resources they need to modify.

0 commit comments

Comments
 (0)