Skip to content

Release v0.10.0

Compare
Choose a tag to compare
@mdbooth mdbooth released this 17 Apr 16:03
· 238 commits to main since this release
v0.10.0
f4e5bdf

Breaking API Changes

v0.10.0 is a major update which brings major changes to the API.

v1alpha5 is no longer served

If you are still using v1alpha5, this will not work in v0.10.0. However, for this release only objects are still defined in the CRDs and the code is still present, so as a temporary workaround it is possible to manually edit the CRDs to set versions.served to true for v1alpha5 objects. This is not tested, and we have low confidence that this will work without problems. Some manual effort may be required to check and fix automatically converted objects.

v1alpha6 and v1alpha7 are deprecated

v1alpha6 and v1alpha7 objects will be automatically converted to v1beta during use. This is well tested. We don’t anticipate problems with these conversions.

We will stop serving and testing v1alpha6 in the next release.

v1alpha7 is not marked deprecated in v0.10.0 to allow a switch-over period without deprecation warnings, but will be marked deprecated in the next release. Will will stop serving and testing it in a release after that.

You should update to use v1beta1 natively as soon as possible.

v1beta1 is released

v1beta1 marks a major update to the CAPO API. The specific changes from v1alpha7 are documented here: https://cluster-api-openstack.sigs.k8s.io/topics/crd-changes/v1alpha7-to-v1beta1

More than this, though, it marks an intention by the maintainers to stop making breaking changes. The API will continue to evolve, but we will make every effort to do this without introducing more backwards-incompatible changes.

Removal of hardcoded Calico CNI security group rules

This is documented more completely in the API upgrade documentation.

Prior to v1beta1, when using managed security groups we would automatically add certain rules which were specific to Calico CNI. It was not possible to add rules for any other CNI. A common way to work round this was to set allowAllInClusterTraffic: true.

With v1beta1 there are no longer any implicit rules for any CNI. However, it is now possible to specify custom rules in the cluster spec which will be automatically added to managed security groups. Users of Calico CNI must now add these rules explicitly. Users of other CNIs now have the option of using managed security groups.

Calico CNI rules will be added automatically when upgrading to v1beta1 from a previous API version.

The Calico CNI rules have been added to the release templates, so for now creating a cluster with clusterctl will continue to have Calico rules when using the default templates.

Management cluster changes

Removal of MutatingWebhookConfiguration

CAPO no longer uses a mutating webhook, and its configuration is removed. If you upgrade your management cluster with clusterctl this will be handled correctly. If you do it manually you must ensure you remove the MutatingWebhookConfiguration capo-mutating-webhook-configuration. If you do not you may see errors like the one in #1927.

Minimum management cluster version is now 1.25

v0.10.0 now uses https://kubernetes.io/docs/reference/using-api/cel/ for some API validations, which only became available without a feature gate in 1.25. Consequently we now require the management cluster to be at least k8s 1.25.

Highlighted new features

API Reference documentation

We now automatically publish API reference documentation! The documentation for v1beta1 can be found here: https://cluster-api-openstack.sigs.k8s.io/api/v1beta1/api

Floating IP IPAM Provider

It is now possible to allocate floating IPs for individual machines using the new Floating IP IPAM Provider documented here: https://cluster-api-openstack.sigs.k8s.io/api/v1alpha1/api#infrastructure.cluster.x-k8s.io/v1alpha1.OpenStackFloatingIPPool

Attach them to a machine via the new floatingIPPoolRef in OpenStackMachineSpec: https://cluster-api-openstack.sigs.k8s.io/api/v1beta1/api#infrastructure.cluster.x-k8s.io/v1beta1.OpenStackMachineSpec

What's Changed

New Features

Bug fixes

  • πŸ› Don't apply worker SG to control plane machines by @stephenfin in #1785
  • πŸ› Fix potential panic during instance create by @mandre in #1803
  • πŸ› Fix patching OpenstackMachine's immutable spec during reconcile by @strudelPi in #1807
  • πŸ› fix: skip port deletion when instances have no port by @dulek in #1818
  • πŸ› Fix random instance port deletion by @zioc in #1753
  • πŸ› Persist API FloatingIP immediately on creation by @mdbooth in #1829
  • πŸ› controllers: do not return a RequeueAfter and an error at the same time by @EmilienM in #1839
  • πŸ›Fix a stacktrace in LB logic by removing listener name from an error message when not set by @huxcrux in #1853
  • πŸ›Make sure that allowedCidrs lists are compared correctly to avoid patching LB listener when not needed by @huxcrux in #1854
  • πŸ› Prevent the bastion to be removed before it's been disabled by @EmilienM in #1866
  • πŸ› Ignore 'OS_*' environment variables by @stephenfin in #1883
  • πŸ› Fix cluster network cleanup by @dulek in #1880
  • πŸ› loadbalancer: resolve ControlPlaneEndpoint.Host when needed by @EmilienM in #1738
  • πŸ› api/additionalPorts: don't create UDP rules by @EmilienM in #1899
  • πŸ› v1alpha5: Fix panic in conversion when port has no binding profile by @mdbooth in #1949
  • πŸ› Fix accidental parsing of password by @JanGutter in #1953

