Skip to content

Releases: rancher-sandbox/cluster-api-provider-harvester

v0.2.9

15 Apr 07:43

Choose a tag to compare

What's Changed

👒 Dependency bumps

Full Changelog: v0.2.8...v0.2.9

v0.2.8

16 Mar 14:00

Choose a tag to compare

Cluster API Provider Harvester v0.2.8

Addresses findings from the SURE-11421 formal review by Andrea Mazzotti (SUSE CAPI team). Review verdict: Go.

Changes

  • CAPI contract compliance: Added ObjectMeta to HarvesterMachineTemplateResource per InfraMachineTemplate contract; removed unused HarvesterClusterTemplate.Status field
  • Webhook clarity: Removed standalone examples/webhook-deployment.yaml — webhooks are included in infrastructure-components.yaml and deployed automatically
  • Manifest verification: Added verify-manifests target to make verify to catch out-of-sync generated manifests
  • Release artifacts: Cluster templates and ClusterClass now included in release assets per clusterctl conventions
  • v1beta2 readiness: Documented status.initialization.provisioned as forward-looking for CAPI v1beta2
  • Helm chart deprecated: Marked as legacy in favor of CAPIProvider/clusterctl installation
  • CAAPF advisory: Added RFD 0051 note in Fleet addons documentation

Installation

apiVersion: turtles-capi.cattle.io/v1alpha1
kind: CAPIProvider
metadata:
  name: harvester
  namespace: caphv-system
spec:
  name: harvester
  type: infrastructure
  version: v0.2.8
  fetchConfig:
    url: https://github.com/rancher-sandbox/cluster-api-provider-harvester/releases/download/v0.2.8/infrastructure-components.yaml

Full changelog

v0.2.7...v0.2.8

v0.2.7

10 Mar 17:49

Choose a tag to compare

Cluster API Provider Harvester v0.2.7

Code quality improvements for production readiness review (SURE-11421).

Changes

  • Kustomize modernization: Migrate from deprecated bases/patchesStrategicMerge/vars/commonLabels to resources/patches/replacements/labels — eliminates all deprecation warnings from generated manifests
  • Finalizer naming: Rename finalizers to include path segment per Kubernetes conventions (harvestermachine.infrastructure.cluster.x-k8s.io/finalizer), with dual-finalizer migration for seamless upgrade from v0.2.6
  • Context propagation: Replace all context.TODO()/context.Background() in production code with proper context propagation from reconciler scope, enabling correct cancellation and timeout behavior
  • Minor fixes: Fix typo in ippool validation, add error handling for netip.AddrFromSlice(), document privileged container requirement

Upgrade notes

  • Existing clusters will automatically migrate to the new finalizer format on next reconcile — no manual action required
  • The old finalizer is removed after the new one is added, ensuring no window of unprotected deletion

Installation

apiVersion: turtles-capi.cattle.io/v1alpha1
kind: CAPIProvider
metadata:
  name: harvester
  namespace: caphv-system
spec:
  name: harvester
  type: infrastructure
  version: v0.2.7
  fetchConfig:
    url: https://github.com/rancher-sandbox/cluster-api-provider-harvester/releases/download/v0.2.7/infrastructure-components.yaml

Full changelog

v0.2.6...v0.2.7

v0.2.6

10 Mar 17:48

Choose a tag to compare

Cluster API Provider Harvester v0.2.6

Major update bringing Harvester v1.7.1 compatibility, production-grade features, and complete lifecycle management for Kubernetes clusters on Harvester HCI.

Highlights

  • Harvester v1.7.1 compatibility: Critical bugfixes for memory.guest, CPU topology, runStrategy, IPPool allocation, cloud-init keys, and orphaned PVCs
  • Cloud provider bootstrap: Solves the calico/cloud-provider chicken-and-egg problem with hostNetwork, RBAC, tolerations, and node init from management cluster
  • Auto-remediation: MachineHealthCheck with automatic etcd cleanup, VM deletion, and replacement (~9 min recovery)
  • ClusterClass: harvester-rke2 topology with 12 variables/patches — reduces cluster YAML from ~200 lines to ~30
  • CLI generator: caphv-generate tool (interactive + flags) for complete cluster manifest generation
  • DHCP VM support: ISC dhclient workaround for wicked BPF bug in KubeVirt bridge binding
  • Multi-disk VMs: Image + storageClass volumes with bootOrder
  • Validating webhooks: admission.CustomValidator for HarvesterMachine + HarvesterCluster, gated by --enable-webhooks
  • Fleet addon management: CSI and CNI deployable via Fleet GitOps (CAAPF integration)
  • CSI decoupling: Cloud-config separated from CSI driver — CSI deployable independently via Fleet or CRS
  • Fleet label automation: reconcileFleetIntegration() propagates labels to Fleet clusters
  • Multi-pool IP allocation: Ordered fallback across multiple IPPools
  • Observability: 17 custom Prometheus metrics + Grafana dashboard
  • 330+ unit tests: 70%+ controller coverage, 80%+ util coverage
  • E2E test suite: 4 suites, 18 tests (webhook/scale/multidisk/remediation)
  • Turtles certification: Full certification test suite for Rancher Turtles provider certification
  • Documentation: Operations guide, troubleshooting guide, Fleet addons guide

