github kubernetes-sigs/cluster-api v1.1.0

latest releases: v1.7.2, v1.6.5, test/v1.6.5...
2 years ago

Changes since v1.0

📝 Proposals

  • ClusterClass: Add MachineHealthCheck support details (#5511)
  • ClusterClass: Add patching support details (#5212)
  • Add proposal for opt-in autoscaling from zero (#4283)

⚠️ Breaking Changes

  • Updated function name HasPausedAnnotation to HasPaused and HasSkipRemediationAnnotation to HasSkipRemediation (#5545)
  • MachineSet on scale down now takes into account NodeHealthy condition (#5424)
  • KubeadmControlPlaneTemplate: Remove redundant or unused fields (#5788)
  • Update references with an APIReader as fallback (#5698)
  • Move kubeadm controllers to internal (#5493)

✨ New Features

  • Upgrade to Kubernetes 1.23.3 in Quickstart and CI (#6012)
  • ClusterClass: Implement MachineDeployment variable overrides (#5928)
  • ClusterClass: Implement object and array variables (#5779)
  • ClusterClass: Add topology conditions (#5732)
  • ClusterClass: Add MachineHealthCheck generation (#5873)
  • Clusterclass: Make webhook cluster aware (#5717)
  • ClusterClass: Add changes e2e test (#5664)
  • ClusterClass: Add upgrade e2e test (#5645)
  • ClusterClass: Enable rebase operation (#5644)
  • ClusterClass: Add support for optional patches (#5694)
  • ClusterClass: json patches support (#5583)
  • ClusterClass: patch engine implementation (#5534)
  • ClusterClass: Add reconciler (#5486)
  • ClusterClass: variable and patch types (#5418)
  • clusterctl: add alpha topology plan command (#5893, #5960)
  • clusterctl: Add BringYourOwnHost(BYOH) provider to (#5593)
  • clusterctl: move with clusterclass (#5499)
  • clusterctl: Add windows amd64 target (#5650)
  • clusterctl: Add ibmcloud provider support (#5640)
  • clusterctl: Add ClusterClass support to clusterctl generate cluster (#5351)
  • KubeadmConfig: Add Patches field in InitConfiguration and JoinConfiguration (#5897)
  • KubeadmConfig: Set default format to cloud-config (#5869)
  • KubeadmConfig: Add support for generating bootstrap data in Ignition format (#4172)
  • KubeadmControlPlane: Support customizing the etcd dial timeout, increase default to 10s (#5778)

🐛 Bug Fixes

  • clusterctl: Fix cert manager repo and add troubleshooting guide (#6052)
  • clusterctl: Fix/backup restore error handling. (#5840)
  • clusterctl: Fix clusterctl delete (#5662)
  • clusterctl: init should report the correct namespace when detecting a provider is already intalled (#5739)
  • clusterctl: Add delete webhook kubebuilder config for cluster and clusterclass (#5737)
  • clusterctl: discovery should ignore provider's resources (#5684)
  • clusterctl: update move to support new cluster validations (#5625)
  • clusterctl: restore - set tenants on the new object graph constructed from files in the backup directory (#5588)
  • clusterctl: only fix target namespace in template if TargetNamespace is set (#5488)
  • clusterctl: Fix clusterctl delete when deleting providers with cluster-wide resources (#5420)
  • clusterctl: Use release tag as git version for building clusterctl binaries (#5473)
  • ClusterClass: Remove generated names from error messages to reduce reconciliation (#5992)
  • ClusterClass: Make MHC ClusterClass authoritative on paths (#5949)
  • ClusterClass: Make Topology controller authoritative on MachineDeployment failuredomain (#5950)
  • ClusterClass: allow accessing nestedFields via valueFrom.variable (#5925)
  • ClusterClass: fix remove patches (#5844)
  • ClusterClass: drop support for nullable (#5780)
  • ClusterClass: Fix defaulting of nullable variables (#5773)
  • ClusterClass: make PatchSelector machineDeploymentClass.names optional (#5766)
  • ClusterClass: fix nullable variables (#5756)
  • ClusterClass: patch MachineDeployment selector authoritatively (#5731)
  • ClusterClass: Ensure we're not trying to reconcile the topology of non-managed clusters (#5700)
  • ClusterClass: fix authoritative mergepatch (#5629)
  • ClusterClass: fix topologyReconcileLogger (#5617)
  • CLusterClass: topology should not generate empty patch for metadata (#5580)
  • ClusterClass: Add mandatory .spec.template.spec to DockerClusterTemplates (#5514)
  • ClusterClass: drop multipleOf, change min/max to *int64 (#5494)
  • ClusterClass: Prevents kubectl.kubernetes.io/last-applied-configuration annotation to be propagated to templates generated by ClusterClass (#5412)
  • Cluster: Cluster FailureDomains should always be fully synced rather than additive (#5479)
  • CABPK: Add unlock mechanism to the kubeadm bootstrap provider (#5824)
  • CABPK: Remove redundant SetupWebhookWithManager funcs on list types (#5725)
  • KCP: Allow KCP to Update when CoreDNS version doesn't change (#6011)
  • KCP: make KubeadmConfig format mutable (#5904)
  • KCP: Fix incorrect array initalization causing incorrect webhook failures (#5808)
  • KCP: Fix adding appended list directly causing changing previous value on validation (#5670)
  • KCP ensure etc client generators never return nil without an error (#5710)
  • KCP: Add proper rbac rule in KCP controller for CRD (#5675)
  • KCP: Make KCP nodeDrainTimeout mutable (#5663)
  • KCP: don't run validation webhook on scale (#5454)
  • MachineSet: normalize MachineSet version validation (#5406)
  • MachineSet: Prevent orphaned InfrastructureMachines (#5865)
  • MachineHealthCheck: Return an error if we can't delete the external remediation object (#5654)
  • ClusterResourceSet: handle error in case ownerRef is not set on crs binding (#5996)
  • CAPD: fix logContainerDebugInfo (#5901)
  • CAPD: fix MachinePool reconciler (#5833)
  • CAPD: Reconcile dockermachine.status.address after move (#5659)
  • E2E: test/e2e/cluster-upgrade: skip worker upgrades if worker count is 0 (#5926)
  • E2E: Added CleanupAndWait function to reduce flakiness in test (#5837)
  • E2E: Fix control plane upgrade test etcd and dns image upgrade (#5868)
  • E2E: Fix cluster topology and UpdateCoreDNS test flakes (#5815)
  • E2E: Fix the TestBootstrapTokenRotationMachinePool test (#5733)
  • E2E: Fix clusterctl upgrade test (v1-0 => main) (#5689)
  • E2E: Fix WaitFor parameters for UpgradeControlPlaneAndWaitForUpgrade (#5679)
  • E2E: Provide a better error message for WaitForControlPlaneToBeReady function (#5601)
  • E2E: Fix Matchers bug on ignored paths and add tests (#5565)
  • E2E: Update CAPI version to v1beta1 in kustomization in test-framework (#5526)
  • util/predicates: log correct object type in cluster predicates (#5708)
  • Fix CABPK, addons and CAPD manifest generation (#5696)
  • Fix Tiltfile from clean-bin (#5630)
  • ClusterCacheTracker test should wait and close its reconciler (#5427)

And #5527, #5538, #5540, #5590, #5653, #5671, #5691, #5701, #5702, #5703,
#5706, #5716, #5728, #5734, #5740, #5784, #5792, #5878, #5932, #5943

🌱 Others

  • clusterctl: describe show MachineSets (#5438)
  • clusterctl: Generate returns better error message in case there is no management cluster available (#5373)
  • clusterctl: describe show Cluster conditions (#5437)
  • clusterctl: fix typo for GitHub rate limit error (#5801)
  • Tiltfile: Add observability tools (#5336)
  • Enforce go import order via gci linter (#5592)
  • Testing: Use kubebuilder envtest v1.23.3 (#6015, #5955)
  • Update Docker and containerd dependencies (#5973)
  • Make release-notes for pre-releases (#5962)
  • Test rolling update scale-in doesn't race machine deletion (#5934)
  • ClusterClass: Validate MachineDeployment topology name not empty (#5951)
  • ClusterClass: Block +2 minor version upgrade in cluster topology (#5935)
  • ClusterClass: Add reconcile repeatedly test (#5846)
  • ClusterClass: Drop extensions in extensions/patches package path (#5931)
  • ClusterClass: Topology controller upgrades templates in place when there are only metadata changes (#5416)
  • ClusterClass: Validate default and enum JSON, extend schema conversion test (#5772)
  • ClusterClass: Make ControlPlane.spec.machineTemplate.nodeDrainTimeout patchable (#5915)
  • ClusterClass: Generate events for topology changes (#5631)
  • ClusterClass: Add support for topology managed fields (#5812)
  • ClusterClass: change selector machineDeploymentClass field to pointer (#5781)
  • Check for build metadata in cert-manager version (#5573)
  • Improve managed field annotation encoding (#5922)
  • Collect kind logs when e2e bootstrap fails (#5910)
  • Testing: improve logging of RunErrors occurring when bootstrap cluster creation fails (#5908)
  • Modify providerid struct string method to receive value (#5821)
  • Add timeout to check if KCP object exists (#5889)
  • Replace hardcoded kind cluster name to pickup env values (#5822)
  • Address in-loop deferred-close in etcd client generator (#5789)
  • Deprecate the HealthCheckSucceded condition for typo (#5861)
  • Add failureDomains in MachineDeploymentTopology (#5850)
  • Tiltfile: Speedup startup time (#5785)
  • Add validation for default, enum and example definitions in variables (#5835)
  • Enable predeclared linter and fix problems (#5847)
  • Standardize api import aliases (#5830)
  • Enable more gocritic lint checks (#5843)
  • Added variable example and description to clusterclass yamls (#5842)
  • Testing: Implement release informing jobs with CC & IPv6 (#5804)
  • Testing: Add basic integration tests for ClusterClass webhook (#5803)
  • ClusterClass: clarify that enum works with all types (#5834)
  • Add test coverage for container runtime calls (#5668)
  • ClusterClass: add documentation fields for patches and variables (#5825)
  • Set gci linter prefix value (#5669)
  • Add v1.1 to metadata.yaml (#5819)
  • Enforce godoc comments for exported functions (#5817)
  • Replace disable-echo option with echo option in clusterctl describe (#5787)
  • Use Kubernetes 1.23 in: quickstart, CAPD, e2e tests + update doc (#5800)
  • CAPD: Add profiler-address flag (#5674)
  • CAPD: add ClusterClass cluster-template (#5805)
  • CAPD: move packages to internal (#5795)
  • KubeadmControlPlane: move webhook to internal (#5791)
  • ClusterClass: add check to ensure changes don't invalidate existing cluster variables (#5752)
  • Remove unused forked package (#5794)
  • Testing: test/clusterctl-upgrade: also cleanup v1alpha4 clusters (#5902)
  • Testing: test/e2e/framework: log kind output during cluster creation (#5900)
  • KubeadmControlPlane: Added C-R validating webhook for KCP scale subresource (#5697)
  • Replace disable-grouping with grouping option in clusterctl describe command (#5550)
  • Remove usage of reserved word new in codebase (#5775)
  • Testing: Deprecate KCPUpgradeSpec, make ClusterUpgradeConformanceSpec more flexible (#5763)
  • Remove redundant parantheses across codebase (#5771)
  • Add deletion integration test for clusterclass (#5747)
  • Extend verify modules to detect changes in the test module (#5767)
  • Add patch validation to clusterclass webhook (#5735)
  • Move /exp/controllers to internal (#5651)
  • Bump dependencies: primarily CoreDNS/ gRPC (#5761)
  • ClusterClass: fix some nits in the topology reconciler (#5759)
  • ClusterClass: change PatchSelectorMatch fields to non-pointer (#5757)
  • ClusterClass: improve logging (#5751)
  • ClusterClass: Small improvements to validation messages (#5744)
  • Add image promotion make target using kpromo (#5713)
  • Tiltfile: disable leader election when debugging is enabled (#5750)
  • Testing: Default variable in ClusterClass quickstart test (#5748)
  • Run GitHub workflows on all pull requests (#5723)
  • Add Cluster and ClusterClass variable defaulting and validation (#5615)
  • Move webhooks to internal (#5711)
  • Tiltfile: deploy provider CRDs and CRs (#5712)
  • Testing: Implement clusterctl-config flag (#5707)
  • Move dockermachinepool controller to internal (#5690)
  • Add a predicate for skipping clusters without topology (#5665)
  • Change function name to prevent shadowing (#5692)
  • Resolved Spelling of webhook in defaulting.go (#5683)
  • Add Template compatibility checks to topology/checks package (#5641)
  • Use internal/builders in tests for webhook package (#5622)
  • Move experimental addon controllers to internal (#5639)
  • Move docker controller to internal (#5595)
  • Upgrade to Go 1.17, controller-runtime v0.11.x, k8s.io v1.23.0-alpha.4 (#5633)
  • Topology reconciler collects orphan templates in case of errors - version2 (#5523)
  • Move setup watch into separate func (#5618)
  • Move topology/internal/checks to top level internal package (#5616)
  • Add a check to the Cluster webhook to ensure ClusterClass exists (#5585)
  • Topology should be authoritative for metadata (#5581)
  • Testing: self-hosted (clusterctl move) with clusterclass (#5600)
  • Enable godot on top-level comments (#5591)
  • Update deprecation comments for Cluster and ClusterClass webhooks (#5609)
  • Move Cluster and ClusterClass webhook implementation to top level package (#5596)
  • Use evanphx/json-patch v5.6.0 (#5604)
  • Testing: Add tests for merge patch private func (#5579)
  • MachineDeploymentReconciler: log successful MachineSet adoption (#5575)
  • Remove template cleanup func in Topology controller (#5525)
  • Cleanup manager name from Tiltfile (#5554)
  • Make Cluster API dev tooling to work on arm64 (#5547)
  • Promote enxebre to maintainer (#5497)
  • Add nodeDrainTimeout to contract package (#5531)
  • Remove noisy log in machine pool upgrade test (#5543)
  • Replace ioutil with os/io packages, run gofmt (#5533)
  • Move cluster webhook to top-level package (#5518)
  • clusterctl: config cluster render ClusterClass before Cluster (#5515)
  • clusterctl: Add pre init hook to clusterctl upgrade test (#5521)
  • Tiltfile: infer manager without yq (#5528)
  • Tiltfile: Docs correction, Make label optional, infer manager name when not specified (#5507)
  • Integration tests for clusterclass (#5429)
  • Tiltfile: Enable debugging with delve (#5485)
  • Move internal test packages into internal/test (#5930)
  • Move KCP controllers to internal (#5929)
  • Use kubernetes version instead of Upgrade to/from (#5495)
  • Move ClusterClass webhook to a separate package (#5266)
  • ClusterToObjectsMapper: use namespace in client.List for namespaced resources (#5383)
  • Set MachineDeployment selector in managed clusters (#5492)
  • Add owner files for docs/ and test/ (#5469)
  • Testing: e2e tests for clusterctl quickstart flow using managed topologies (#5423)
  • Deprecates drain code copied from kubernetes/kubernetes (#5440)
  • Use k8s-staging-test-infra/gcb-docker-gcloud (#5474)
  • Unit test and builder cleanups (#5465)
  • Added ObjectMeta to DockerMachineTemplateResource, DockerClusterTemplateResource (#5441)
  • KubeadmControlPlane: add log message when cluster infra not ready (#5468)
  • CAPD: detect missing containers (#5434)
  • Testing: Enable logging to a file with prefixed timestamps (#5367)
  • Testing: Add initial clusterclass integration test (#5337)
  • Testing: Upgrade clusterctl upgrade test to v0.4.4 (#5408)
  • Added comments to WatchFilterValue in all the Reconcilers types. (#5403)
  • Promote sbueringer to cluster-api-test maintainer (#5504)
  • Promote randomvariable to reviewer of /test (#5529)
  • Promote randomvariable to KCP maintainer (#5508)
  • Upgrade to controller-tools v0.8.0 (#5912)
  • Upgrade to kustomize v4.4.1 (#5903)
  • Upgrade controller-runtime v0.11.0 (#5866)
  • Upgrade to Go 1.16.9 (#5530)
  • Update kpromo to v3.3.0-beta.3 (#5802)
  • Upgrade etcd v3.5.1 (#5797)

📖 Additionally, there have been 53 contributions to our documentation and book. (#6048, #6043, #6031, #6030, #6023, #6022, #6010, #5985, #5954, #5947, #5923, #5841, #5905, #5895, #5887, #5832, #5867, #5854, #5782, #5839, #5786, #5774, #5602, #5726, #5611, #5680, #5647, #5660, #5642, #5603, #5582, #5549, #5544, #5444, #5503, #5426, #5471, #5484, #5464, #5449, #5443, #5409, #5400, #5371, #6005, #5838, #5619, #5535, #5983, #5981, #5300, #5958, #5790)

👌 Kubernetes version support

  • Management Cluster: v1.19.x -> v1.23.x [1]
  • Workload Cluster: v1.18.x -> v1.23.x [1]

[1] There is an issue with CRDs in Kubernetes v1.23.{0-2}. ClusterClass with patches is affected by that (for more details please see this issue). Therefore we recommend to use Kubernetes v1.23.3+ with ClusterClass. Previous Kubernetes minor versions are not affected.

Thanks to all our contributors! 😊

Don't miss a new cluster-api release

NewReleases is sending notifications on new releases.