Skip to content
2887be8
Compare
Choose a tag to compare

Changes since v1.0.0

🐛 Bug Fixes

  • Clusterctl: Restore operation should set tenants on the new object graph constructed from files in the backup directory (#5626)
  • MachineSet spec.template.spec.version validation now behaves like the rest of the codebase (#5560)
  • Use release tag as git version for building clusterctl binaries (#5559)
  • KubeadmControlPlane: don't run validation webhook on scale (#5561)

🌱 Others

  • Upgrade to controller-runtime v0.10.3 (#5632)
  • Use Kubernetes version instead of Upgrade to/from in the test framework (#5589)
  • ClusterTopology: Reconciler should print the correct log lines (#5584)
  • Add pre-init hook to clusterctl upgrade test (#5541)
  • Add ibmcloud provider support (#5646)

📖 Additionally, there have been 1 contributions to our documentation and book. (#5655)

Thanks to all our contributors! 😊

e09ed61
Compare
Choose a tag to compare

v1.0.0, The production ready release

Welcome to v1.0 / v1beta1. This release is the result of growing adoption, feature maturity, and a strong commitment to community and inclusive innovation. We would like to thank all our contributors that made the Cluster API project what it is today.

Read the CNCF blog post announcement to learn more about the experience of companies using Cluster API in production.

⚠️ Breaking Changes

  • Introduce v1beta1 API types (#5248)
  • Controller Managers leader election has been migrated to Kubernetes v1.Lease object instead of configmaps (#5388) — Impact: No impact for clusterctl users, the CLI automatically scales down older manager deployments before applying the new ones. For users not using clusterctl, you should make sure to manually scale down the older deployment first before applying the new components.
  • Remove Condition suffix from EtcdClusterHealthyCondition name (#5344) — Impact: Use EtcdClusterHealthy.
  • Remove Machine status.version (#5315) — Impact: the field was unused before and never set.
  • Make condition.lastTransitionTime required (#5303)
  • ClusterToObjectsMapper: replace runtime.Object parameter with client.ObjectList (#5391)
  • Move controllers/mdutil into an internal package (#5297)
  • Upgrade to Controller Runtime v0.10, Controller Tools v0.7, Kubernetes v1.22, and dependencies (#5249, #5402, #5382)

🐛 Bug Fixes

  • KubeadmControlPlane: should cleanup OwnerRemediated condition if the machine goes back to healthy (#5381)
  • Clusterctl: fix Certificate target namespace (#5372)
  • Use the watch filter label when watching resources (#5358)
  • Propagate MachineSet's spec.template.annotations to bootstrap config (#5365)
  • Fix CAPD v1alpha3 => v1beta1 conversion (#5360)
  • Clusterctl upgrade: ensure old controllers are gone before installing the new ones (#5354)
  • KubeadmControlPlane status.updated should be calculated appropriately (#5353)
  • ClusterClass: Add permission for updating ClusterClass objects to the topology controller (#5343)
  • Clusterctl: enforce provider order during init and upgrade (#5321)
  • Testing: Fix Kubernetes v1.22 => latest upgrade e2e (#5313)
  • Remove duplicated import statements (#5296)
  • Change delete behaviour to respect inventory (#5044)
  • Release Tooling: Version calculation script should only use annotated tags (#5270)
  • Fix make serve on MacOS to not rely on coreutils (#5401)

🌱 Others

  • Clusterctl: Add support for v1alpha3 to v1beta1 upgrades (#5271)
  • Upgrade cert-manager to 1.5.3 (#5299)
  • Add version.Compare with CompareOptions (#5364)
  • Add organizations to cert-manager certificates (#5387)
  • Allow passing in provider contract and clusterctl binary in the clusterctl upgrade spec (#5377)
  • Clusterctl upgrade: enforce that --contract or provider flags have to be set (#5386)
  • Add required/default case to API conventions (#5362)
  • Add cluster name on printer column on non core types (#5334)
  • Update main branch book link (#5335)
  • Update netlify config after default branch rename (#5331)
  • Testing: improve error logging for clusterctl init/upgrade with binary (#5328)
  • Add omitempty to +optional fields, drop omitempty for some status fields (#5305)
  • Update errors pkg doc to reflect intended usage (#5317)
  • Change a few more references from master branch to main branch (#5312)
  • Add missing optional tag to omitempty fields (#5301)
  • Add conversion-verifier to always verify conversion code (#5293)
  • Remove deprecated items from the codebase for v1beta1 (#5288)
  • Add script to install Kind for testing with CAPD (#5232)
  • Add composable matchers to internal/testtypes (#5259)
  • Change all references to master branch in docs to main branch (#5276)
  • Rename default branch to main in scripts (#5275)
  • Add Machinepool, DockerMachinePool, ClusterResourceSet, and ClusterResourceSetBinding conversion (#5280, #5267, #5286)
  • Clusterclass: use live client to list MachineDeployments (#5274)
  • CAPD: Add conversion tests for v1alpha3 and v1alpha4 (#5273)

📖 Additionally, there have been 9 contributions to our documentation and book. (#5374, #5384, #5376, #5366, #5304, #5326, #5278, #5310, #5264)

Thanks to all our contributors! 😊

d50c55d
Compare
Choose a tag to compare

Changes since v0.4.3

🐛 Bug Fixes

  • clusterctl: fix Certificate target namespace (#5380)
  • Use the watch filter label when watching resources (#5379)
  • clusterctl upgrade: ensure old controllers are gone before installing the new ones (#5359)
  • Add permission for changing ClusterClass to topology controller (#5345)
  • Clusterctl enforce provider order during init and upgrade (#5322)
  • Release Tooling: Version calculation script should only use annotated tags (#5272)

🌱 Others

  • Upgrade cert-manager to 1.5.3 (#5329)
  • Deprecate controllers/mdutil package, moving to internal (#5298)

Thanks to all our contributors! 😊

573f005
Compare
Choose a tag to compare
a3e4b37
Compare
Choose a tag to compare

Changes since v0.4.2

New Features

  • Add MachineSet Status.Conditions to for Machine Create and Ready (#5056)
  • Upgrade support for managed topologies (#5178)
  • Add maas provider to clusterctl (#5181)

🐛 Bug Fixes

  • Fix a bug that completion suggestions for --namespace are not updated (#5247)
  • Add backported rolloutStrategy to KCP v1alpha3 to fix KCP conversion (#5237)
  • Fix panic in clusterctl describe from nil reference (#5228)
  • IsScaling error handling in control plane contract (#5235)
  • Add watches for infras and control plane in topology controller (#5221)
  • Implement template deletion for topology-owned MD and MS (#5191)
  • Fix flaky TestGetWorkloadCluster test (#5223)
  • Fix flaky TestPatchHelper test (#5215)
  • Allow move cmd idempotent by making it tolerant to a known kubernetes issue (#5185)
  • Add AGE column to our CRDs (#5180)
  • KubeadmControlPlane: stop reconciling ObjectMeta into the KCP machine template (#5187)
  • [e2e framework] Avoid NPE when KCP does not specify ClusterConfiguration (#5182)
  • ClusterClass : fix propagate metadata to machines, KCP fix propagate annotations (#5173)
  • Clusterctl: Log in restore cmd causing crashes (#5177)
  • util/GetGVKMetadata: fix get PartialObjectMetadata (#5172)
  • Fix reconciler keys in our reconciler loggers (#5170)
  • ClusterClass: use namePrefix func consistently, fix MachineDeployment template rotation (#5164)
  • CAPD: fix panic in DockerMachinePool reconciliation (#5167)
  • ClusterClass: control plane infrastructure machine template rotation (#5158)
  • Set unhealthyLimitKey for logging always (#5110)
  • Fix formatting error in ClusterClass proposal (#5154)

🌱 Others

  • Clusterctl now supports completion support for cluster resources (#5251)
  • Clusterctl now supports dynamic completion for context in kubeconfig and namespace (#5094)
  • Update calico version in quickstart guide (#5261)
  • Update Go to 1.16.8 (#5243)
  • ClusterClass: Small cleanups to tests (#5225)
  • CAPD: improve image build caching (#5242)
  • Deprecate unused MachineDeployment constants (#5241)
  • Add missing constants to v1alpha3 package from release-0.3 (#5238)
  • Use .Index func when building field.Paths (#5231)
  • ClusterClass: Cleanup error handling and templateNamer (#5153)
  • ClusterClass: Add ClusterTopologyMachineDeploymentLabelName to MachineDeployment templates (#5209)
  • ClusterClass: Make Cluster topology controlPlane optional (#5165)
  • ClusterClass: Propagate topology labels to MachineSets and Machines (#5211)
  • ClusterClass: Update tests with builders (#5137)
  • ClusterClass: Cleanup topology reconcile logs (#5134)
  • Allow cluster class compatible changes (#5213)
  • Use Complete() instead of Build() when there is no need to return a controller (#5210)
  • Add Cluster name as printer column on core types (#5202)
  • Tilt should reload CABPK and KCP on go.mod changes (#5201)
  • Upgrade to controller-runtime v0.9.7 and Kubernetes 1.21.4 (#5200)
  • Add GitHub Action to automate creating a release (#5188)
  • Add stmcginnis as a reviewer (#5179)
  • Update golangci-lint to 1.42.0, enable more linters (#5166)
  • KubeadmControlPlane: convert infrastructure machine ref API contract (#5143)
  • KubeadmControlPlane: internal/proxy should use pointer structs (#5161)
  • Conversion of references should use a CR client (#5160)
  • Add reconciler name to loggers for context (#5151)
  • Add killianmuldoon to cluster-api-topology-reviewers (#5155)
  • Create internal package for object builders (#5055)
  • Move Predicates allow logs to verbosity level 6 (#5148)
  • Test: allow for overriding flavor for all e2e tests (#5186)
  • Clusterctl: Add a MemoryReader for the operator to place config from a secret (#4980)

📖 Additionally, there have been 3 contributions to our documentation and book. (#4390, #5149, #5150)

Thanks to all our contributors! 😊

dd8048c
Compare
Choose a tag to compare

Changes since v0.4.1

⚠️ Breaking Changes

  • Upgrade cert-manager to 1.5.0 (#5118)
  • Refactor the ClusterClass codebase and reconciler around a scope (#5119)

New Features

  • Reconcile MachineDeployment topologies (#5072)
  • [e2e framework] Add ability to run pre and post actions during clusterctl upgrade spec (#5093)
  • [e2e framework] Allow cluster upgrade spec to work without MachinePools (#5092)

🐛 Bug Fixes

  • KubeadmControlPlane should allow to change the machineTemplate's apiVersion (#5131)
  • KubeadmControlPlane rolloutstrategy should be defaulted in openapi (#5138)
  • Fix blueprint.HasMachineDeployments (#5128)
  • Fix panic in cluster class reconcile (#5111)
  • Clusterctl: fix target namespace in v1beta1 CRDs and WebhookConfigurations (#5096)

🌱 Others

  • Enable envtest with kind (#5102)
  • Create internal/contract package for ClusterClass (#5140)
  • Bump clusterctl upgrade test to CAPI v0.3.23 (#5144)
  • Create internal/check package for ClusterClass (#5135)
  • Envtest: enable ClusterClass webhook (#5126)
  • Fix nil pointer in ClusterClass webhook ref validation (#5127)
  • Add mergehelper IgnorePath option (#5129)
  • Move topology/mergepatch helper to an internal package (#5117)
  • Fix clusterctl upgrade e2e test (#5100)
  • Make the MergePatchHelper skip metadata fields computed by the system and status (#5116)
  • Add namespace defaulting for ClusterClass ControlPlane MachineInfrastructure (#5090)
  • Cleanup controllers/topology code, add more comments (#5114)
  • Reconcile control plane resources in ClusterClass (#5101)
  • Intentionally ignore Deferring unsafe method Close on type *os.File (#5106)
  • Adds logic to generate machine deployments (#5070)
  • e2e tests: make the management cluster Kubernetes version configurable (#5081)

📖 Additionally, there have been 7 contributions to our documentation and book. (#4985, #5109, #5105, #5104, #5113, #5107, #5103)

Thanks to all our contributors! 😊

c1907f4
Compare
Choose a tag to compare

Changes since v0.3.22

New Features

  • KubeadmControlPlane: block management cluster updates to v1.22.0 (#5013)
  • Block clusterctl init and move on Kubernetes v1.22 (#4984)

🐛 Bug Fixes

  • KubeadmControlPlane: spec.rolloutStrategy should be defaulted in openapi (#5139)
  • Pin cgroupDriver to cgroupfs in CAPD (#5009)

Thanks to all our contributors! 😊

f6fd5ed
Compare
Choose a tag to compare

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 and Ready 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! 😊

dfeb8d4
Compare
Choose a tag to compare

Changes since v0.3.21

🐛 Bug Fixes

  • cherry-pick: update CoreDNS ClusterRole (Kubernetes>=1.22,CoreDNS >= 1.8.1) (#4957)

🌱 Others

  • Switch to non-alpine kindest/haproxy version (#4968)

Thanks to all our contributors! 😊

7c11298
Compare
Choose a tag to compare

Changes since v0.3.20

⚠️ Breaking Changes

  • generate capk kubadm config files under /run/kubeadm/ instead of /tmp (#4884)

🐛 Bug Fixes

  • clusterctl: use newest release series of same contract (#4923)
  • Fix the observedGeneration update (#4920)

Thanks to all our contributors! 😊