Breaking changes from v0.1.6

  • Cloud-init secret keys are now lowercase (userdata/networkdata)
  • VM creation uses spec.runStrategy: Always instead of deprecated spec.running: true
  • memory.guest is set on VM domain spec (required by Harvester v1.7.0+)

Installation

apiVersion: turtles-capi.cattle.io/v1alpha1
kind: CAPIProvider
metadata:
  name: harvester
  namespace: caphv-system
spec:
  name: harvester
  type: infrastructure
  version: v0.2.6
  fetchConfig:
    url: https://github.com/rancher-sandbox/cluster-api-provider-harvester/releases/download/v0.2.6/infrastructure-components.yaml

Or via Helm:

helm install caphv oci://ghcr.io/rancher-sandbox/cluster-api-provider-harvester/charts/caphv --version 0.2.6

Assets

  • infrastructure-components.yaml — Full deployment manifest (CRDs, RBAC, controller, webhooks, cert-manager)
  • metadata.yaml — CAPI contract metadata (v1beta1)

Full changelog

See CHANGELOG.md

v0.1.6

17 Jul 22:35
c1edcb7

Choose a tag to compare

v0.1.6

🚀 Enhancements

  • Added support for ClusterClass with an example template, fixes #87 by @belgaied2 in @88155cf
  • feat: add YAML template for Talos-Harvester cluster deployment by @eede94f
  • Added some new conditions for HarvesterCluster resource, Fixes #90 by @41ea08e
  • Added some missing conditions by @6529afa
  • Fixed issue related to setting a harvestermachine to be ready, added .status.initialization.provisioned field by @ad143cd

👒 Dependency bumps

  • Bump github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring by @7a60067
  • Bump sigs.k8s.io/yaml from 1.4.0 to 1.5.0 by @0ed7fe7
  • Bump github.com/go-logr/logr from 1.4.2 to 1.4.3 by @bd3d37f
  • Bump bci/golang from 1.24.4 to 1.24.5 by @5581d37
  • Bump bci/bci-micro from 15.6 to 15.7 by @dependabot

🐛 Bugs

  • Fixed some issues with Makefile by @f22e3ac
  • Fixed linting issues by @f982ebf
  • Removing UPDATE_CLOUD_PROVIDER placeholder, which is not valid when cloud-config secret is provided. Fixes #109 by @2c6e81a

📖 Docs

  • Small improvements for README.md by @d203d61
  • Restored the latest valid version of README.md before it was overwritten by kubebuilder migration by @94c4637

Other Changes

  • Updated the project to kubebuilder v4 by @b85e828
  • Migrated to Golangci config version "2" by @c87c3fc
  • Clean up clientset interfaces by @944ca9e
  • Updated Dockerfile after kubebuilder upgrade and bumped build image by @6bbdc1a
  • gci-ed all go files by @4e53680
  • Update golangci-lint to v2.2.1 by @919e7ba

Full Changelog: v0.1.5...v0.1.6

v0.1.5

09 Jul 07:48
9cf1518

Choose a tag to compare

What's Changed

🚀 Enhancements

  • Bump golang from 1.19 to 1.22 by @dependabot in #9
  • Bump github.com/go-logr/logr from 1.2.4 to 1.4.1 by @dependabot in #13
  • Bump docker/login-action from 2 to 3 by @dependabot in #15
  • Bump github.com/onsi/gomega from 1.27.10 to 1.33.1 by @dependabot in #30
  • Bump github.com/onsi/ginkgo/v2 from 2.11.0 to 2.17.3 by @dependabot in #31
  • Bump github.com/k8snetworkplumbingwg/network-attachment-definition-client from 0.0.0-20200331171230-d50e42f2b669 to 1.7.0 by @dependabot in #25
  • Bump github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring from 0.62.0 to 0.74.0 by @dependabot in #32
  • kind:feature : Bumping various longhorn and harvester versions by @PatrickLaabs in #47
  • Update deps by @ekarlso in #42
  • Implement a process to discharge the user from generating cloud provider configuration by @belgaied2 in #86

