Changes since v0.4.0
📝 Proposals
- Clarify template conventions and template reconciliation rules in the ClusterClass proposal (#5022)
- Add details about ClusterClass reconciliation in ClusterClass proposal (#4918)
⚠️ Breaking Changes
- clusterctl init now supports waiting for deployments to be ready (#4934) —
impact: The interface carries a breaking change (clusterctl library doesn't have any compatibility promises as of today). Library users should add support for the new wait options under init.
✨ New Features
- Upgrade cert-manager to v1.4.0 (#4990)
- Add
api/v1alpha4/index
package to help install default indexes when using controller runtime managers (#5004) - Add webhook readiness and health check (#4989)
- KubeadmControlPlane: Make local etcd's extra args in KCP mutable (#5061)
- KubeadmControlPlane: Add
status.version
field (#5031) - KubeadmControlPlane: Add KubeadmControlPlaneTemplate type (#4904)
- MachineDeployment: Adds
Available
andReady
conditions (#4625) - Clusterctl: Implements Backup and Restore for objectMover (#4808)
- Clusterctl: Add a MemoryRepository for the operator (#4981)
- DockerProvider: Use docker API instead of exec'ing docker cmds (#4413)
- DockerProvider: Add DockerClusterTemplate type (#4903)
- DockerProvider: Set container restartPolicy to unless-stopped (#5021)
- DockerProvider:Add ability to set DockerClusterSpec load balancer (#4951)
- TestFramework: Switch to non-alpine
kindest/haproxy
version (#4964) - ClusterClass: Add types (#4928)
- ClusterClass: Implement ClusterReconciler.clusterClassToCluster function (#5082)
- ClusterClass: Implement getClusterState for topology controller (#5045)
- ClusterClass: Create index for cluster.spec.topology.class (#4967)
- ClusterClass: Add ClusterTopologyController scaffolding (#4965)
🐛 Bug Fixes
- Increase polling interval and timeout in ClusterCacheHealthCheck (#5077)
- Fix clusterctl upgrade cert-manager version detection previously detecting v0.11 when using EndpointSlices (#5051)
- Fix a panic in clusterctl backup (#5050)
- Update envtest listen address to localhost (#5048)
- Wait for volume detach after node drain (#4945)
- Fix webhook service references when the namespace is changed (#5014)
- Surface etcd node check error in KCP (#4997)
- Drop aggressive requeue=true and find machines to nodes by providerID (#4947)
- Missing watch label to allow multiple manager instances (#4929)
- Fix KubeadmControlPlane ClusterRole aggregation (#4952)
- Update CoreDNS ClusterRole for Kubernetes >= 1.22 and CoreDNS >= 1.8.1 (#4937)
- Validate namespace of MHC remediation template (#4944)
- Webhook registration should accept both v1 and v1beta1 admissions (#4942)
- Fix DefaultValidateTest ensuring old object gets defaulted too (#4924)
- Clusterctl: use newest release series of same contract (#4912)
- Fix metric collection in e2e test (#4890)
- Ensure /finalizer permissions for OwnerReferencesPermissionEnforcement admission controller (#4883)
- Use metadata.yaml in github repo to fetch latest release for older contracts (#4866)
- Fix conditional judgment issue in upgradeControlPlane (#4854)
🌱 Others
- Add ykakarap to cluster-api-topology-reviewers (#5084)
- Add Status.NodeInfo to Machine objects (#5079)
- Pass the ClusterTopology feature flag to CAPD and KCP (#5088)
- Upgrade quickstart and e2e tests to Kubernetes v1.22.0 (#5080)
- Reconcile infrastructure cluster for managed topologies (#5052)
- Update Controller Runtime v0.9.6 / envtest Kubernetes 1.22.0 (#5074)
- Migrate envtest setup to envtest.Run, add CAPI_DISABLE_TEST_ENV option (#5030)
- Gate KubeadmControlPlaneTemplate usage with ClusterTopology feature gate (#5068)
- Move the ClusterTopologyReconciler to a separated package (#5071)
- Gate DockerClusterTemplate usage with ClusterTopology feature gate (#5069)
- Compute desired Cluster and its referenced objects for a managed topology (#5002)
- TestFramework: disable metrics collection should not disable watching deployment logs (#5063)
- Add additional validations for clusterclass type (#4992)
- Deprecate partial upgrade tests (#5042)
- Implement twoWayPatchHelper for ClusterClass reconciliation (#5034)
- Cluster topology controller: read clusterclass (#5007)
- Introduce new test CRDs (#5040)
- Randomly generated namespace in controllers pkg tests (#4959)
- KCP: stop caching ConfigMap, Secret, Pod, Deployment and DaemonSet of workload clusters (#5033)
- Randomly generated namespace in util pkg tests (#4963)
- Randomly generated namespace in exp pkg tests (#4962)
- Randomly generated namespace in bootstrap pkg tests (#4960)
- Randomly generated namespace in controlplane pkg tests (#4961)
- Update Controller Runtime to v0.9.5 (#5028)
- Explicitly ignore command injection (in tests) (#5017)
- Upgrade mdbook to v0.4.11 (#5023)
- Make Cluster.spec.topology.controlPlane.replicas optional (#4993)
- Extend the ControlPlane contract defining version and infrastructure machine fields for ClusterClass compat (#4949)
- Add test utils for cluster class (#4986)
- Align ClusterClass ControlPlane with the rest of the fields (#5000)
- Upgrade clusterctl used for e2e test upgrade tests to v0.3.22 (#4995)
- Adds topology check to cluster controller (#4976)
- Add providerID index to get nodes (#4521)
- Use dl.k8s.io instead of hardcoded GCS URIs (#4958)
- test/framework: improve the way we inject the ci-artifacts script (#4420)
- Bump golang to 1.16.6 (#4932)
- Build clusterctl arm64 for linux and darwin (#4861)
📖 Additionally, there have been 16 contributions to our documentation and book. (#5075, #5027, #5039, #5012, #4975, #4977, #4893, #4899, #4925, #4921, #4898, #4892, #4678, #4865, #4849, #4955)
Thanks to all our contributors! 😊