Releases: kubernetes-sigs/cluster-api
v0.3.4
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 calledDeleteMachineAnnotation
which replaces the now-deprecatedDeleteNodeAnnotation
.
🐛 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
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 retrieskubeadm 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
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
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
andKubeadmControlPlane.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
🚨 This is a MAJOR release. A number of breaking changes exist in this release.
Proposals implemented in this release
Kubeadm based control plane
- Proposal: https://github.com/kubernetes-sigs/cluster-api/blob/master/docs/proposals/20191017-kubeadm-based-control-plane.md
- In depth controller overview: https://cluster-api.sigs.k8s.io/developer/architecture/controllers/control-plane.html
- Upgrades: https://cluster-api.sigs.k8s.io/tasks/kubeadm-control-plane.html#upgrading-workload-clusters
Clusterctl v2
- Proposal: https://github.com/kubernetes-sigs/cluster-api/blob/master/docs/proposals/20191016-clusterctl-redesign.md
- Overview: https://cluster-api.sigs.k8s.io/clusterctl/overview.html
Machine Health Checking and Remediation
- Proposal: https://github.com/kubernetes-sigs/cluster-api/blob/master/docs/proposals/20191030-machine-health-checking.md
- In depth controller overview: https://cluster-api.sigs.k8s.io/developer/architecture/controllers/machine-health-check.html
- Configure a Machine Health Check: https://cluster-api.sigs.k8s.io/tasks/healthcheck.html
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
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 whenStatus.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/[email protected] (#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
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
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
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
📖 Documentation
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
🚨 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
.