From 9341336f00a91602f221c26819456022b1335113 Mon Sep 17 00:00:00 2001 From: ColdsteelRail <574252631@qq.com> Date: Fri, 21 Nov 2025 13:12:43 +0800 Subject: [PATCH 1/7] feat: scaleOut using currentRevision by default --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index dc79737f..a77cb61f 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 kusionstack.io/kube-api v0.7.4-0.20250909095208-496f60eea9b5 kusionstack.io/kube-utils v0.2.1-0.20251120063041-6043805ee00d - kusionstack.io/kube-xset v0.0.0-20251111060928-069410a15229 + kusionstack.io/kube-xset v0.0.2-0.20251121050701-cc157f062369 kusionstack.io/resourceconsist v0.0.1 sigs.k8s.io/controller-runtime v0.17.3 ) diff --git a/go.sum b/go.sum index 715823f5..6155ad30 100644 --- a/go.sum +++ b/go.sum @@ -1083,6 +1083,8 @@ kusionstack.io/kube-utils v0.2.1-0.20251120063041-6043805ee00d h1:iQtnK03ia/MN4K kusionstack.io/kube-utils v0.2.1-0.20251120063041-6043805ee00d/go.mod h1:KEHTfo1Y8SWMODnckF6daO2cSIW0FJ8fkk8PBA5O2GU= kusionstack.io/kube-xset v0.0.0-20251111060928-069410a15229 h1:fTXG+HNxgM982pU/SnETY1fTRIcrrovs0Apn6h//zIo= kusionstack.io/kube-xset v0.0.0-20251111060928-069410a15229/go.mod h1:FceKgqapMHhwiyIqCziTQRW27fsSXpPS611AApnyiYI= +kusionstack.io/kube-xset v0.0.2-0.20251121050701-cc157f062369 h1:vS8/Yox3mm1d01V5q2dbDmY2USlSqPDiMbzzt6XQjZU= +kusionstack.io/kube-xset v0.0.2-0.20251121050701-cc157f062369/go.mod h1:FceKgqapMHhwiyIqCziTQRW27fsSXpPS611AApnyiYI= kusionstack.io/resourceconsist v0.0.1 h1:+k/jriq5Ld7fQUYfWSMGynz/FesHtl3Rk2fmQPjBe0g= kusionstack.io/resourceconsist v0.0.1/go.mod h1:816xS/fY6EOUbPFjXIWW/TGs8/YE46qP4ElKeIiwFdU= modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= From 0bd823164797dc94667881cae2d1522220cf4021 Mon Sep 17 00:00:00 2001 From: ColdsteelRail <574252631@qq.com> Date: Sun, 23 Nov 2025 21:13:48 +0800 Subject: [PATCH 2/7] use xset main --- config/manager/kustomization.yaml | 2 +- go.mod | 2 +- go.sum | 6 ++---- .../collaset/collaset_controller_test.go | 17 +++++++++++++++++ 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/config/manager/kustomization.yaml b/config/manager/kustomization.yaml index 2e820674..e9617245 100644 --- a/config/manager/kustomization.yaml +++ b/config/manager/kustomization.yaml @@ -4,5 +4,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization images: - name: controller - newName: kusionstack/kuperator + newName: coldsteelrail/kusion-kuperator newTag: test diff --git a/go.mod b/go.mod index a77cb61f..b64f6937 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 kusionstack.io/kube-api v0.7.4-0.20250909095208-496f60eea9b5 kusionstack.io/kube-utils v0.2.1-0.20251120063041-6043805ee00d - kusionstack.io/kube-xset v0.0.2-0.20251121050701-cc157f062369 + kusionstack.io/kube-xset v0.0.2-0.20251123131137-fd891f79d4a5 kusionstack.io/resourceconsist v0.0.1 sigs.k8s.io/controller-runtime v0.17.3 ) diff --git a/go.sum b/go.sum index 6155ad30..6cec0084 100644 --- a/go.sum +++ b/go.sum @@ -1081,10 +1081,8 @@ kusionstack.io/kube-api v0.7.4-0.20250909095208-496f60eea9b5 h1:/jbKYMeXiYnuxyJQ kusionstack.io/kube-api v0.7.4-0.20250909095208-496f60eea9b5/go.mod h1:e1jtrQH2LK5fD2nTyfIXG6nYrYbU8VXShRxTRwVPaLk= kusionstack.io/kube-utils v0.2.1-0.20251120063041-6043805ee00d h1:iQtnK03ia/MN4K/6O75EMI91ep7jpcIG0pWyeREBqtg= kusionstack.io/kube-utils v0.2.1-0.20251120063041-6043805ee00d/go.mod h1:KEHTfo1Y8SWMODnckF6daO2cSIW0FJ8fkk8PBA5O2GU= -kusionstack.io/kube-xset v0.0.0-20251111060928-069410a15229 h1:fTXG+HNxgM982pU/SnETY1fTRIcrrovs0Apn6h//zIo= -kusionstack.io/kube-xset v0.0.0-20251111060928-069410a15229/go.mod h1:FceKgqapMHhwiyIqCziTQRW27fsSXpPS611AApnyiYI= -kusionstack.io/kube-xset v0.0.2-0.20251121050701-cc157f062369 h1:vS8/Yox3mm1d01V5q2dbDmY2USlSqPDiMbzzt6XQjZU= -kusionstack.io/kube-xset v0.0.2-0.20251121050701-cc157f062369/go.mod h1:FceKgqapMHhwiyIqCziTQRW27fsSXpPS611AApnyiYI= +kusionstack.io/kube-xset v0.0.2-0.20251123131137-fd891f79d4a5 h1:XN6+j2V7zChvBCtala6ZuUEE/EsonJLnaexlhT3e1WE= +kusionstack.io/kube-xset v0.0.2-0.20251123131137-fd891f79d4a5/go.mod h1:FceKgqapMHhwiyIqCziTQRW27fsSXpPS611AApnyiYI= kusionstack.io/resourceconsist v0.0.1 h1:+k/jriq5Ld7fQUYfWSMGynz/FesHtl3Rk2fmQPjBe0g= kusionstack.io/resourceconsist v0.0.1/go.mod h1:816xS/fY6EOUbPFjXIWW/TGs8/YE46qP4ElKeIiwFdU= modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= diff --git a/pkg/controllers/collaset/collaset_controller_test.go b/pkg/controllers/collaset/collaset_controller_test.go index 3d3e8640..32008e71 100644 --- a/pkg/controllers/collaset/collaset_controller_test.go +++ b/pkg/controllers/collaset/collaset_controller_test.go @@ -1308,6 +1308,23 @@ var _ = Describe("collaset controller", func() { Eventually(func() error { return expectedStatusReplicas(c, cs, 0, 0, 0, 3, 2, 0, 0, 0) }, 10*time.Second, 1*time.Second).Should(BeNil()) + + // scale out partition and replicas parallel + Expect(updateCollaSetWithRetry(c, cs.Namespace, cs.Name, func(cls *appsv1alpha1.CollaSet) bool { + cls.Spec.Replicas = int32Pointer(10) + cls.Spec.UpdateStrategy.RollingUpdate = &appsv1alpha1.RollingUpdateCollaSetStrategy{ + ByPartition: &appsv1alpha1.ByPartition{ + Partition: int32Pointer(8), + }, + } + cls.Spec.Template.Spec.Containers[0].Image = "nginx:v2" + return true + })).Should(BeNil()) + + // scale out 7 replicas with current revision + Eventually(func() error { + return expectedStatusReplicas(c, cs, 0, 0, 0, 10, 2, 0, 0, 0) + }, 10*time.Second, 1*time.Second).Should(BeNil()) }) It("scale failed and update parallel", func() { From 22bb1b18f8c480c56289eed234ccecc7ae504171 Mon Sep 17 00:00:00 2001 From: ColdsteelRail <574252631@qq.com> Date: Mon, 24 Nov 2025 10:20:59 +0800 Subject: [PATCH 3/7] enhance ut --- pkg/controllers/collaset/collaset_controller_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/controllers/collaset/collaset_controller_test.go b/pkg/controllers/collaset/collaset_controller_test.go index 32008e71..d0846a33 100644 --- a/pkg/controllers/collaset/collaset_controller_test.go +++ b/pkg/controllers/collaset/collaset_controller_test.go @@ -4276,7 +4276,7 @@ var _ = Describe("collaset controller", func() { // wait for replace completed Eventually(func() error { return expectedStatusReplicas(c, cs, 0, 0, 0, 1, 1, 0, 0, 0) - }, 5*time.Second, 1*time.Second).Should(BeNil()) + }, 10*time.Second, 1*time.Second).Should(BeNil()) // origin pod is deleted Expect(c.List(context.TODO(), podList, client.InNamespace(cs.Namespace))).Should(BeNil()) From 248117e6c9a91ff5e2359f46ce7ade1aaa019a8b Mon Sep 17 00:00:00 2001 From: ColdsteelRail <574252631@qq.com> Date: Mon, 24 Nov 2025 11:12:14 +0800 Subject: [PATCH 4/7] enhance ut --- pkg/controllers/poddecoration/poddecoration_controller_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/controllers/poddecoration/poddecoration_controller_test.go b/pkg/controllers/poddecoration/poddecoration_controller_test.go index b5f5e6a0..ba04512f 100644 --- a/pkg/controllers/poddecoration/poddecoration_controller_test.go +++ b/pkg/controllers/poddecoration/poddecoration_controller_test.go @@ -59,7 +59,7 @@ var ( ) const ( - timeoutInterval = 5 * time.Second + timeoutInterval = 10 * time.Second pollInterval = 500 * time.Millisecond ) From b276c77fdacaf03361f8261b8b6ee384d2af2054 Mon Sep 17 00:00:00 2001 From: ColdsteelRail <574252631@qq.com> Date: Thu, 27 Nov 2025 20:33:23 +0800 Subject: [PATCH 5/7] fix updater --- go.mod | 2 +- go.sum | 4 ++++ pkg/controllers/collaset/collaset_controller.go | 2 +- pkg/controllers/collaset/pod_updater.go | 4 ++++ .../poddecoration/poddecoration_controller_test.go | 8 ++++++++ 5 files changed, 18 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index b64f6937..669a4a6c 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 kusionstack.io/kube-api v0.7.4-0.20250909095208-496f60eea9b5 kusionstack.io/kube-utils v0.2.1-0.20251120063041-6043805ee00d - kusionstack.io/kube-xset v0.0.2-0.20251123131137-fd891f79d4a5 + kusionstack.io/kube-xset v0.0.2-0.20251127122852-ae98b507b2cc kusionstack.io/resourceconsist v0.0.1 sigs.k8s.io/controller-runtime v0.17.3 ) diff --git a/go.sum b/go.sum index 6cec0084..2dbd7bee 100644 --- a/go.sum +++ b/go.sum @@ -1083,6 +1083,10 @@ kusionstack.io/kube-utils v0.2.1-0.20251120063041-6043805ee00d h1:iQtnK03ia/MN4K kusionstack.io/kube-utils v0.2.1-0.20251120063041-6043805ee00d/go.mod h1:KEHTfo1Y8SWMODnckF6daO2cSIW0FJ8fkk8PBA5O2GU= kusionstack.io/kube-xset v0.0.2-0.20251123131137-fd891f79d4a5 h1:XN6+j2V7zChvBCtala6ZuUEE/EsonJLnaexlhT3e1WE= kusionstack.io/kube-xset v0.0.2-0.20251123131137-fd891f79d4a5/go.mod h1:FceKgqapMHhwiyIqCziTQRW27fsSXpPS611AApnyiYI= +kusionstack.io/kube-xset v0.0.2-0.20251127121150-fff73eae688f h1:z2oMDtx197h9nZikWa3jDwkcKi8Euot9CGj/9I+6Jpc= +kusionstack.io/kube-xset v0.0.2-0.20251127121150-fff73eae688f/go.mod h1:FceKgqapMHhwiyIqCziTQRW27fsSXpPS611AApnyiYI= +kusionstack.io/kube-xset v0.0.2-0.20251127122852-ae98b507b2cc h1:wOqqe15yj1EeXKzAtVMRNRa4Iw2N59hLOgnu3u0p5SI= +kusionstack.io/kube-xset v0.0.2-0.20251127122852-ae98b507b2cc/go.mod h1:FceKgqapMHhwiyIqCziTQRW27fsSXpPS611AApnyiYI= kusionstack.io/resourceconsist v0.0.1 h1:+k/jriq5Ld7fQUYfWSMGynz/FesHtl3Rk2fmQPjBe0g= kusionstack.io/resourceconsist v0.0.1/go.mod h1:816xS/fY6EOUbPFjXIWW/TGs8/YE46qP4ElKeIiwFdU= modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= diff --git a/pkg/controllers/collaset/collaset_controller.go b/pkg/controllers/collaset/collaset_controller.go index 0c41a73b..a6cd6320 100644 --- a/pkg/controllers/collaset/collaset_controller.go +++ b/pkg/controllers/collaset/collaset_controller.go @@ -42,7 +42,7 @@ const ( func Add(mgr manager.Manager) error { xSetController := &CollaSetController{} - synccontrols.RegisterInPlaceIfPossibleUpdater(&inPlaceIfPossibleUpdater{}) + synccontrols.RegisterInPlaceIfPossibleUpdater(NewInPlaceIfPossibleUpdater) return kubexset.SetUpWithManager(mgr, xSetController) } diff --git a/pkg/controllers/collaset/pod_updater.go b/pkg/controllers/collaset/pod_updater.go index 4808ec44..c4ed272d 100644 --- a/pkg/controllers/collaset/pod_updater.go +++ b/pkg/controllers/collaset/pod_updater.go @@ -37,6 +37,10 @@ import ( var _ synccontrols.TargetUpdater = &inPlaceIfPossibleUpdater{} +func NewInPlaceIfPossibleUpdater() synccontrols.TargetUpdater { + return &inPlaceIfPossibleUpdater{} +} + type inPlaceIfPossibleUpdater struct { synccontrols.GenericTargetUpdater } diff --git a/pkg/controllers/poddecoration/poddecoration_controller_test.go b/pkg/controllers/poddecoration/poddecoration_controller_test.go index ba04512f..1cbef228 100644 --- a/pkg/controllers/poddecoration/poddecoration_controller_test.go +++ b/pkg/controllers/poddecoration/poddecoration_controller_test.go @@ -19,6 +19,7 @@ package poddecoration import ( "context" "fmt" + "net/url" "os" "path/filepath" "strings" @@ -900,6 +901,13 @@ var _ = BeforeSuite(func() { env = &envtest.Environment{ CRDDirectoryPaths: []string{filepath.Join("..", "..", "..", "config", "crd", "bases")}, + ControlPlane: envtest.ControlPlane{ + APIServer: &envtest.APIServer{ + URL: &url.URL{ + Host: "127.0.0.1:64431", + }, + }, + }, } config, err := env.Start() From f9aed4285fe65c120ec2428a58ad6bb1863b6bbb Mon Sep 17 00:00:00 2001 From: ColdsteelRail <574252631@qq.com> Date: Thu, 27 Nov 2025 20:43:02 +0800 Subject: [PATCH 6/7] fix diff --- go.sum | 4 ---- 1 file changed, 4 deletions(-) diff --git a/go.sum b/go.sum index 2dbd7bee..7c12d224 100644 --- a/go.sum +++ b/go.sum @@ -1081,10 +1081,6 @@ kusionstack.io/kube-api v0.7.4-0.20250909095208-496f60eea9b5 h1:/jbKYMeXiYnuxyJQ kusionstack.io/kube-api v0.7.4-0.20250909095208-496f60eea9b5/go.mod h1:e1jtrQH2LK5fD2nTyfIXG6nYrYbU8VXShRxTRwVPaLk= kusionstack.io/kube-utils v0.2.1-0.20251120063041-6043805ee00d h1:iQtnK03ia/MN4K/6O75EMI91ep7jpcIG0pWyeREBqtg= kusionstack.io/kube-utils v0.2.1-0.20251120063041-6043805ee00d/go.mod h1:KEHTfo1Y8SWMODnckF6daO2cSIW0FJ8fkk8PBA5O2GU= -kusionstack.io/kube-xset v0.0.2-0.20251123131137-fd891f79d4a5 h1:XN6+j2V7zChvBCtala6ZuUEE/EsonJLnaexlhT3e1WE= -kusionstack.io/kube-xset v0.0.2-0.20251123131137-fd891f79d4a5/go.mod h1:FceKgqapMHhwiyIqCziTQRW27fsSXpPS611AApnyiYI= -kusionstack.io/kube-xset v0.0.2-0.20251127121150-fff73eae688f h1:z2oMDtx197h9nZikWa3jDwkcKi8Euot9CGj/9I+6Jpc= -kusionstack.io/kube-xset v0.0.2-0.20251127121150-fff73eae688f/go.mod h1:FceKgqapMHhwiyIqCziTQRW27fsSXpPS611AApnyiYI= kusionstack.io/kube-xset v0.0.2-0.20251127122852-ae98b507b2cc h1:wOqqe15yj1EeXKzAtVMRNRa4Iw2N59hLOgnu3u0p5SI= kusionstack.io/kube-xset v0.0.2-0.20251127122852-ae98b507b2cc/go.mod h1:FceKgqapMHhwiyIqCziTQRW27fsSXpPS611AApnyiYI= kusionstack.io/resourceconsist v0.0.1 h1:+k/jriq5Ld7fQUYfWSMGynz/FesHtl3Rk2fmQPjBe0g= From bc1e36be0e30e9863044b0d282f95353b0b65fe7 Mon Sep 17 00:00:00 2001 From: ColdsteelRail <574252631@qq.com> Date: Thu, 27 Nov 2025 21:16:32 +0800 Subject: [PATCH 7/7] revert --- config/manager/kustomization.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/manager/kustomization.yaml b/config/manager/kustomization.yaml index e9617245..2e820674 100644 --- a/config/manager/kustomization.yaml +++ b/config/manager/kustomization.yaml @@ -4,5 +4,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization images: - name: controller - newName: coldsteelrail/kusion-kuperator + newName: kusionstack/kuperator newTag: test