Skip to content

Releases: kubernetes-sigs/cluster-api

v0.3.4

28 Apr 23:25
7cda00b
Compare
Choose a tag to compare

Changes since v0.3.3

✨ New Features

  • Update MHC proposal with new annotation strategy (#2920) — An internal rework of MachineHealthCheck is has been approved and will be ready in a future version. This allows us to better split responsibilities between controllers, and add support for KCP (and other control plane providers) to remediate control plane.
  • Support specific kubeconfig context in clusterctl (#2856) — Allows to pass a specific kubeconfig context to be used when using a kubeconfig. CLI and library users can see the complete list of breaking changes here.
  • Make clusterctl cert-manager timeout configurable (#2834) — Users can now set a custom timeout used when clusterctl installs cert-manager.
  • Add DeleteMachineAnnotation for MachineSet Delete Policy (#2929) — Our api package now exposes a new annotation specific to MachineSet-owned Machine objects called DeleteMachineAnnotation which replaces the now-deprecated DeleteNodeAnnotation.

🐛 Bug Fixes

  • KCP should correctly select machines in failure domains during upgrades (#2833)
  • KCP should check if it has machines being deleted before proceeding with scale up/down (#2958)
  • KCP should now correctly allow custom imageRepository fields to be used for CoreDNS (#2832)
  • KCP should connect to the etcd leader whenever possible for basic operations (#2821)
  • KCP should recover when a Machine is manually deleted (#2841)
  • KCP should re-queue until the control plane is ready (#2907)
  • CABPK should not panic when using external etcd with undefined secrets (#2946)
  • Remove invalid ClusterRoleBinding from CertManager (#2931)
  • Allow webhooks to be called when using --dry-run by reporting no side-effect behaviors (#2868)
  • MachineSet controller should not use Update as a fallback (#2913)
  • Clusterctl shouldn't show invalid URLs when running config provider (#2948)
  • Clusterctl should show config provider without setting env vars (#2905)
  • Clusterctl should return an error if it the given config file doesn't exist (#2899)
  • Clusterctl should not return an error if it cannot find default config (#2951)
  • Clusterctl should now work correctly with variables containing a $ sign (#2858)
  • Clusterctl now validates the minimum Kubernetes version required for a management cluster (#2842)
  • Clusterctl now correctly allows users to override user specified values for control plane and worker machine count (#2597)
  • Clusterctl should now cache GitHub calls (#2848)

📖 Documentation

  • Update roadmap with focus on v1alpha3 (#2882)
  • Document the minimum required management cluster Kubernetes version (#2901)
  • Update MachineDeployment controller image in docs (#2878)
  • Document Docker and KIND prerequisites (#2925)
  • Clarify that MachineHealthCheck only works with MachineSet and MachineDeployment Machines (#2875)
  • Add initial Spot instances proposal (#2817)
  • Add Azure tab for deploy Calico CNI step in Quick Start (#2883)
  • Add subscription id to azure Quick Start (#2853)

🏃 Others

  • Add a library to parse container image name and other fields (#2869)
  • Grant RBAC access to experimental infra api group (#2959)
  • Remove issue-proposals in favor of CAEP process (#2940)
  • Allow extra arguments to be passed when using Tilt (#2932)
  • ‍Remove cmd/clusterctl/test folder, now superseded with new e2e-tests (#2933)
  • Remove annotations on upgradeControlPlane (#2887)
  • Add ci-apidiff job (#2923)
  • Introduce the new clusterctl-based suite of e2e tests (#2884)
    • Increase e2e test timeout (#2942, #2936)
    • Re-organize helpers func (#2922)
    • Add ClusterProvider and ClusterProxy (#2911)
    • Improve and cleanup e2e clusterctl (#2909)
    • Ensure that capd tests always clean up the kind cluster (#2917)
    • Improve management cluster interface (#2893)
    • Add namespace utils to the test framework (#2891)
    • Dump all resources when test ends (#2894)
    • Add log streaming to clusterctl e2e (#2879)
    • Add KCP integration and unit tests (#2802)
  • Improve unit test coverage for KCP (#2862)
  • Add workload cluster unit tests in KCP (#2806)

Thanks to all our contributors! 😊

v0.3.3

27 Mar 22:50
ecff70a
Compare
Choose a tag to compare

Changes since v0.3.2

✨ New Features

  • Support modifying spec.kubeadmConfigSpec.clusterConfiguration.imageRepository (#2794, #2807)
  • Add UseExperimentalRetryJoin to kubeadm bootstrap provider's KubeadmConfig (#2763, #2783) — This allows users to use an experimental script that retries kubeadm join phases when joining control plane or worker nodes.

🐛 Bug Fixes

  • util.{Machine,Cluster}ToInfrastructureMapFunc should exclude version when parsing object references (#2786) — Impact: very minor for infrastructure providers using these functions, no code changes necessary.
  • Use underscores as delimiters for contract labels (#2780) — Impact: Providers should follow new instructions available
  • KubeadmControlPlane: Fix machine selection logic during scale down (#2768)
  • KubeadmControlPlane: Fix a possible NPE when creating a workload cluster client (#2757)
  • Machine controller: Avoid draining nodes when deleting a Cluster (#2746)
  • MachineDeployment controller: actually return errors (#2740)

📖 Documentation

  • Updating Azure quickstart (#2797)
  • Add CAEP to glossary (#2781)
  • Update CAPO image-builder links (#2761)
  • Update OpenStack prerequisites in the ClusterAPI book (#2683)
  • Add IAM pre-requisite notes to AWS quickstart (#2741)

🏃 Others

  • Update controller-runtime to v0.5.2 and controller-tool to v0.2.8 (#2792)
  • Add more unit tests to the kubeadmControlPlane area (#2808)
  • Adds coredns upgrade validations to upgrade e2e tests (#2804)
  • Add missing tests in repository github (#2791)
  • Add etcd e2e tests (#2785)
  • Avoid deleting the e2e tests shared cluster after each test (#2655)
  • Move NewWithT(t) to inside the t.Run where applicable (#2799)
  • clusterctl: Add retries to clustectl move (#2776)
  • clusterctl: Add auth providers support to (#2684)
  • clusterctl: Add retries to create inventory (#2752)
  • Add e2e kube-proxy version check (#2773)
  • Enable all docker e2e tests for CI (#2758)

Thanks to all our contributors! 😊

v0.3.2

19 Mar 20:02
867b2af
Compare
Choose a tag to compare

Changes since v0.3.1

✨ New Features

  • clusterctl: local overrides (#2679) — Adds configurability to the overrides directory from within the clusterctl config yaml file, clusterctl still defaults to ~/.cluster-api/overrides if this property is not specified.
  • Validates CoreDNS version update (#2707, #2725, #2699) — Adds validation for CoreDNS upgrade compatibility in the KCP webhook.
  • LeaderElection configuration as flags (#2664) — Expose --leader-election-lease-duration, --leader-election-renew-deadline, and --leader-election-retry-period flags to customize the leader election parameters.

🐛 Bug Fixes

  • KubeadmControlPlane: Move etcd leadership to newest Machine when upgrading (#2695, #2525, #2726, #2700, #2698, #2696) — Ensures that we only move etcd once, instead of N times (N = number of replicas).
  • KubeadmControlPlane: Remove a troublesome annotation (#2711) — An annotation was previously used to keep track of the upgrade status but it caused reentrancy issues if the controller lost connectivity or crashed, we now query the source directly.
  • KubeadmControlPlane: Set a timeout when trying to connect to remote workload clusters (#2708) — When contacting the remote workload cluster (e.g. during health checks, status updates, or other operations) we now have a timeout of 30s (hardcoded), while before the clients were waiting indefinitely.

Thanks to all our contributors! 😊

v0.3.1

16 Mar 22:57
21c07c9
Compare
Choose a tag to compare

Changes since v0.3.0

🐛 Bug Fixes

  • Normalize container image name for kube-proxy, and validate Kubernetes versions (#2691)
  • Ensure Machine infrastructure reference is deleted before deleting the Kubernetes Node (#2570)
  • Validate MachineHealthCheck's MaxUnhealthy strings are percentages (#2648)
  • Fix a possible panic in KubeadmControlPlane when ClusterConfiguration is nil (#2641)

📖 Documentation

  • Show Azure tab in Tilt docs (#2692)
  • Update minimum tilt version (#2649)
  • Update quick start guide for flow and update parameters for AWS, Azure and vSphere (#2628)
  • Update clusterctl overview to remove confusion on presence of GUI (#2663)

🏃 Others

  • Update KubeadmControlPlane proposal to reflect implementation changes (#2390)
  • Increase default concurrency for KubeadmControlPlane controller to 10 (#2625)
  • Bump controller-tools to v0.2.6 (#2631)
  • Use controller-runtime cache for watching remote nodes over informers (#2496)
  • Add semver version validation rules to Machine.Spec.Version and KubeadmControlPlane.Spec.Version validation (#2674, #2647)
  • Mark defaulted kubeadm v1beta1 internal types fields as optional (#2678)
  • Standardize tests around gomega (#2680, #2681, #2645, #2673, #2668, #2643, #2638, #2632, #2614, #2667)
  • Migrate KubeadmControlPlane main from flags to pflags (#2656)
  • clusterctl repository-local supports windows (#2661)
  • clusterctl: log which value clusterctl mover is setting when pausing (#2687)
  • clusterctl: use exponential backoff (#2666)

Thanks to all our contributors! 😊

v0.3.0

10 Mar 19:54
b6aad25
Compare
Choose a tag to compare

🚨 This is a MAJOR release. A number of breaking changes exist in this release.

Proposals implemented in this release

Kubeadm based control plane

Clusterctl v2

Machine Health Checking and Remediation

MachinePool (experimental)

Getting started

Upgrading from v1alpha2

To upgrade from a running management cluster based on v1alpha2, follow these instruction in the book.


Changes since v0.3.0-rc.3

✨ New Features

  • Upgrade CoreDNS image info during KCP reconcile (#2574)
  • Upgrade kube-proxy daemonset as part of KCP upgrades (#2559)
  • Upgrade etcd version as part of KCP upgrades (#2579)
  • clusterctl: improve support for air-gapped environments all image overrides (#2586)
  • clusterctl: allow cert-manager image overrides (#2558)
  • Add MachineHealthCheck remediation logic (#2494)

🐛 Bug Fixes

  • Fix NPE when validating KCP etcd settings (#2616)

📖 Documentation

  • Update provider documentation for failureDomains (#2623)
  • clusterctl: doc config for air-gapped environments (#2595)
  • clusterctl based quick-start (#2590)
  • Add documentation around KubeadmControlPlane (#2607)
  • Add message about possible problem when doing clusterctl move (#2588)
  • Add documentation for MachineHealthChecks (#2567)
  • Add instructions for providers to upgrade to CRD v1 (#2551)

🏃 Others

  • Allow upgradeAfter field to be modifiable (#2604)
  • Allow KCP spec.version to be mutable (#2582)
  • Add validation for not having both local and external etcd in control plane (#2598)
  • Be consistent with versioning in KubeadmControlPlane (#2624)
  • Remove private APIs from Kubeadm v1beta1 types (#2605)
  • Loosen webhook validation on control plane to allow etcd changes (#2553)
  • Pass a stripped down object to controller.Watch (#2576)
  • Clean up go modules across repository (#2552)
  • Add NoExecute taint check for KubeadmControlPlane nodes (#2550)
  • Modify Metal3 provider repository (#2540)
  • cmd-clusterctl-api/tests: standardize gomega imports - follow up (#2615)
  • tests: standardize gomega imports - Follow up (#2589)
  • tests: standardize gomega/ginkgo imports (#2571)

Thanks to all our contributors! 😊

v0.3.0-rc.3

05 Mar 01:01
802230a
Compare
Choose a tag to compare
v0.3.0-rc.3 Pre-release
Pre-release

Changes since v0.3.0-rc.2

⚠️ Breaking Changes

  • Add exp/ package with MachinePool (#2512)
  • clusterctl: cleanup the directory structure under cmd/clusterctl and remove the pkg directory (#2508)

✨ New Features

  • clusterctl: upgrade to a specific set of provider versions (#2504)
  • Adds kubernetes networking to capd e2es (#2506)
  • Add custom Type field to all bootstrap data secrets (#2443)
  • Add Health Check logic to MachineHealthCheck Reconciler (#2250)
  • KubeadmControlPlane - Try all nodes except one being removed when removing etcd member (#2435)

🐛 Bug Fixes

  • clusterctl: add retries on create objects (#2524)
  • clusterctl: improve connection error messages (#2526)
  • clusterctl: version command does not show correct output (#2491)
  • Requeue while cluster's control plane object is being deleted (#2519)
  • Actually set Status.LastUpdated on Machine when Status.Phase changes (#2465)

📖 Documentation

  • Add a section about matchPolicy to "v1alpha2 to v1apha3" doc (#2538)
  • Update controller images in book (#2529)
  • Upgrade v1alpha2 to v1alpha3 documentation (#2520)
  • Rename Metal3.io provider from Baremetal to Metal3 (#2462)

🏃 Others

  • Fix all 404s in book and add a verify script to ensure there are no 404s (#2531)
  • Set matchPolicy to Equivalent for validation and mutation webhooks (#2533)
  • cloud init package has reduced responsibilities (#2517)
  • Wire up kubeadm control plane Ready status (#2488)
  • Use controller-runtime's client ObjectKey instead of types.NamespacedName (#2502)
  • Disable Interfacer Linter (#2511)
  • Update KCP hash to include KubeadmConfigSpec (#2392)
  • Bump Go to 1.13.8 (#2492)
  • Refactors config reconciliation to the workload cluster and tests it (#2482)
  • KCP: set managementCluster in SetupWithManager (#2485)
  • fetch_ext_bins now checks existing version before downloading (#2481)
  • Refactor workload cluster out of cluster (#2477)
  • Add unit tests for health check function (#2472)
  • Use go-bindata/go-bindata@v3.1.2 (#2471)
  • refactor the etcd client in the cluster object (#2470)
  • Add validation webhook check to make Spec.ClusterName immutable (#2463)

Thanks to all our contributors! 😊

v0.3.0-rc.2

27 Feb 00:10
f0bc103
Compare
Choose a tag to compare
v0.3.0-rc.2 Pre-release
Pre-release

Changes since v0.3.0-rc.1

⚠️ Breaking Changes

  • Remove unused functions from the util package (#2417) — impact: if you're using these functions please file an issue or find alternatives.

✨ New Features

  • Implement KubeadmControlPlane upgrade functionality (#2334)
  • Add extra printer columns to machinesets (#2426)
  • Moved MachineDeployment Cluster Label Name to webhook (#2308)
  • Remove ConfigMap's entry when doing a KubeadmControlPlane scale down (#2383)
  • Remove etcd membership when doing a KubeadmControlPlane scale down (#2382)
  • Centralize common validations for kubeadmcontrolplane webhooks, also add support for mutating the KubeadmConfigSpec minus InitConfiguration/JoinConfiguration (#2388)

🐛 Bug Fixes

  • Add a cluster watcher in the machine controller to reconcile after a cluster is unpaused (#2432)
  • Recognize MachinePool as a bootstrap config owner (#2406)
  • KubeadmControlPlane: expect timeout from target cluster load-balancer (#2409)
  • Report all KCP healthcheck errors (#2451)
  • The function util.EnsureOwnerRef should ignore version when comparing objects (#2411)
  • Fix handling pre-releases in mdbook (#2368)

📖 Documentation

  • Update our community blurb (#2399)

🏃 Others

  • Add Cecile to reviewer list (#2376)
  • Use a better loadbalancer for capd (switch to haproxy) (#2436)
  • Add the Azure infrastructure provider (CAPZ) in clusterctl pre-defined providers list (#2419)
  • Disallow modification of KCP kubeadm config spec (#2394)
  • KubeadmControlPlane scale down improvements (#2381)
  • Push logger further down into KubeadmControlPlane reconciliation methods (#2380)
  • Kubeadm control plane validating webhook: forbid scaling to zero (#2384)
  • Cleanup FailureDomain support for KubeadmControlPlane (#2379)

Thanks to all our contributors! 😊

v0.3.0-rc.1

20 Feb 04:44
13d26a5
Compare
Choose a tag to compare
v0.3.0-rc.1 Pre-release
Pre-release

Changes since v0.3.0-rc.0

⚠️ Breaking Changes

  • Remove use of apiutil.NewDynamicRESTMapper (#2329)
  • Package remote.{NewClusterClient, RESTConfig} now accepts client.ObjectKey instead of *clusterv1.Cluster (#2358)

✨ New Features

  • Adding feature-gates flag for experimental features (#2359)
  • MachinePool API Controller Implementation (#1952)

🐛 Bug Fixes

  • Machine controller should expect bootstrap data only in secret (#2373)
  • KubeadmBootstrapConfig's passwd field in v1alpha2 is omitempty since its optional (#2361)
  • Add ca injection for kubeadmconfigtemplate (#2360)
  • Add scheme registration for CustomResourceDefinition and List (#2347)
  • clusterctl: Allows usage providers with the same name but different type (#2355)
  • clusterctl: reset commandline flags (#2354)
  • clusterctl: allow to get templates from repository without cluster (#2353)

📖 Documentation

  • Fix book CSS for 7th column on provider tab (#2375)
  • update tilt docs "Azure kustomize_substitutions Tab" (#2333)
  • fix FailureDomains doc (#2367)
  • change some tab displays in the cluster-api book (#2351)
  • Fixes broken link clusterctl configuration #2340 (#2342)

🏃 Others

  • Adds machine filters and FilterableMachineCollection (#2374)
  • clusterctl: Add baremetal provider in clusterctl pre-defined providers list (#2357)

Thanks to all our contributors! 😊

v0.2.10

19 Feb 19:40
64775e2
Compare
Choose a tag to compare

Changes since v0.2.9

⚠️ Breaking Changes

  • Add preserveUnknownFields=false marker (#2366) — impact: minor, folks need to update their CRDs and components. This change is required before any upgrade to CRD v1 or CAPI v1alpha3 can be performed.

✨ New Features

  • Add clusterctl labels to CAPI components (#2112)

🐛 Bug Fixes

  • Fix handling pre-releases in mdbook (#2362)
  • Import (and enable) pprof (#2084)

📖 Documentation

  • Support KIND >= v0.6.x (#2179)
  • How to verify control-plane is running (#2137)

The image for this release is: us.gcr.io/k8s-artifacts-prod/cluster-api/cluster-api-controller:v0.2.10.

Thanks to all our contributors! 😊

v0.3.0-rc.0

15 Feb 00:08
4fd4c7f
Compare
Choose a tag to compare
v0.3.0-rc.0 Pre-release
Pre-release

🚨 This is a RC release. A number of breaking changes exist in this release.

Images and artifacts for pre-release versions might be deleted in a future date.

The image for this release is: us.gcr.io/k8s-artifacts-prod/cluster-api/cluster-api-controller:v0.3.0-rc.0.