Releases: clusternet/clusternet
v0.16.0
This release introduces multiple scheduling features, such as feature gate FailOver
will migrate workloads from not-ready clusters to healthy spare clusters, feature gate FeasibleClustersToleration
could tolerate failures on feasible clusters for dynamic scheduling with predictors.
In this release, we also improve the performance and efficiency to deploy applications to child clusters.
Changes Since v0.15.0
Full Changelog: v0.15.0...v0.16.0
What's Changed
New Features & Enhancements
- install controller-manager for local running by @dixudx in #658
- always show predictorDirectAccess in status by @autumn0207 in #660
- bump k8s dependencies to 1.26 by @dixudx in #659
- apply resources to child clusters with method PATCH by @abstractmj in #666
- tighten rbac rules by @dixudx in #671
- bump clusternet images to v0.15.2 by @dixudx in #672
- bump dependency yacht to v0.4.0 by @dixudx in #663
- taint cluster with not-ready conditions by @dixudx in #673
- migrate workloads from not-ready clusters to healthy spare clusters by @dixudx in #674
- user-defined prefixes for label aggregation by @yinsenyan in #679
- Bump github.com/docker/distribution from 2.8.1+incompatible to 2.8.2+incompatible by @dependabot in #685
- support different format base name by @yinsenyan in #681
- update github action checkout to v3 by @dixudx in #687
- configurable percentage of clusters to be scored for scheduling by @yiwei-C in #690
- Optimize yacht controller in mcs controllers by @yiwei-C in #691
- Update README.md by @guoguodan in #693
- Update ROADMAP.md by @guoguodan in #695
- update api doc of FeedInventory by @dixudx in #700
- add context to predictor http requests by @dixudx in #701
- Add license scan report and status by @fossabot in #702
- add action fossa by @dixudx in #703
- only run fossa for clusternet org by @dixudx in #704
- record metrics data for health checks with feature gate ComponentSLIs by @dixudx in #610
- tolerate predicting failures on feasible clusters by @dixudx in #705
- configurable client qps and burst to access child clusters by @dixudx in #707
- get dynamic client from cache by @stpolar in #708
- agent-side generic deployer uses configurable qps and burst by @dixudx in #709
- bump clusternet container images to v0.16.0 by @dixudx in #706
Bug Fixes
- fix feature gate usage of MultiClusterService by @dixudx in #655
- fix error message in cluster status controller by @dixudx in #657
- fix wrong status referring in framework by @autumn0207 in #661
- fix validating serviceAccount token by @xjbdjay in #667
- add missing child cluster token for hub proxy by @xjbdjay in #682
- fix missing clusternet-hub-proxy serviceaccount token by @xjbdjay in #683
- fix controller manager lease name by @zxbyoyoyo in #694
- Clean warning in pkg/agent/options/cluster_reg_options.go by @yeqiugt in #697
- fix nil pointer panic by @willzgli in #696
- fix pruning obsolete feeds when running in pull mode by @abstractmj in #711
- fix the merging algorithm when the previous target cluster is empty by @zhenkuang in #713
- update labels created by clusternet controller manager by @dixudx in #714
- fix metadata precondition failure by @dixudx in #716
Security
- fix CVE-2023-30622 to mitigate a potential risk which can be leveraged to make a cluster-level privilege escalation
New Contributors
- @xjbdjay made their first contribution in #667
- @guoguodan made their first contribution in #693
- @fossabot made their first contribution in #702
- @stpolar made their first contribution in #708
Thanks to all contributors!
v0.15.2
This is a patch version to fix GHSA-833c-xh79-p429.
What's Changed
- apply resources to child clusters with method PATCH by @abstractmj in #666
- tighten rbac rules by @dixudx in #671
- bump clusternet images to v0.15.2 by @dixudx in #672
Full Changelog: v0.15.1...v0.15.2
v0.15.1
This is a patch version of v0.15.0.
What's Changed
- fix feature gate usage of MultiClusterService by @dixudx in #655
- install controller-manager for local running by @dixudx in #658
- fix error message in cluster status controller by @dixudx in #657
- fix wrong status referring in framework by @autumn0207 in #661
- always show predictorDirectAccess in status by @autumn0207 in #660
- bump k8s dependencies to 1.26 by @dixudx in #659
- fix validating serviceAccount token by @xjbdjay in #667
New Contributors
Full Changelog: v0.15.0...v0.15.1
v0.15.0
On Mar 4th, Clusternet was approved to join CNCF as a Sandbox project. 🎉🎉🎉 Thanks for the endeavour of the whole community. It was a HUGE milestone. ⛳⛳⛳
This release introduces a new component clusternet-controller-manager
, which inherits the capabilities from clusternet-hub
. With this new component, clusternet-hub
will focus on serving as an apiserver to provide shadow APIs and peer connections.
In this release, we also add new features and make multiple enhancements, such as simplifying cobra commands with common boilerplate codes and use named flagsets, migrating legacy self-cluster lease, adding metrics for Clusternet components, etc.
Changes Since v0.14.0
Full Changelog: v0.14.0...v0.15.0
What's Changed
New Features & Enhancements
- introduce new component clusternet-controller-manager (by @zxbyoyoyo in #638, #646, #650 and by @dixudx in #647, #648, #649, #654)
- bump k8s dependencies to 1.25.6 (by @lmxia in #597, by @yiwei-C in #581)
- bump golang version to 1.19 (by @dixudx in #584)
- migrate legacy self-cluster lease by @xieydd in #586
- validate bootstrap token for cluster registration by @xieydd in #593
- format the function name of tests (by @autumn0207 in #594)
- optimize the validations of ClusterRegistrationOptions (by @autumn0207 in #595)
- replace deprecated func ioutil.ReadFile (by @yiwei-C in #599)
- simplify cobra commands with common boilerplate codes and use named flagsets (by @yiwei-C in #600, #601, #602 and #603)
- add scheduler profile validate testcase (by @lmxia in #604)
- format clusternet-agent options (by @xieydd in #607)
- serve metrics in clusternet-scheduler (by @dixudx in #606)
- serve metrics in clusternet-agent (by @xieydd in #608)
- bump helm to v3.10.3 (by @xieydd in #615)
- bump golangci-lint to 1.51.2 (by @lmxia in #616)
- add mcs featuregate (by @lmxia in #621)
- pass down cluster ID to replicas predictor (by @yiwei-C in #622)
- bump controller-gen to v0.10.0 (by @abstractmj in #623)
- add wait parameter on helm uninstall (by @jasine in #628)
- validate name when creating shadow namespace by @dixudx in #636
- add helm options upgradeAtomic parameter (by @wl-chen in #635, by @dixudx in #637)
- bump github.com/containerd/containerd from 1.6.12 to 1.6.18 by @dependabot in #585
- bump actions/cache from 3.2.5 to 3.3.1 (by @dependabot in #612, #626, #629)
- Clusternet joins CNCF by @dixudx in #624
- bump actions/setup-go from 3 to 4 by @dependabot in #630
- simplify the algorithm for merging feed replicas by @yinsenyan in #632
- add gci linter back by @dixudx in #640
- bump github.com/docker/docker from 20.10.17+incompatible to 20.10.24+incompatible by @dependabot in #652
- bump clusternet v0.15.0 container images by @dixudx in #589
Bug Fixes
- fix bugs in TestGenerateClusterName (by @autumn0207 in #596)
- use namespaced name of Subscription for new Bases (by @yinsenyan in #642)
- use codecov token in CI pipeline to avoid occasionally 404 errors (by @autumn0207 in #587)
- do deepcopy before add finalizer to avoid mis-updating (by @abstractmj in #644)
- triggering merge group checks in pipelines (by @yiwei-C in #598)
Security
- fix CVE-2022-41723 on maliciously crafted HTTP/2 stream causing DoS for small requests (by @dixudx in #591)
Roadmap
New Contributors
- @autumn0207 made their first contribution in #587
- @xieydd made their first contribution in #586
- @abstractmj made their first contribution in #623
- @wl-chen made their first contribution in #635
- @zxbyoyoyo made their first contribution in #638
Thanks to all contributors!
v0.14.0
This release improved the stability and introduced metrics for clusternet-hub
. A critical bug, which led to unexpected feed deletions when clusternet-agent
and clusternet-hub
were running in the same cluster, was fixed as well. A new option ReplaceCRDs
was introduced for HelmChart
, which may help mitigate the annoying CRDs updating issues in the Helm community.
Changes Since v0.13.0
Full Changelog: v0.13.0...v0.14.0
What's Changed
New Features & Enhancements
- add subGroup unit test by @Sad-polar-bear in #546
- add dependabot by @yiwei-C in #553
- Updated metrics for clusternet-hub by @yiwei-C in #566
- add MAINTAINERS file by @dixudx in #567
- add chart option to replace crds before install or upgrade by @jasine in #576
- bump go version to 1.18 by @dixudx in #577
- update clusternet deployment image to v0.14.0 by @dixudx in #583
Bug Fixes
- fix con not get the correct status of the old subscription object by @zhenkuang in #550
- fix incorrect comments by @dixudx in #552
- fix merging TargetClusters by @yinsenyan in #560
- no need enqueue when FeedInventory feature disable by @silenceper in #570
- when request is not set, it needs to be filled by limits by @silenceper in #573
- fix unexpected manifest deletion when delete ns in parent-child cluster by @lmxia in #574
Workflow
- Bump goreleaser/goreleaser-action from 2 to 3 by @dependabot in #557
- Bump actions/cache from 2.1.5 to 3.0.11 by @dependabot in #554
- Bump actions/setup-go from 2 to 3 by @dependabot in #555
- Bump actions/checkout from 2 to 3 by @dependabot in #556
- Bump peter-evans/repository-dispatch from 1.1.3 to 2.1.1 by @dependabot in #558
- Bump goreleaser/goreleaser-action from 3 to 4 by @dependabot in #561
- Bump actions/cache from 3.0.11 to 3.2.1 by @dependabot in #562
- Bump actions/cache from 3.2.1 to 3.2.2 by @dependabot in #565
- Bump github.com/containerd/containerd from 1.6.6 to 1.6.12 by @dependabot in #568
- Bump actions/cache from 3.2.2 to 3.2.3 by @dependabot in #575
- Bump actions/cache from 3.2.3 to 3.2.4 by @dependabot in #578
- Bump github.com/emicklei/go-restful from 2.9.5+incompatible to 2.16.0+incompatible by @dependabot in #580
- Bump actions/cache from 3.2.4 to 3.2.5 by @dependabot in #582
New Contributors
- @zhenkuang made their first contribution in #550
- @dependabot made their first contribution in #557
Thanks to all contributors!
v0.13.0
What's Changed
- ignore rescheduler when no available cluster by @silenceper in #501
- update codecov to v3 by @dixudx in #502
- add mcs related cluster roles by @lmxia in #506
- Fix non-nil pointer error about ClusterRoleBindingList by @xieyanker in #507
- populate legacy secret-based sa token by @dixudx in #503
- fix rollback-with-no-crd-error by @lmxia in #510
- Add routes from parent cluster to child cluster pod by @Airren in #512
- fix unmateched serviceimport port name in mcs-api example by @Airren in #513
- add list verb to clusternet:hub clusterRole by @metang326 in #514
- add scheduler config and support out-of-tree scheduler plugin by @silenceper in #498
- use discovery v1beta1 by @metang326 in #518
- aggregate work nodes labels with threshold by @lmxia in #520
- fix helm description cannot delete by @DanielXLee in #525
- bugfix: fix the improper usage of
version
package by @mars1024 in #523 - only enable service import/export controllers after EndpointSlice v1beta1 promoted by @mars1024 in #529
- only discovery endpointslice for k8s upper than 1.21.0 by @yiwei-C in #532
- support scheduling by cluster subgroup by @Sad-polar-bear in #524
- fix missing status update of description by @Sad-polar-bear in #534
- update subGroup example fields by @Sad-polar-bear in #535
- sort the clusters by descending order of decimal part in dynamicDivideReplicas by @Garrybest in #533
- update RBAC rules for clusternet-agent running in capi by @dixudx in #537
- fix bindingClusters not update and generic description cannot delete by @DanielXLee in #539
- non blocking callback handler for feature gate Recovery by @silenceper in #542
- bump container images to v0.13.0 by @dixudx in #540
New Contributors
- @xieyanker made their first contribution in #507
- @Airren made their first contribution in #512
- @metang326 made their first contribution in #514
- @mars1024 made their first contribution in #523
Full Changelog: v0.12.0...v0.13.0
v0.12.0
This release brings Clusternet to a "discovery" world. Clusters creating by cluster-api will be discovered automatically and registered to parent cluster. Auto-labelling for managed clusters is also available now. By integrating mcs-api, multi-cluster services are discoverable and accessible across clusters with a virtual IP.
Changes Since v0.11.0
Full Changelog: v0.11.0...v0.12.0
What's Changed
New Features & Enhancements
- addedcluster type standard (by @dixudx in #429)
- discovering clusters created by cluster-api (by @dixudx in #489, in #490)
- cluster auto-labelling based on Node Feature Discovery (by @lmxia in #482)
- integrated mcs-api to enable multi-cluster serivces discovery (by @lmxia in #432, #436, #435, #451, #453, #455)
- configurable dedicated namespace when registering a child cluster (by @DanielXLee in #452)
- dryrun support for child clusters (by @yeqiugt in #463)
- added syncHandlerFunc for feedinventory controller (by @silenceper in #472)
- used bool point for AppPusher (by @DanielXLee in #474)
- only aggregated labels from worker nodes (by @lmxia in #480)
- added more extra flags for helm install/upgrade (by @DanielXLee in #467)
- added flag
peer-advertise-address
forclusternet-hub
(by @dixudx in #443) - supported reinstalling helm release (by @DanielXLee in #477)
- passed down extra headers with prefix
clusternet-
(by @dixudx in #491) - used patch instead of UpdateStatus to prevent conflict (by @Garrybest in #437)
- set max length of cluster name to 60 (by @dixudx in #440)
- replaced
io/ioutil
package withio
package (by @0xff-dev in #449) - supported scheduler workqueue metrics (by @silenceper in #450)
- supported shadowing crd itself (by @dixudx in #496)
Bug Fixes
- bump helm version to
v3.8.2
to solve memory leak (by @DanielXLee in #495) - don't override empty original object for jsonpatch (by @DanielXLee in #431)
- fixed shadow crd scheme encoding (by @dixudx in #433)
- re-queued Helm Release after helm repo got an update (by @dixudx in #438)
- added status patch rules for scheduler (by @Garrybest in #442)
- ignored custom metrics api group (by @silenceper in #447)
- fixed nil assignments when collecting metrics (by @dixudx in #460)
- ignored apiservices self group checking (by @dixudx in #465, #466)
- added random fake uid when skipping validating objects (by @dixudx in #469)
- forgot workqueue key for a successful scheduling (by @silenceper in #471)
- rewired
MaxHistory
for chartUpgrade
action (by @dixudx in #485) - fix merging
TargetClusters
(by @yinsenyan in #487) - ignored non-harmful missing parent storage errors (by @dixudx in #492)
User Experiences
- added
WHAT
param to specify building targets (by @dixudx in #424) - bumped build image and go version (by @dixudx in #481)
New Contributors
Thanks to all contributors!
v0.11.0
This release brings in multiple fantastic features and improves the performance. This is a big update of Clusternet
. Running clusternet-hub
with high availability is possible now. And the performance of clusternet-scheduler
is improved as well. Dynamic replica scheduling is fully supported. Applications with multiple replicas can be divided and scheduled to multiple clusters based on cluster dynamic capacity. Please check out this tutorial. Moreover, the aggregated statuses of all deployed resources can be shown by visiting the status of Subscription
.
Changes Since v0.10.0
Full Changelog: v0.10.0...v0.11.0
What's Changed
New Features & Enhancements
- Made
clusternet-hub
high availability (by @dixudx in #378, #405, #411 and by @xrmzju in #387) - Aggregated resource/feed statuses from child clusters (@aven-ai in #358, #359, #360). The aggregated status of all deployed resources can be shown by visiting the status of
Subscription
. For every feed/resource, you can check the detailed status (fieldfeedStatusDetails
) per cluster and the summarized status (fieldfeedStatusSummary
) of all clusters instatus.aggregatedStatuses
. - Added new scheduling strategy
Dynamic
forclusternet-scheduler
. Applications with multiple replicas now can be divided and scheduled to multiple clusters based on cluster dynamic capacity. (by @Garrybest in #366, #395, #400, #419). Default predictors run on everyclusternet-agent
, external predictors had been supported as well (by @yinsenyan in #367 and @dixudx in #418). Learn more from this tutorial. - Improved the performance of
clusternet-scheduler
(by @Garrybest in #383, #399, #388) - Added support to override HelmChart spec (by @DanielXLee in #385 and @dixudx in #416, #417)
- Aggregated common labels starting with
node.clusternet.io/
from nodes in child clusters (@lmxia in #396, #413). If all nodes of a child cluster have such common labels, then these labels will be aggregated and updated to its correspondingManagedCluster
object. - Real-time cpu/mem usage and pod statistics can be collected from metrics server by enabling flag
--use-metrics-server=true
onclusternet-agent
side (by @GeorgeGuo2018 in #362, #365 and @DanielXLee in #421) - Added intermediate status for the helm chart (by @DanielXLee in #382)
- Used sepearte clientsets for election (by @xrmzju in #389)
- Added env for cluster-cidr and service-cidr (by @snstaberah in #391), which would be useful when the kubernetes components were not running as static pods.
Bug Fixes
- Fixed statefulset feedinventory (by @dixudx in #398)
- Removed go routine for storing parent cluster secret (by @DanielXLee in #381)
- Fixed WATCH events on transforming and encoding (by @dixudx in #407)
- Removed Manifest finalizer in shadow api (by @caryxychen in #408)
- Fixed localizations when scaling (by @Garrybest in #406)
- Pruned localizations when scheduling strategy was changed (by @dixudx in #401)
- Fixed clusterIP for non headless services (by @dixudx in #404)
User Experiences
- Added human readable printer, which let
kubectl clusternet
plugin having consistent user experience withkubectl
(by @lmxia in #384) - Added linter gci (by @dixudx in #397)
- All the docs were migratee to https://clusternet.io (by @dixudx in #409)
Security
- Fixed containerd CVE-2022-31030: A bug was found in containerd's CRI implementation where programs inside a container can cause the containerd daemon to consume memory without bound during invocation of the
ExecSync
API. This can cause containerd to consume all available memory on the computer, denying service to other legitimate workloads. Kubernetes and crictl can both be configured to use containerd's CRI implementation;ExecSync
may be used when running probes or when executing processes via an "exec" facility. (by @dixudx in #364)
New Contributors
- @aven-ai made their first contribution in #358
- @GeorgeGuo2018 made their first contribution in #362
- @xrmzju made their first contribution in #387
- @snstaberah made their first contribution in #391
- @caryxychen made their first contribution in #408
Thanks to all contributors!
Clusternet v0.10.0
This release introduced a new concept predictor
. It is a on-going feature, which will be fully available in next release (v0.11.0). With predictor
, we could dynamically schedule replicas to child clusters that have the capacity to hold them. Also in this release, we optimized the scheduler framework, making it more adaptable to multiple cluster scenarios. A new feature on cluster-aware Globalization was introduced as well. Meantime, we improved user experience on trying Clusternet with kind
and Docker Desktop.
Changes Since v0.9.1
Full Changelog: v0.9.1...v0.10.0
What's Changed
New Features & Enhancements
- Introduced new concept
predictor
, which can be used to predict containable replicas in each matching child clusters. This is a on-going feature, which will be fully available in next release (v0.11.0). In this release, following tasks were finished,- Added replica predictor interface, which can be implemented by external customized predictors. (by @dixudx in #274)
- Added a extensible framework for predictor server, and a built-in predictor. (by @qianjun1993 in #346, #336)
- Added a new scheduling plugin
predictor
. (by @yinsenyan in #354) - Bumped default predictor server into
clusternet-agent
. (by @yinsenyan in #344, by @qianjun1993 in #355)
- Added extra arg
--threadiness
for hub. (by @DanielXLee in #314) - Added annotation to support skipping validation. (by @dixudx in #317)
- Optimized scheduler framework for multi-cluster. (by @Garrybest in #322)
- Cluster-aware overrides from Globalization can be applied now. (by @jasine in #334)
- Rescheduled subscriptions when binding clusters got a change on labels. (by @DanielXLee in #339, #341)
- Optimized context usage and shared informer factory in clusternet-agent. (by @dixudx in #356, #357)
Bug Fixes
- Fixed inconsistent helm release name. (by @jasine in #309)
- Fixed incorrect cluster and service ip range in
ManagedCluster
status. (by @jasine in #311) - Removing duplicate module import. (by @yinsenyan in #313)
- Fixed resource
AlreadyExists
error for shadow apis (by @dixudx in #316, #330) - Fixed empty overrides deserialization. (by @dixudx in #323)
- Fixed issue on deploying helm charts to target namespace. (by @dixudx in #326)
- Label
apps.clusternet.io/owned-by-description
was changed to annotation to avoid label length limit. (by @silenceper in #327) - Fixed updating feedInventory with missing resource version. (by @dixudx in #332)
- Fixed resource controller running more than one. (by @lmxia in #352)
- Converged resync conditions from upper updates and rolling back. (by @lmxia in #343)
- Fixed enqueue issue in feedinventory. (by @Garrybest in #340)
User Experiences
- Images can be built faster and better. (by @dixudx in #319)
- Removed default log level (used to be
-v 4
) to avoid log flooded. (by @dixudx in #320) - Added cluster register name for local kind clusters. (by @Garrybest in #321)
- Used port-mapping endpoints for kind clusters on Docker Desktop Mac. (by @bartdong in #328)
Security
- Fixed CVE GHSA-hp87-p4gw-j4gq: An issue in the
Unmarshal
function in Go-Yaml v3 causes the program to crash when attempting to deserialize invalid input. (by @dixudx in #348)
New Contributors
- @jasine made their first contribution in #309
- @yinsenyan made their first contribution in #313
- @bartdong made their first contribution in #328
- @qianjun1993 made their first contribution in #336
Thanks to all contributors!
Clusternet v0.9.1
This is a patch version for v0.9.0.