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
Once `status.ready` the Machine "core" controller will bubble up this info in Machine's `status.bootstrapConfigReady`;
238
-
Also BootstrapConfig's `status.dataSecretName` will be surfaced on Machine's corresponding fields at the same time.
243
+
Once `status.initialization.dataSecretCreated` the Machine "core" controller will bubble up this info in Machine's
244
+
`status.initialization.bootstrapDataSecretCreated`; also BootstrapConfig's `status.dataSecretName` will be surfaced
245
+
on Machine's corresponding fields at the same time.
239
246
240
247
<asideclass="note warning">
241
248
242
-
<h1>Heads up! this will change with the v1beta2 contract</h1>
249
+
<h1>Compatibility with the deprecated v1beta1 contract</h1>
243
250
244
-
When the v1beta2 contract will be released (tentative Apr 2025), `status.initialization.dataSecretCreated` will be used
245
-
instead of `status.ready`. However, `status.ready` will be supported until v1beta1 removal (~one year later).
251
+
In order to ease the transition for providers, the v1beta2 version of the Cluster API contract _temporarily_
252
+
preserves compatibility with the deprecated v1beta1 contract; compatibility will be removed tentatively in August 2026.
246
253
247
-
See [Improving status in CAPI resources].
254
+
With regards to initialization completed:
255
+
256
+
Cluster API will continue to temporarily support BootstrapConfig resources using the `status.ready` field to
257
+
report initialization completed.
258
+
259
+
After compatibility with the deprecated v1beta1 contract will be removed, `status.ready` field in
260
+
the BootstrapConfig resource will be ignored.
248
261
249
262
</aside>
250
263
@@ -254,82 +267,65 @@ According to [Kubernetes API Conventions], Conditions provide a standard mechani
254
267
status reporting from a controller.
255
268
256
269
Providers implementers SHOULD implement `status.conditions` for their BootstrapConfig resource.
257
-
In case conditions are implemented, Cluster API condition type MUST be used.
270
+
In case conditions are implemented on a BootstrapConfig resource, Cluster API will only consider conditions providing the following information:
271
+
-`type` (required)
272
+
-`status` (required, one of True, False, Unknown)
273
+
-`reason` (optional, if omitted a default one will be used)
274
+
-`message` (optional, if omitted an empty message will be used)
275
+
-`lastTransitionTime` (optional, if omitted time.Now will be used)
276
+
-`observedGeeneration` (optional, if omitted the generation of the BootstrapConfig resource will be used)
277
+
278
+
Other fields will be ignored.
258
279
259
280
If a condition with type `Ready` exist, such condition will be mirrored in Machine's `BootstrapConfigReady` condition.
260
281
261
282
Please note that the `Ready` condition is expected to surface the status of the BootstrapConfig during its own entire lifecycle,
262
283
including initial provisioning, but not limited to that.
263
284
264
-
See [Cluster API condition proposal] for more context.
285
+
See [Improving status in CAPI resources] for more context.
265
286
266
287
<asideclass="note warning">
267
288
268
-
<h1>Heads up! this will change with the v1beta2 contract</h1>
269
-
270
-
When the v1beta2 contract will be released (tentative Apr 2025), Cluster API will start using Kubernetes metav1.Condition
271
-
types and fully comply to [Kubernetes API Conventions].
289
+
<h1>Compatibility with the deprecated v1beta1 contract</h1>
272
290
273
-
In order to support providers continuing to use legacy Cluster API condition types, providers transitioning to
274
-
metav1.Condition or even providers adopting custom condition types, Cluster API will start to accept `Ready` condition that
275
-
provides following information:
276
-
-`type`
277
-
-`status`
278
-
-`reason` ((optional, if omitted, a default one will be used)
279
-
-`message` (optional)
280
-
-`lastTransitionTime` (optional, if omitted, time.Now will be used)
291
+
In order to ease the transition for providers, the v1beta2 version of the Cluster API contract _temporarily_
292
+
preserves compatibility with the deprecated v1beta1 contract; compatibility will be removed tentatively in August 2026.
281
293
282
-
Other fields will be ignored
294
+
With regards to conditions:
283
295
284
-
See [Improving status in CAPI resources] for more context.
296
+
Cluster API will continue to read conditions from providers using deprecated Cluster API condition types.
285
297
286
-
Please note that provider that will continue to use legacy Cluster API condition types MUST carefully take into account
287
-
the implication of this choice which are described both in the document above and in the notice at the beginning of the [Cluster API condition proposal]..
298
+
Please note that provider that will continue to use deprecated Cluster API condition types MUST carefully take into account
299
+
the implication of this choice which are described both in the [Cluster API v1.11 migration notes] and in the [Improving status in CAPI resources]proposal.
288
300
289
301
</aside>
290
302
291
303
### BootstrapConfig: terminal failures
292
304
293
-
Each BootstrapConfig SHOULD report when BootstrapConfig's enter in a state that cannot be recovered (terminal failure) by
294
-
setting `status.failureReason` and `status.failureMessage` in the BootstrapConfig resource.
295
-
296
-
```go
297
-
typeFooConfigStatusstruct {
298
-
// failureReason will be set in the event that there is a terminal problem reconciling the FooConfig
299
-
// and will contain a succinct value suitable for machine interpretation.
300
-
//
301
-
// This field should not be set for transitive errors that can be fixed automatically or with manual intervention,
302
-
// but instead indicate that something is fundamentally wrong with the FooConfig and that it cannot be recovered.
@@ -479,7 +474,6 @@ The following diagram shows the typical logic for a bootstrap provider:
479
474
[Improving status in CAPI resources]: https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md
[Kubernetes API Conventions]: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#typical-status-properties
482
-
[Cluster API condition proposal]: https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20200506-conditions.md
0 commit comments