Open
Description
Introduce the new API type
- v1beta2 API (not strictly related to this issue)
- Prepare main branch for v1.11: 🌱 Prepare main for v1.11 development #12000
- Create v1beta2 types for core, bootstrap, controlplane, make controllers/webhooks to use it
- Drop hardcoded v1beta1 references 🌱 Drop hardcoded v1beta1 references #12027
- Create API types [WIP] ⚠️ Add v1beta2 types #12037
- Follow-up (quick-win low priority):
- Remove apiGroups from scheme in test/extension/main.go
- Consider: add Deprecated comment to v1beta1 packages (see v1alpha4/doc.go)
- Let's get rid of *List Hub & ConvertTo / ConvertFrom funcs
- We sped up fuzzing of ClusterClass, let's try to run conversion tests with race-detector as well now
- Follow-up:
- Remove all
TODO(v1beta2)
(if already possible) - Move API from api/v1beta2 => api/core/v1beta2 (also consider bootstrap/controlplane api packages)
https://github.com/kubernetes-sigs/cluster-api/blob/main/Makefile#L916) (previously it was super slow)
- Remove all
- Create v1beta2 types for CAPD(ev) (ensure v1beta1 uses v1beta1 conditions, ...)
- Migrate E2E tests to v1beta2
- Add v1beta2 ExtensionConfig (ensure v1alpha1 uses v1beta1 conditions, ...)
- Consider if to step up test coverage where API version is relevant (e.g. CC, topology controller, Runtime Extension)
- Update example templates, docs
Introduce support for compatible contracts
- [Fabrizio] Add support for compatible contracts in clusterctl 🌱 Add support for compatible contracts to clusterctl #12018
- Refactor reconcile external moving unstructure handling to the contract package
- Implement v1beta2 contract changes to the contract package + handle fallback to v1beta2 contract
Improving status Implementation Phase2 (1.11)
Initial notes for phase 2 of the implementation, where new field are promoted top level in status and used by controllers
- API changes for status
- Introduce deprecated struct, move v1beta2 top level
- Rename condition interfaces and method implementations (current--> deprecated, v1beta2--> current)
- Rename condition consts (current--> deprecated, v1beta2--> current) ; mark old conditions type and util as deprecated
- Move conditions fields as the first field in the struct
- Add minReadySeconds to machine, remove it from KCP. MD
- Fine tuning of print columns
- Change contracts
- When reading from external objects, read new fields, fallback to old ones
- Update contract docs
- Use new fields
- (every controller that use conditions or counters)
- MachineHealthCheck controller
- Change test for ControlPlaneInitializedCondition in reconcile
- Get MachineHealthCheckSucceededCondition in patchUnhealthyTargets
- Drop failureReson/failureMessage test from needsRemediation
- Change test for ControlPlaneInitializedCondition, InfrastructureReadyCondition in needsRemediation (few places)
- KCP controller
- Change test for MachineEtcdMemberHealthyCondition in canSafelyRemoveEtcdMember + add a test for ClusterHealthy if not already there
- We should use the
Initialized
condition instead of theAvailable
condition to calculate remoteConditionsGracePeriod
- Condition utils
- Rename packages for condition utils (conditions-->deprecated conditions, v1beta2conditions --> conditions)
- Clusterctl
- clusterctl describe (drop v1beta2 flag, introduce deprecated flag, switch default behaviour in the implementation)
- Change metrics & dashboards to use conditions
Others
- Think about version of the Cluster object embedded in lifecycle hooks
improving status Implementation Phase3
TBD
Backlog for improving status
Looking for volunteers (like everything else MachinePools)
- MachinePool conditions
- Implement conditions on MachinePools and MachinePool Machines (UpToDate)
- Revert 🐛 Disable aggregation of not reported MachinePool conditions for Cluster #11416
- DockerMachinePool
- Add v1beta2 struct
- Paused
If and when we have bandwidth
- Drop fake objects from controller tests and use the test/util/builders package