--- tags: v1.4.0-beta.0 --- # v1.4.0-beta.0 🚨 This is a RELEASE CANDIDATE. 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](https://main.cluster-api.sigs.k8s.io/developer/providers/v1.3-to-v1.4.html) for an overview over relevant changes between Cluster API v1.3 and v1.4 for maintainers of providers and consumers of our Go API. <details> <summary>More details about the release</summary> :warning: **RELEASE CANDIDATE RELEASE NOTES** :warning: ## Changes since v1.3.0-rc.0 --- ## :memo: Proposals - update autoscaling from zero proposal (#8036) - Amend KCP proposal with remediation while provisioning the CP (#7855) ## :warning: 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) ## :sparkles: 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: 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) ## :seedling: 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) :book: 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) </details> <br/> _Thanks to all our contributors!_ 😊