You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/book/src/developer/core/controllers/cluster.md
+6-2
Original file line number
Diff line number
Diff line change
@@ -18,8 +18,12 @@ Among those rules:
18
18
Similarly, in order to support different solutions for control plane management, The Cluster resource references
19
19
an ControlPlane object, e.g. KubeadmControlPlane, EKSControlPlane etc.
20
20
21
-
The [ControlPlane resource contract](../../providers/contracts/control-plane.md) defines a set of rules a provider is expected to comply with in order to allow
22
-
the expected interactions with the Cluster controller.
21
+
Among those rules:
22
+
- ControlPlane SHOULD report a [controlplane endpoint](../../providers/contracts/control-plane.md#controlplane-endpoint) for the Cluster
23
+
- ControlPlane MUST report when Cluster's control plane is [fully provisioned](../../providers/contracts/control-plane.md#controlplane-initialization-completed)
24
+
- ControlPlane MUST manage a [KubeConfig secret](../../providers/contracts/control-plane.md#cluster-kubeconfig-management)
25
+
- ControlPlane SHOULD report [conditions](../../providers/contracts/control-plane.md#controlplane-conditions)
26
+
- ControlPlane SHOULD report [terminal failures](../../providers/contracts/control-plane.md#controlplane-terminal-failures)
23
27
24
28
Considering all the info above, the Cluster controller's main responsibilities are:
Copy file name to clipboardExpand all lines: docs/book/src/developer/providers/contracts/bootstrap-config.md
+12-9
Original file line number
Diff line number
Diff line change
@@ -221,7 +221,10 @@ Each BootstrapConfig MUST report when the bootstrap data secret is fully provisi
221
221
222
222
```go
223
223
typeFooConfigStatusstruct {
224
-
// Ready denotes that the foo bootstrap data secret is fully provisioned.
224
+
// ready denotes that the foo bootstrap data secret is fully provisioned.
225
+
// NOTE: this field is part of the Cluster API contract and it is used to orchestrate provisioning.
226
+
// The value of this field is never updated after provisioning is completed. Please use conditions
227
+
// to check the operational state of the bootstrap config.
225
228
// +optional
226
229
Readybool`json:"ready"`
227
230
@@ -284,28 +287,22 @@ the implication of this choice which are described both in the document above an
284
287
285
288
</aside>
286
289
287
-
### BootstrapConfig: pausing
288
-
289
-
Providers SHOULD implement the pause behaviour for every object with a reconciliation loop. This is done by checking if `spec.paused` is set on the Cluster object and by checking for the `cluster.x-k8s.io/paused` annotation on the BootstrapConfig object.
290
-
291
-
If implementing the pause behavior, providers SHOULD surface the paused status of an object using the Paused condition: `Status.Conditions[Paused]`.
292
-
293
290
### BootstrapConfig: terminal failures
294
291
295
292
Each BootstrapConfig SHOULD report when BootstrapConfig's enter in a state that cannot be recovered (terminal failure) by
296
293
setting `status.failureReason` and `status.failureMessage` in the BootstrapConfig resource.
297
294
298
295
```go
299
296
typeFooConfigStatusstruct {
300
-
//FailureReason will be set in the event that there is a terminal problem reconciling the FooConfig
297
+
//failureReason will be set in the event that there is a terminal problem reconciling the FooConfig
301
298
// and will contain a succinct value suitable for machine interpretation.
302
299
//
303
300
// This field should not be set for transitive errors that can be fixed automatically or with manual intervention,
304
301
// but instead indicate that something is fundamentally wrong with the FooConfig and that it cannot be recovered.
//FailureMessage will be set in the event that there is a terminal problem reconciling the FooConfig
305
+
//failureMessage will be set in the event that there is a terminal problem reconciling the FooConfig
309
306
// and will contain a more verbose string suitable for logging and human consumption.
310
307
//
311
308
// This field should not be set for transitive errors that can be fixed automatically or with manual intervention,
@@ -432,6 +429,12 @@ Please, read carefully the page linked above to fully understand implications an
432
429
433
430
The clusterctl command is designed to work with all the providers compliant with the rules defined in the [clusterctl provider contract].
434
431
432
+
### BootstrapConfig: pausing
433
+
434
+
Providers SHOULD implement the pause behaviour for every object with a reconciliation loop. This is done by checking if `spec.paused` is set on the Cluster object and by checking for the `cluster.x-k8s.io/paused` annotation on the BootstrapConfig object.
435
+
436
+
If implementing the pause behavior, providers SHOULD surface the paused status of an object using the Paused condition: `Status.Conditions[Paused]`.
0 commit comments