🐛 Bugs

  • fixed RFC1035 naming for generated names and fixed some linting issues by @belgaied2 in #73
  • fix: update the RKE2 worker machine templates to use the correct RKE2 version by @ihcsim in #72
  • docs: update README to include missing workload cluster settings by @ihcsim in #71

Other Changes

  • Bump actions/setup-go from 4 to 5 by @dependabot in #16
  • Bump actions/checkout from 3 to 4 by @dependabot in #17
  • Bump softprops/action-gh-release from 1 to 2 by @dependabot in #18
  • Fix cross-builds by @dgiebert in #57
  • Bump github.com/go-logr/logr from 1.4.1 to 1.4.2 by @dependabot in #49
  • Bump github.com/onsi/ginkgo/v2 from 2.17.3 to 2.20.2 by @dependabot in #65
  • Bump github.com/containernetworking/plugins from 1.1.1 to 1.5.1 by @dependabot in #51
  • Adding kind/bump to labels of PRs by @belgaied2 in #74
  • Bump github.com/longhorn/longhorn-manager from 1.4.3 to 1.7.2 by @dependabot in #81
  • Bump bci/golang from 1.22 to 1.23 by @dependabot in #76
  • Bump github.com/onsi/ginkgo/v2 from 2.20.2 to 2.22.0 by @dependabot in #78
  • Bump docker/build-push-action from 5 to 6 by @dependabot in #75
  • Bump github.com/containernetworking/plugins from 1.5.1 to 1.6.0 by @dependabot in #77
  • Bump github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring from 0.74.0 to 0.78.2 by @dependabot in #80
  • fix: upgrade longhorn csi sidecars version by @ihcsim in #82
  • Bump github.com/onsi/gomega from 1.34.2 to 1.36.0 by @dependabot in #84
  • Bump github.com/k8snetworkplumbingwg/network-attachment-definition-client from 1.7.0 to 1.7.5 by @dependabot in #85
  • chore: tidy up go mod by @ihcsim in #92
  • chore: remove unapproved GHA per eio's requirements by @ihcsim in #105
  • fixing inconsistent naming of components.yaml by @PatrickLaabs in #107

New Contributors

Full Changelog: v0.1.4...v0.1.5

v0.1.4

17 Jun 20:42
db1ee42

Choose a tag to compare

What's Changed

🐛 Bugs

  • Fixed issue which happened when a HarvesterCluster was first created with ipamType: dhcp config in which LoadBalancer IP failed to be assigned, then changed to ipamType: pool, even after the change, the IP address would not be assigned.
  • Fixed issue with build process

🚀 Enhancements

Full Changelog: v0.1.3...v0.1.4

v0.1.3

14 Jun 13:33
2b9eb08

Choose a tag to compare

What's Changed

🐛 Bugs

  • [WIP] kind/documentation: Updating Readme according to the issue #33 by @PatrickLaabs in #34
  • Fixed an issue with the LoadBalancer placeholder that ignored the IPAMType=pool. Now, it does use the pool and put a placeholder to be used by the actual LoadBalancer that is created after the first ControlPlane machine.
  • Fixed an issue where the first HarvesterMachine object would not get the Ready status, which blocked further machine deployments.
  • Fixed a small issue where an ERROR log message is shown when a HarvesterMachine is reconciliated for the first time, and might block the update of the Status field until the machine is actually created.

Other Changes

  • kind/feature: Changing ClusterResourceSets Rolloutstrategy from ApplyOnce to Reconcile by @PatrickLaabs in #41

New Contributors

Full Changelog: v0.1.2...v0.1.3

v0.1.2

04 Jun 12:33
764f8e0

Choose a tag to compare

Full Changelog: v0.1.1...v0.1.2

v0.1.1: Adding release Github action

21 Feb 14:20
7496a2d

Choose a tag to compare

This is a first round of fixes and improvements to the provider.

🚀 Enhancements

  • #6 - Changed variable names in manifest to match those in upstream Cluster API
  • #7 - Streamlined the way reference fields work (all accept simple or / approach)

🐛 Bugs

  • #5 - Fixed issue with hardcoded VM network name.