Documentation

Administrative

API changes

Changes to build, test, and CI, minor changes, and code tidy ups

  • ✨ Add API validation test framework by @mdbooth in #1919
  • ✨ Add junit output to e2e tests by @mdbooth in #1935
  • 🌱 Make it possible to use a pre-created volume type in e2e tests by @maxrantil in #1766
  • πŸ› Move flatcar-sysext to v1alpha8 by @EmilienM in #1812
  • CI fixes by @mandre in #1820
  • 🌱 Bump e2e node images to v1.28.5 by @lentzi90 in #1823
  • e2e: remove "allow-all-in-cluster-traffic" patch by @EmilienM in #1834
  • 🌱 Decrease number of machines in e2e tests by @lentzi90 in #1849
  • Migrate Dockerfile to use golang 1.21 to match go.mod in project by @huxcrux in #1857
  • 🌱 test: bump Flatcar version by @tormath1 in #1858
  • 🌱 Import CAPI v1.6.0 by @EmilienM in #1731
  • ✨ Bump Go to 1.22.0 by @EmilienM in #1877
  • 🌱 Improve method signatures of conversion functions by @mdbooth in #1813
  • 🌱 change how we register scheme as per capi 1.6 by @kranurag7 in #1797
  • 🌱 Bump controller-tools to v0.14.0 by @mdbooth in #1825
  • 🌱 Enhance Tilt integration with CAPO using a ClusterClass template by @maxrantil in #1833
  • πŸ› Fill up OpenStack cluster ReferencedResources with Image ID by @EmilienM in #1845
  • 🌱 Update the dev-test ClusterClass by @lentzi90 in #1848
  • πŸ› e2e: stop testing upgrades from v1alpha5 (v0.6) by @EmilienM in #1893
  • 🌱 E2E: Add clusterctl upgrade test for v0.9 -> main by @lentzi90 in #1894
  • πŸ› e2e: bastion tests by @EmilienM in #1822
  • 🌱 Enhancements to how controller-gen is invoked by @mdbooth in #1911
  • 🌱 Reduce cyclomatic complexity of ReconcileLoadBalancer by @mdbooth in #1904
  • πŸ› Remove logger from scope by @mdbooth in #1913
  • 🌱 Reduce cyclomatic complexity of reconcileNetworkComponents by @mdbooth in #1905
  • πŸ› ci: fix upgrades by dropping cloudName by @EmilienM in #1916
  • 🌱 Move webhooks into pkg/webhooks by @mdbooth in #1920
  • 🌱 Split v1alpha6 & v1alpha7 conversion into multiple files by @mdbooth in #1923
  • ⚠️ Simplify v1alpha6 cluster restorer by @mdbooth in #1925
  • Fix CRD generation by @mdbooth in #1928
  • 🌱 Allow generating api-docs for individual versions by @mdbooth in #1929
  • πŸ› CI: Specify external network by name by @mdbooth in #1932
  • 🌱 Move filter conversions out of /api by @mdbooth in #1924
  • 🌱 Add .gitattributes to identify generated files to GitHub by @mdbooth in #1963
  • test: bump Flatcar version by @tormath1 in #1936
  • πŸ› Fix port name after port creation failure by @mdbooth in #1941
  • πŸ› Fix a race when updating status before reconcile completes by @mdbooth in #1955
  • 🌱 Deduplicate AdoptMachinePorts and AdoptBastionPorts by @mdbooth in #1944
  • πŸ› Revert accidental update to previous API templates by @mdbooth in #1966
  • πŸ› Consolidate and fix v1beta1 fuzzer funcs by @mdbooth in #1981
  • πŸ› Add fuzz tests for v1alpha5 conversion by @mdbooth in #1984
  • πŸ› Fix v1alpha7 machine restorer and test by @mdbooth in #1987
  • πŸ› Fix multiple panics in restore functions by @mdbooth in #1989
  • 🌱 Bump version artifacts for release-0.10 by @mdbooth in #1994
  • 🌱 Remove legacy v1alpha7 filterconvert utils by @mdbooth in #1992
  • 🌱 Minor improvements to api validation tests by @mdbooth in #2001
  • 🌱 Cleanup security group created by e2e test by @mdbooth in #2010
  • πŸ› Don't try to resolve machine on delete if cluster not ready by @mdbooth in #2006
  • πŸ› Fix idempotent restore when setting ControlPlaneEndpoint by @mdbooth in #2011
  • 🌱 Bump k8s dep to 0.29.3 by @mdbooth in #2014
  • πŸ› Fix crash on delete with no bastion by @mdbooth in #2017

New Contributors

Full Changelog: v0.9.0...v0.10.0