v1.4.0-beta.0
Pre-release🚨 Note: An issue with this release resulted in clusterctl not working on some systems. This release is superseded by v1.4.0-beta.1. 🚨
🚨 This is a BETA RELEASE. Use it only for testing purposes. If you find any bugs, file an issue.
Highlights
Some of the hightlights in this release are:
- Support for KCP remediation during cluster provisioning
- Support for Variable Discovery through external patches
- Support for Label Sync Between Machines and underlying Kubernetes Nodes
- Support for In-place propagation of changes in KCP, MachineDeployments and MachineSets
Cluster API v1.3 compared to v1.4
See the Cluster-API book for an overview over relevant changes between Cluster API v1.3 and v1.4 for maintainers of providers and consumers of our Go API.
More details about the release
Changes since v1.3.0-rc.0
📝 Proposals
- update autoscaling from zero proposal (#8036)
- Amend KCP proposal with remediation while provisioning the CP (#7855)
⚠️ Breaking Changes
- in-place propagation from MS to InfraMachine and BootstrapConfig (#8060)
- Add filter to associate variables with specific patches (#8128)
- in-place propagation from MD to MS (#8110)
- in-place propagation from MS to Machines (#8111)
- Stop supporting CRDs with invalid names (#8041)
- Refactor clusterctl alpha rollout (#7988)
- Remove clusterctl restore command and Restore function from Client interface (#7945)
- Bump controller-runtime 0.13.1=>0.14.1 (#7906)
- KCP: block upgrade to versions with old registry, improve registry handling (#7856)
- Drop ClusterTopologyManagedFieldsAnnotation field from v1beta1 (#7845)
- Removing deprecated (--disable-no-echo) flag and renaming docs (#7837)
- Removing deprecated NewServer function (#7844)
- Removing deprecated --list-images flag on init command (#7838)
- Removing CloneTemplate and CloneTemplateInput (#7839)
- Removing deprecated healthcheck condition (#7836)
- Use Kubernetes 1.26 in Quick Start docs and CAPD. (#7799)
- Use consistent naming for API constants (#7618)
✨ New Features
- Handle variable definition conflicts for external variables (#8107)
- docs: fix command-line-tools links in book (#8162)
- Add support for KCP remediation during cluster provisioning (#7963)
- Implement Reconcile mode for ClusterResourceSet (#7497)
- Add discoverVariables runtime hook to ClusterClass reconcile loop (#8006)
- Update coredns corefile migration to v1.0.19 (#8074)
- add response metrics for RuntimeSDK hook client (#7956)
- Add more reviewers and maintainers (#7996)
- Add NodeRegistrationOptions.ImagePullPolicy Support (#7772)
- Add KCP feature to clusterctl alpha rollout (#6858)
- e2e Test: Ensure OwnerRefs are consistently reconciled (#7606)
- Add Node managed labels support (#7173)
- Managed Cluster should set labels and annotations on ControlPlane and MDs (#7917)
- ClusterClass patches: Allow matching all MachineDeploymentClasses (#6930)
- Add output flag, change printYaml function signature (#7828)
- add explicit securitycontexts to controllers (#7831)
- Adds a verify script that run trivy scanner on container images (#7604)
- Make control plane port configurable in CAPD (#7548)
- tilt: add podman support (#7810)
- Add support for raw template URL in clusterctl generate yaml (#7371)
- Add support for CoxEdge provider (#7770)
- clusterctl: add command groups (#7769)
- Improve clusterctl upgrade syntax. Don't require namespace (#7376)
- add Settings support to RuntimeExtensions (#7562)
- Adds a make target to generate all the release manifests (#7629)
- [kcp] Make kcp.skipPhases field mutable (#7646)
- Get Ginkgo version in Makefile from go.mod (#7503)
- Move lowestNonZeroRetryAfterSeconds to util (#7542)
- Removed the writing of os.environment by passing the 'env' parameter in cmd_button (#7574)
- Introduce additional linters & bump golangci-lint to 1.50.1 (#7581)
- Update support policy (#7549)
- MachinePool annotation for externally managed autoscaler (#7107)
- add kubekey k3s boostrap and control plane provider (#7528)
🐛 Bug Fixes
- Fix git config in release-binary builds (#8199)
- MD controller: fix nil pointer when OnDelete policy is used (#8184)
- Fix flaky TestServerSideApplyWithDefaulting test (#8166)
- Requeue health check during the creation of a new cluster accessor (#8122)
- ClusterClass: run dry-run on original and modified object (#8139)
- KCP: fix rollout after upgrade (#8125)
- uplift golang and x/net (#8126)
- uplift helm dependency (#8089)
- KCP: Allow unsetting fields if their child fields are mutable (#8037)
- Added nodeVolumeDetachTimeout to CP machine (#8066)
- ClusterCacheTracker: fix panic in error creation (#8062)
- Fix unit test coverage in KubeadmConfig (#7678)
- Fix spelling of requeuing across files (#8024)
- Update comment describing controlPlaneInitialized (#8005)
- Remove exact path match from walkTemplate test (#8019)
- Fix version calculation in make lint (#8003)
- Migration github repository cluster-api-provider-outscale from organization outscale-dev to outscale (#7998)
- Use tenancy as filter in ownerReference test (#7976)
- bugfix write-to flag should only run filepath.Clean when the output file is not "" or - (#7972)
- Fix secret selection logic for ownerRef test (#7973)
- ClusterClass: remove empty hook entries from annotation (#7930)
- test/e2e: don't restart the conformance test container after ginkgo exits (#7946)
- Allow using the --from flag to get a template from a github release (#7453)
- test/e2e: Fix cluster cleanup in self-hosted test (#7928)
- Revert: CAPD: only ignore necessary kubeadm preflight errors (#7878)
- test/e2e: fix CoreDNS readiness validation, misc improvements (#7843)
- Fix to enable bootstrap secret rotation if the secret itself missing (#7717)
- Add deterministic prefix and suffix to label hash (#7763)
- Validate MachineDeploymentTopology.Name to be valid label value (#7759)
- Add name hashing for long MS and KCP names (#7711)
- clusterctl: fix goproxy to also return versions for major > 1 (#7709)
- Fix flakiness in MD controller test (#7668)
- Remove inaccurate comment on KCP test (#7662)
- Fix adoption KubeadmControlPlane owned secrets (#7592)
- Fix Machine adoption for KCP/MachineSet-owned Machines (#7591)
- Fix bug in kubeadmconfig adoption (#7623)
- Fix kubeadmconfig bootstrapsecret ownerRef reconciliation (#7587)
- Fix adopting ClusterResourceSet resource by CRS when already applied (#7590)
- Add CleanupAndWait call for flaky ClusterClass test (#7589)
- test/e2e: fix ClusterClass changes flake (#7579)
- Add finalizer reconcile for Topology MachineSets and MachineDeployments (#7536)
🌱 Others
- Weaken ClusterClass webhook variable validation on update (#8153)
- ClusterClass: extend engine unit tests to cover applying builtin variables (#8183)
- test/extension: push to staging registry (#8181)
- Bump github.com/coredns/corefile-migration from 1.0.19 to 1.0.20 (#8193)
- Bump github.com/gobuffalo/flect from 1.0.0 to 1.0.2 (#8195)
- Bump golang.org/x/oauth2 from 0.0.0-20221014153046-6fdb5e3db783 to 0.5.0 (#8194)
- Bump actions/cache from 3.2.5 to 3.2.6 (#8191)
- Bump github.com/onsi/ginkgo/v2 from 2.8.1 to 2.8.4 (#8143)
- CAPD: drop kubectl from image (#8182)
- hack: add support for date ranges to notes.go script (#8094)
- CAPD: add env var to allow using remote Docker engines (#8177)
- Set fail-fast: false for weekly md link check (#8161)
- align CAPD docker run flags with kind (#8157)
- Use errors.Is to check for a specific error (#8130)
- Make Cluster webhook less strict for out of date ClusterClasses (#8136)
- Add envtest unit tests for node label sync (#8055)
- Move machine controller tests to envtest, drop disableNodeLabelSync (#8044)
- Bump github.com/onsi/gomega from 1.26.0 to 1.27.1 (#8144)
- test/framework: ensure ApplyClusterTemplateAndWait always returns a cluster (#8142)
- test/e2e: disable rollout check for ClusterClass-based cluster in clusterctl ugprade tests II (#8140)
- test/e2e: disable rollout check for ClusterClass-based cluster in clusterctl upgrade test (#8138)
- ClusterClass: Allow fine-granular control of MachineDeployment upgrades (#8102)
- Remove generation check for clusterclass to fix e2e test (#8133)
- Default and Validate Cluster variables based on ClusterClass status (#8076)
- improve logging during Machine deletion (#8108)
- Deprecate v1alpha3 & v1alpha4 (#8071)
- Bump github.com/onsi/ginkgo/v2 from 2.8.0 to 2.8.1 (#8104)
- Bump actions/cache from 3.2.4 to 3.2.5 (#8103)
- Enable ginkgolinter len assertion check and fix findings (#8087)
- Add DefinitionFrom field to ClusterVariable (#8031)
- CAPD: reduce noisy error logs during machine reconciliation (#8090)
- ClusterClass: also consider MD unavailableReplicas for rollout (#8063)
- test/e2e: Add v1.0=>main clusterctl upgrade test (#8072)
- Add ClusterClass generation check to Cluster Topology reconciler (#8023)
- MD: improve replica defaulting for autoscaler (#7990)
- Add clusterclass validation to topology reconciler (#7954)
- ClusterClass: catch panics when applying patches (#8067)
- Bump golangci-lint (v1.51.1) and enable some ginkgolinter checks (#8058)
- test/e2e use informer to stream pod logs (#7935)
- Bump controller-tools to v0.11.3 (#8056)
- envtest: add env var to allow writing envtest kubeconfig (#8042)
- MachinePool: automatically bump apiVersions like in our other controllers (#7995)
- Make 'inline' a reserved name for patches (#8025)
- Update golangci-lint to v1.51.0 (#8046)
- Add introduction.png image (#8043)
- Add ClusterClass variables to status on reconcile (#7991)
- remove KCP as a valid resource type for rollback (#8035)
- make ensure scripts fail if GOPATH/bin not in PATH (#8017)
- Bump github.com/onsi/gomega from 1.25.0 to 1.26.0 (#8028)
- Bump github.com/onsi/ginkgo/v2 from 2.7.0 to 2.8.0 (#8029)
- Bump actions/cache from 3.2.3 to 3.2.4 (#8027)
- Bump to controller-tools v0.11.2 (#8020)
- Nit on KCP proposal (#8018)
- Bump to CR v0.14.2 (#8014)
- Add API types for DiscoverVariables hook (#7986)
- Add observedGeneration to ClusterClass status (#7987)
- Add variable discovery to topology mutation proposal (#7932)
- Replace deprecated string set through generic set (#8004)
- actions: use go version from Makefile (#8002)
- update const strings for util.secret (#7997)
- Allow Machines in unreachable Clusters to do initial reconciliation (#7719)
- Remove PopulateDefaultsMachineDeployment and fix how MD controller set revision (#7992)
- Bump to Go 1.19.5 (#7981)
- Bump github.com/spf13/viper from 1.14.0 to 1.15.0 (#7979)
- Bump github.com/onsi/gomega from 1.24.2 to 1.25.0 (#7980)
- Bump github.com/fatih/color from 1.13.0 to 1.14.1 (#7978)
- Bump golangci/golangci-lint-action from 3.3.1 to 3.4.0 (#7977)
- Improve tilt-prepare for testing providers outside of the CAPI repository (#7968)
- add comment to disableNodeLabelSync (#7965)
- Improve quick-start test supporting scenarios with more than one infrastructure provider (#7969)
- Run weekly markdown check against all supported branches (#7960)
- Remove redirection handling in repository_github client (#7951)
- logging: add removal note, cleanup no-op code (#7955)
- Fix sha of kubebuilder-release-tools GitHub action (#7953)
- ClusterClass proposal: Clean up outdated implementation details by linking the book's page (#7790)
- Add configurable etcd call timeout (#7841)
- drop the draft release notes step from github workflow (#7893)
- Update visualizer chart to v1.1.0 (#7857)
- ClusterClass & test/framework: consider replicas for control plane readiness (#7914)
- improves the existing capi metrics (#7886)
- Update cert-manager to v1.11.0 (#7916)
- setup Trivy scanning for supported release branches (#7874)
- Bump kubebuilder-release-tools to v0.3.0, start running it on cherry-pick PRs (#7908)
- Bump controller-tools 0.10.0=>0.11.1 (#7907)
- test/e2e: Cleanup test files & update doc (#7825)
- test/e2e: run clusterctl v0.4=>main test with v1.23.13 (#7899)
- Update versions doc adding Kubernetes 1.26 (#7801)
- test/e2e: increase Ginkgo poll progress after to 1h (#7888)
- Added WatchDeploymentLogsByLabelSelector function (#7039)
- Bump github.com/onsi/ginkgo/v2 from 2.6.1 to 2.7.0 (#7883)
- Bump github.com/gobuffalo/flect from 0.3.0 to 1.0.0 (#7885)
- Bump golang.org/x/text from 0.5.0 to 0.6.0 (#7884)
- Bump actions/cache from 3.2.2 to 3.2.3 (#7882)
- Bump actions/checkout from 3.2.0 to 3.3.0 (#7881)
- Small improvement to the backport policy (#7823)
- Fix verify boilerplate on mac (#7866)
- tilt: remove securityContext for live_update (#7846)
- CAPD: only ignore necessary kubeadm preflight errors (#7842)
- Update conversion-gen version (v0.25.0 -> v0.26.0) (#7847)
- Update kubebuilder envtest (1.25.2 -> 1.26.0) (#7835)
- go.mod: Update github.com/google/go-github to v48.2.0 (#7830)
- Bump github.com/valyala/fastjson from 1.6.3 to 1.6.4 (#7827)
- Bump actions/cache from 3.2.1 to 3.2.2 (#7826)
- Remove
clusterctl backup
command and Backup function from Client interface (#7752) - Add failing/flaking test issue templates to the repository (#7778)
- Bump actions/cache from 3.0.11 to 3.2.1 (#7805)
- Cluster topology: fix comment about MD replicas defaulting (#7779)
- Tilt must show templates for enabled providers only (#7724)
- New Filter NeedsRollout to determine if a machine needs rollout. (#7571)
- Add category to DockerClusterTemplate (#7798)
- Cleanup special handling for tilt_modules folder (#7774)
- Bump helm and containerd in hack/tools go module (#7788)
- Bump to Go 1.19.4 (#7791)
- Bump github.com/onsi/gomega from 1.24.1 to 1.24.2 (#7782)
- Bump actions/setup-go from 3.4.0 to 3.5.0 (#7781)
- update golang.org//x/net to v0.4.0 (#7780)
- Remove fix RBAC from component management in clusterctl (#7339)
- Fix verify-shellcheck script and fix findings (#7755)
- Bump actions/checkout from 3.1.0 to 3.2.0 (#7733)
- Bump shellcheck version (0.8.0 -> 0.9.0) (#7737)
- Bump github.com/onsi/ginkgo/v2 from 2.5.1 to 2.6.0 (#7735)
- KCP should avoid to reconcile certificates too early (#7727)
- Add explicit length check for cluster and md names (#7712)
- Update cert-manager to v1.10.1 (#7705)
make promote-images
should also work if the user uses a SSH style URL (#7715)- lint: enable revive if-return check and fix findings (#7682)
- Bump sprig and golang/x/text (#7701)
- prepare main branch for v1.4 development (#7692)
- Bump actions/setup-go from 3.3.1 to 3.4.0 (#7689)
- Bump softprops/action-gh-release from 0.1.14 to 0.1.15 (#7688)
- e2e: add init versions for providers (#7628)
- Change test-extension pull policy to IfNotPresent (#7666)
- Bump github.com/coredns/corefile-migration (#7652)
- Ensure infra and bootstrap objects are owned by Machines (#7593)
- Bump github.com/prometheus/client_golang from 1.13.0 to 1.14.0 (#7651)
- Bump github.com/spf13/viper from 1.13.0 to 1.14.0 (#7650)
- Bump github.com/onsi/ginkgo/v2 from 2.5.0 to 2.5.1 (#7649)
- Automate go dependency bumps (except CR/k8s.io) (#7632)
- Use latest kind images for CAPD (#7621)
- KCP: remove unused code (#7598)
- MD reconciler: improve integration test (#7596)
- Fix an error message of the failure domain field in the Machine controller (#7583)
- test/e2e: bump ginkgo binary to v2.5.0 (#7580)
- self-hosted e2e should check managed fields (#7513)
- add clusterctl label to providers deployed with tilt (#7551)
- Add Jont828 to clusterctl reviewers (#7491)
- Update e2e components to v1.2.5 (#7550)
📖 Additionally, there have been 52 contributions to our documentation and book. (#8169, #8168, #8165, #8134, #8148, #8156, #8118, #8117, #8073, #8079, #8015, #8034, #8030, #7902, #7983, #7967, #7566, #7950, #7922, #7943, #7933, #7934, #7912, #7802, #7894, #7867, #7546, #7822, #7817, #7814, #7803, #7706, #7767, #7726, #7718, #7720, #7714, #7698, #7696, #7681, #7667, #7331, #7675, #7595, #7645, #7605, #7561, #7570, #7526, #7499, #7444, #7545)
Thanks to all our contributors! 😊