Skip to content

Releases: kubernetes-sigs/cluster-api

v0.4.4

06 Oct 15:39
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! 😊

v1.0.0-rc.0

29 Sep 02:24
573f005
Compare
Choose a tag to compare
v1.0.0-rc.0 Pre-release
Pre-release

🚨 This is a RELEASE CANDIDATE. Use it only for testing purposes, if you find any bugs file an issue.

v0.4.3

20 Sep 18:50
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! 😊

v0.4.2

24 Aug 21:07
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! 😊

v0.3.23

23 Aug 21:31
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! 😊

v0.4.1

12 Aug 23:40
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! 😊

v0.3.22

21 Jul 18:07
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! 😊

v0.3.21

15 Jul 22:48
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! 😊

v0.3.20

30 Jun 23:01
ea9dc4b
Compare
Choose a tag to compare

Changes since v0.3.19

🐛 Bug Fixes

  • Use metadata.yaml in github repo to fetch latest release for older contracts (#4867)

🌱 Others

  • Add v1alpha4 to metadata.yaml (#4871)
  • include deamonsets in list images in clusterctl - 0.3.x (#4859)

Thanks to all our contributors! 😊

v0.4.0

24 Jun 21:57
7f879be
Compare
Choose a tag to compare

v0.4.0, The stability focused release

Welcome to v0.4 / v1alpha4. This release is a major step forward in our API and code stability. There are a number of breaking changes in this release and a large list of bug fixes.

🔦 Highlights

  • Our test matrix, for both end-to-end and integration, has been greatly extended in this release.
  • KubeadmControlPlane now supports automatic remediation (when setup with MachineHealthCheck), extended mutable spec fields, and the ability to customize the rollout strategy.
  • MachineHealthCheck is now more flexible, with new capabilities such as external remediation and skipping remediation on paused machines.
  • Externally managed infrastructure: infrastructure provider can give the ability to external systems to reconcile their own InfraCluster objects (e.g. AzureCluster, AWSCluster, etc).
  • Clusterctl has been improved, with a new generate command to replace config, an option to view optional template variables and their defaults, and a new alpha rollout command.

Upgrading from v0.3

Users

To upgrade from a running management cluster based on v0.3.x and v1alpha3 APIs, follow these instruction in the book.

Providers

For all providers or developers implementing Cluster API, please follow the dedicated instructions in the book.

📝 Proposals

  • Cluster API Provider Operator (#3833)
  • Insulate users from kubeadm API version changes (#4170)
  • Add support for infrastructure cluster resources to be managed externally (#4135)
  • Windows Support (#3616)
  • Replace ExternalRemdiationTemplate with RemediationTemplate in MHC proposal (#4528)
  • Update KCP proposal disambiguating healthcheck (#4093)
  • Update KCP proposal with scale in (#3857)
  • Update spot instances proposal with interruptible label setting (#3817)

⚠️ Breaking Changes

  • Update Go to 1.16
  • Update Kind to v0.11.x (#3815)
  • Upgrade cert-manager to v1.1.0 (#4013)
  • The management cluster minimum Kubernetes version is v1.19.1 (#3746)
  • Use separate service accounts for each manager (#4245)
  • Remove kube-rbac-proxy and expose metrics on localhost:8080 (#4640)
  • MachineDeployment MaxUnavailable and MaxSurge values: drop usage of deprecated GetValueFromIntOrPercent in favour of GetScaledValueFromIntOrPercent (#4532)
    small impact: Only values allowed are of type Int or Strings with an integer and percentage symbol e.g 5%.
  • MachineHealthCheck: node startup timeout now requires control plane initialized and cluster infrastructure readiness before starting the countdown (#3752)
  • MachineDeployment, MachineSet, and MachinePool Machine's template metadata now only exposes labels and annotations (#4363)
    impact: The metadata section for templated objects (for example MachineDeployment's spec.template.metadata) was exposing non-functional fields like name, generateName, namespace, or ownerReferences; these fields weren't used anywhere in the codebase and have been removed.
  • Align flag names with upstream Kubernetes components (#3934)
    impact: --metrics-addr ==> --metrics-bind-addr
    --leader-election ==> --leader-elect
  • Run mutating, validating, and conversion webhooks with managers (#3985)
    impact: Previously webhooks were running in a different namespace from the manager (capi-webhook-system). To simplify our deployment model, our published images and binaries now run the webhook server by default.

Clusterctl

  • Add --raw flag for clusterctl generate provider subcommand (#4768)
  • Use native zsh completion (#4113)
  • When the build is on v1alpha4 should not upgrade to v1alpha3 contract (#4202)
  • The infrastructure provider DigitaloOcean was renamed to digitalocean (previously do) (#3809)
  • Deprecate clusterctl config in favor of clusterctl generate (#4584)

Kubeadm Control Plane

  • Move spec.nodeDrainTimeout to spec.machineTemplate.nodeDrainTimeout (#4815)
  • Rename spec.upgradeAfter to spec.rolloutAfter (#4535)
  • Stop updating and using Kubeadm's ClusterStatus with Kubernetes v1.22 (#4643)
  • Support metadata for machines under spec.machineTemplate.metadata and propagate to all templated resources (#4644)

Kubeadm Bootstrapper

  • Remove deprecated Machine spec.bootstrap.data (#4000)
  • Default Kubelet cgroupDriver to systemd for Kubernetes >= 1.21 (#4236)
  • Generate kubeadm config files under /run/kubeadm instead of /tmp (#3776)

Experimental Features

  • Change MachinePool experiment API group to cluster.x-k8s.io (#4574)
  • Remove unused MachinePool spec.strategy (#3990)

⚠️ 👩‍💻 Breaking Changes for developers

  • Update Controller Runtime to v0.9.x (#4752)
  • Introduce the sigs.k8s.io/cluster-api/test Go Module (#4713)
    moderate impact: importing the test e2e framework or the docker infrastructure provider (CAPD) now requires a new go module dependency and a replace directive for Cluster API in your go.mod.
  • Move envtest setup under internal/envtest (#4698)
    small impact: the package is not functional if used outside of the Cluster API repository.
  • Remove helpers.NewFakeClientWithScheme (#4690)
    small impact: The function was previously used with the Controller Runtime fake client which did not initialize objects' ResourceVersion, this has been fixed upstream and now removed.
  • Accept options in remote.NewClusterCacheTracker (#4693)
    small impact: This function was accepting positional arguments which have now been replaced by an option-based struct.
  • Remove RequeueAfterError (#3929)
  • Unexport MachineHealthCheck patchUnhealthyTargets method (#4579)
  • Remove Kubeadm DNS type field from types (#4547, #4516)
    impact: This field was always defaulted to coreDNS and was immutable.
  • Remove ClusterConfiguration.UseHyperKubeImage from v1alpha4 (#4545)
  • Clean up deprecated variables/functions in v1alpha4 (#4078)
  • Remove the example provider (#3992)
  • Move version package from cmd/version to version (#4070)
  • Add GVK object validation to patch helper (#4212)
    minimal impact: This change adds extra validation to the helper library, a patch helper created with a specific GVK can only be used with that GVK throughout its lifetime.
  • Set user agent and timeout for remote cluster client (#4060)
  • Remove deprecated DeleteNodeAnnotation annotation (#3955)
  • Add required coordination/leases RBAC for new default Controller Runtime manager leader election method (#3756)
    small impact: RBAC permissions have been updated for all manager.
  • Add sentinel file to signal successful bootstrapping (#4084)

Test Framework

  • Add MachinePool to log collector (#4575)
  • Remove deprecated functions (#3741, #3742)
  • Resolve CNI_RESOURCES without using env vars (#3896)
  • Wait for all the machine to exist again after remediation (#4415)
  • Add result parameter to ApplyClusterTemplateAndWait (#4125)
  • Use Kind's default network in CAPD (#4002)

Clusterctl library

  • Make clusterctl support for cert-manager more flexible (#4748)
  • Add --raw flag for clusterctl generate provider subcommand (#4768)
  • Adapt clusterctl to webhook deployed with managers (#4297)
  • Rename clusterctl client/inventory.GetDefaultProvider<> to GetProvider<> (#4696)
  • Remove clusterctl --watching-namespace (#4666)
  • Remove clusterctl management groups (#4668)
  • Remove clusterctl delete --namespace flag (#4674)
  • Block execution when used with v1alpha3 management clusters (#4199)
  • Deprecate Provider.WatchedNamespace (#4694)
  • Remove embedded metadata from clusterctl (#4033)
  • Remove hard code manifest version and hash (#3918)

✨ New Features

  • Add Cluster API Provider Nested (#4792, #4793)
  • Add Cluster API Provider GCP (#4001)
  • CAPD: Add ipv6 support (#4558)
  • Add watch label to allow multiple manager instances (#4119)
  • Add externally managed annotation and predicate (#4303)
  • Clusterctl: Show required and defaults in clusterctl generate cluster <name> --list-variables (#4645)
  • Clusterctl: alpha rollout pause/resume/undo/restart for MachineDeployments (#4054, #4098, #3838)
  • KubeadmControlPlane: Make NTP settings mutable in webhook validations (#4798)
  • KubeadmControlPlane: Add rollout strategy support for KCP (#4073)
  • KubeadmControlPlane: Make KCP Spec mutable (#3994)
  • KubeadmControlPlane: KCP remediation (#3956)
  • KubeadmControlPlane: Mark specific KCP machines with delete annotation for scaling down (#3948)
  • MachineDeployment: Support deletePolicy (#3773)
  • MachineDeployment: Add support for OnDelete rollout strategy (#4346)
  • MachineDeployment: Add annotation support to util.CloneTemplate to pass them down from templates to machines (#4568)
  • MachineHealthCheck: Allow users to disable NodeStartupTimeout (#4471)
  • MachineHealthCheck: Add support to skip Machine remediation, and respect paused Machines (#4168)
  • MachineHealthCheck: Add remediationsAllowed field to status (#3884)
  • MachineHealthCheck: Support external remediation (#3882)
  • MachineHealthCheck: Adds machine health check conditions to Machine Ready condition (#3705)
  • MachineHealthCheck: Support range of values for unhealthy machines in machine health check spec (#4128)
  • Label interruptible nodes (#3668)

🐛 Bug Fixes

  • Cluster: Include MachinePool objects in descendant count when deleting a Cluster (#4295)
  • Machine: status.phase should be provisioned when there is a ProviderID and no Node yet (#4787)
  • Machine: Add ability for the nodeToMachines mapper to filter by Cluster's name and namespace (#4513)
  • Machine: Node deletion should check the cause of the error (#3966)
  • MachineDeployment: ...
Read more