Skip to content

Commit cffc8a3

Browse files
Update in-place update proposal
1 parent 64c0753 commit cffc8a3

File tree

3 files changed

+250
-360
lines changed

3 files changed

+250
-360
lines changed

docs/book/src/reference/glossary.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Table of Contents
22

3-
[A](#a) | [B](#b) | [C](#c) | [D](#d) | [E](#e) | [H](#h) | [I](#i) | [K](#k) | [L](#l)| [M](#m) | [N](#n) | [O](#o) | [P](#p) | [R](#r) | [S](#s) | [T](#t) | [W](#w)
3+
[A](#a) | [B](#b) | [C](#c) | [D](#d) | [E](#e) | [H](#h) | [I](#i) | [K](#k) | [L](#l)| [M](#m) | [N](#n) | [O](#o) | [P](#p) | [R](#r) | [S](#s) | [T](#t) | [U](#u) |[W](#w)
44

55
# A
66
---
@@ -264,6 +264,12 @@ are propagated in place by CAPI controllers to avoid the more elaborated mechani
264264
They include metadata, MinReadySeconds, NodeDrainTimeout, NodeVolumeDetachTimeout and NodeDeletionTimeout but are
265265
not limited to be expanded in the future.
266266

267+
### In-place update
268+
269+
Any change to a Machine spec, that is performed without deleting the machines and creating a new one.
270+
271+
Note: changing [in-place mutable fields](#in-place-mutable-fields) is not considered and in-place upgrade.
272+
267273
### Instance
268274

269275
see [Server](#server)
@@ -460,6 +466,17 @@ A [Runtime Hook](#runtime-hook) that allows external components to generate [pat
460466

461467
See [Topology Mutation](../tasks/experimental-features/runtime-sdk/implement-topology-mutation-hook.md)
462468

469+
# U
470+
---
471+
472+
### Update Lifecycle Hooks
473+
Is a set of Cluster API [Runtime Hooks](#runtime-hook) called when performing the "can update in-place" decision or
474+
when performing an [in-place update](#in-place-update).
475+
476+
### Update Extension
477+
478+
A [runtime extension provider](#runtime-extension-provider) that implements [Update Lifecycle Hooks](#update-lifecycle-hooks).
479+
463480
# W
464481
---
465482

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Implementing Lifecycle Hook Runtime Extensions
2+
3+
<aside class="note warning">
4+
5+
<h1>Caution</h1>
6+
7+
Please note Runtime SDK is an advanced feature. If implemented incorrectly, a failing Runtime Extension can severely impact the Cluster API runtime.
8+
9+
</aside>
10+
11+
## Introduction
12+
13+
The proposal for [n-place updates in Cluster API](https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/20240807-in-place-updates.md)
14+
introduced extensions allowing users to execute changes on existing machines without deleting the machines and creating a new one.
15+
16+
This document defines those extensions and provides recommendation on how to implement them.
17+
18+
<!-- TOC -->
19+
* [Implementing Upgrade Plan Runtime Extensions](#implementing-upgrade-plan-runtime-extensions)
20+
* [Introduction](#introduction)
21+
* [Guidelines](#guidelines)
22+
* [Definitions](#definitions)
23+
* [GenerateUpgradePlan](#generateupgradeplan)
24+
<!-- TOC -->
25+
26+
## Guidelines
27+
28+
All guidelines defined in [Implementing Runtime Extensions](implement-extensions.md#guidelines) apply to the
29+
implementation of Runtime Extensions for upgrade plan hooks as well.
30+
31+
In summary, Runtime Extensions are components that should be designed, written and deployed with great caution given
32+
that they can affect the proper functioning of the Cluster API runtime. A poorly implemented Runtime Extension could
33+
potentially block upgrade transitions from happening.
34+
35+
Following recommendations are especially relevant:
36+
37+
* [Idempotence](implement-extensions.md#idempotence)
38+
* [Deterministic result](implement-extensions.md#deterministic-result)
39+
* [Error messages](implement-extensions.md#error-messages)
40+
* [Error management](implement-extensions.md#error-management)
41+
* [Avoid dependencies](implement-extensions.md#avoid-dependencies)
42+
43+
## Definitions
44+
45+
For additional details about the OpenAPI spec of the upgrade plan hooks, please download the [`runtime-sdk-openapi.yaml`]({{#releaselink repo:"https://github.com/kubernetes-sigs/cluster-api" gomodule:"sigs.k8s.io/cluster-api" asset:"runtime-sdk-openapi.yaml" version:"1.11.x"}})
46+
file and then open it from the [Swagger UI](https://editor.swagger.io/).

0 commit comments

Comments
 (0)