Skip to content

Commit bcffdfc

Browse files
committed
feat: cluster-manager新增泳道特性
1 parent 9552e83 commit bcffdfc

File tree

23 files changed

+200
-520
lines changed

23 files changed

+200
-520
lines changed

Diff for: bcs-services/bcs-cluster-manager/go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager
33
go 1.20
44

55
replace (
6-
github.com/Tencent/bk-bcs/bcs-common => ../../bcs-common
6+
github.com/Tencent/bk-bcs/bcs-common => github.com/LidolLxf/bk-bcs/bcs-common v0.0.0-20250115101422-10b01a987a53
77
k8s.io/api => k8s.io/api v0.26.1
88
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.26.1
99
k8s.io/apimachinery => k8s.io/apimachinery v0.26.1

Diff for: bcs-services/bcs-cluster-manager/internal/actions/cluster/delete_vcluster.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ func (da *DeleteVirtualAction) getClusterInfo() error {
9999

100100
func (da *DeleteVirtualAction) cleanLocalInformation() error {
101101
// async delete cluster dependency info
102-
go asyncDeleteImportedClusterInfo(context.Background(), da.model, da.cluster)
102+
go asyncDeleteImportedClusterInfo(da.ctx, da.model, da.cluster)
103103

104104
// finally clean cluster
105105
da.cluster.Status = common.StatusDeleted

Diff for: bcs-services/bcs-cluster-manager/internal/actions/nodetemplate/create.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ func (ca *CreateAction) validate() error {
177177
return err
178178
}
179179

180-
proInfo, errLocal := project.GetProjectManagerClient().GetProjectInfo(ca.req.ProjectID, true)
180+
proInfo, errLocal := project.GetProjectManagerClient().GetProjectInfo(ca.ctx, ca.req.ProjectID, true)
181181
if errLocal == nil {
182182
ca.project = proInfo
183183
}

Diff for: bcs-services/bcs-cluster-manager/internal/actions/nodetemplate/delete.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ func (da *DeleteAction) validate() error {
6363

6464
da.template = template
6565

66-
proInfo, errLocal := project.GetProjectManagerClient().GetProjectInfo(da.req.ProjectID, true)
66+
proInfo, errLocal := project.GetProjectManagerClient().GetProjectInfo(da.ctx, da.req.ProjectID, true)
6767
if errLocal == nil {
6868
da.project = proInfo
6969
}

Diff for: bcs-services/bcs-cluster-manager/internal/actions/nodetemplate/update.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ func (ua *UpdateAction) validate() error {
157157
return err
158158
}
159159

160-
proInfo, errLocal := project.GetProjectManagerClient().GetProjectInfo(ua.req.ProjectID, true)
160+
proInfo, errLocal := project.GetProjectManagerClient().GetProjectInfo(ua.ctx, ua.req.ProjectID, true)
161161
if errLocal == nil {
162162
ua.project = proInfo
163163
}

Diff for: bcs-services/bcs-cluster-manager/internal/actions/notifytemplate/create.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ func (ca *CreateAction) validate() error {
134134
return err
135135
}
136136

137-
proInfo, errLocal := project.GetProjectManagerClient().GetProjectInfo(ca.req.ProjectID, true)
137+
proInfo, errLocal := project.GetProjectManagerClient().GetProjectInfo(ca.ctx, ca.req.ProjectID, true)
138138
if errLocal == nil {
139139
ca.project = proInfo
140140
}

Diff for: bcs-services/bcs-cluster-manager/internal/actions/notifytemplate/delete.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ func (da *DeleteAction) validate() error {
6464

6565
da.template = template
6666

67-
proInfo, errLocal := project.GetProjectManagerClient().GetProjectInfo(da.req.ProjectID, true)
67+
proInfo, errLocal := project.GetProjectManagerClient().GetProjectInfo(da.ctx, da.req.ProjectID, true)
6868
if errLocal == nil {
6969
da.project = proInfo
7070
}

Diff for: bcs-services/bcs-cluster-manager/internal/actions/thirdparty/project_quota.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func (ga *GetProjectResourceQuotaUsageAction) validate() error {
5959
}
6060

6161
// check projectId or Code
62-
proInfo, errLocal := project.GetProjectManagerClient().GetProjectInfo(ga.req.GetProjectID(), false)
62+
proInfo, errLocal := project.GetProjectManagerClient().GetProjectInfo(ga.ctx, ga.req.GetProjectID(), false)
6363
if errLocal != nil {
6464
return errLocal
6565
}

Diff for: bcs-services/bcs-cluster-manager/internal/actions/thirdparty/resource.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ func (ga *GetProviderResourceUsageAction) getBizInfoByPools() error {
157157
continue
158158
}
159159

160-
proInfo, errLocal := project.GetProjectManagerClient().GetProjectInfo(cls.ProjectID, true)
160+
proInfo, errLocal := project.GetProjectManagerClient().GetProjectInfo(ga.ctx, cls.ProjectID, true)
161161
if errLocal != nil {
162162
blog.Errorf("getProviderDevicePools GetProjectInfo[%s] failed: %v",
163163
group.ClusterID, errLocal)

Diff for: bcs-services/bcs-cluster-manager/internal/app/app.go

+36-48
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,13 @@ import (
4040
commonutil "github.com/Tencent/bk-bcs/bcs-common/common/util"
4141
"github.com/Tencent/bk-bcs/bcs-common/common/version"
4242
"github.com/Tencent/bk-bcs/bcs-common/pkg/auth/iam"
43+
"github.com/Tencent/bk-bcs/bcs-common/pkg/bcsapi/bcsproject"
44+
"github.com/Tencent/bk-bcs/bcs-common/pkg/bcsapi/clustermanager"
45+
"github.com/Tencent/bk-bcs/bcs-common/pkg/discovery"
46+
"github.com/Tencent/bk-bcs/bcs-common/pkg/header"
4347
"github.com/Tencent/bk-bcs/bcs-common/pkg/i18n"
4448
"github.com/Tencent/bk-bcs/bcs-common/pkg/odm/drivers"
4549
"github.com/Tencent/bk-bcs/bcs-common/pkg/odm/drivers/mongo"
46-
"github.com/Tencent/bk-bcs/bcs-common/pkg/otel/trace/constants"
4750
"github.com/Tencent/bk-bcs/bcs-common/pkg/otel/trace/micro"
4851
"github.com/Tencent/bk-bcs/bcs-services/pkg/bcs-auth/middleware"
4952
restful "github.com/emicklei/go-restful"
@@ -66,7 +69,6 @@ import (
6669
cmcommon "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/common"
6770
"github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/commonhandler"
6871
"github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/daemon"
69-
"github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/discovery"
7072
"github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/handler"
7173
"github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/lock"
7274
etcdlock "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/lock/etcd"
@@ -79,7 +81,6 @@ import (
7981
"github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/cmdb"
8082
"github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/encrypt"
8183
"github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/gse"
82-
"github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/install/addons"
8384
"github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/install/helm"
8485
installTypes "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/install/types"
8586
"github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/job"
@@ -412,18 +413,6 @@ func (cm *ClusterManager) initRemoteClient() error { // nolint
412413
if err != nil {
413414
return err
414415
}
415-
// init addons client
416-
err = addons.SetAddonsClient(&installTypes.Options{
417-
Enable: cm.opt.Helm.Enable,
418-
GateWay: cm.opt.Helm.GateWay,
419-
Token: cm.opt.Helm.Token,
420-
Module: cm.opt.Helm.Module,
421-
EtcdRegistry: cm.microRegistry,
422-
ClientTLSConfig: cm.clientTLSConfig,
423-
})
424-
if err != nil {
425-
return err
426-
}
427416

428417
// init encrypt client
429418
err = encrypt.SetEncryptClient(cm.opt.Encrypt)
@@ -708,30 +697,46 @@ func (cm *ClusterManager) initRegistry() error {
708697

709698
// initDiscovery discovery client
710699
func (cm *ClusterManager) initDiscovery() {
711-
cm.disc = discovery.NewModuleDiscovery(cmcommon.ClusterManagerServiceDomain, cm.microRegistry)
700+
if !discovery.UseServiceDiscovery() {
701+
cm.disc = discovery.NewModuleDiscovery(cmcommon.ClusterManagerServiceDomain, cm.microRegistry)
702+
clustermanager.SetClientConfig(cm.tlsConfig, cm.disc)
703+
} else {
704+
clustermanager.SetClientConfig(cm.tlsConfig, nil)
705+
}
712706
blog.Infof("init discovery for cluster manager successfully")
713707

714708
// enable discovery resource module
715709
if cm.opt.ResourceManager.Enable {
716-
cm.resourceDisc = discovery.NewModuleDiscovery(cm.opt.ResourceManager.Module, cm.microRegistry)
717-
blog.Infof("init discovery for resource manager successfully")
718-
719-
resource.SetResourceClient(&resource.Options{
720-
Enable: cm.opt.ResourceManager.Enable,
721-
Module: cm.opt.ResourceManager.Module,
722-
TLSConfig: cm.clientTLSConfig,
723-
}, cm.resourceDisc)
710+
if !discovery.UseServiceDiscovery() {
711+
cm.resourceDisc = discovery.NewModuleDiscovery(cm.opt.ResourceManager.Module, cm.microRegistry)
712+
blog.Infof("init discovery for resource manager successfully")
713+
714+
resource.SetResourceClient(&resource.Options{
715+
Enable: cm.opt.ResourceManager.Enable,
716+
Module: cm.opt.ResourceManager.Module,
717+
TLSConfig: cm.clientTLSConfig,
718+
}, cm.resourceDisc)
719+
} else {
720+
resource.SetResourceClient(&resource.Options{
721+
Enable: cm.opt.ResourceManager.Enable,
722+
Module: cm.opt.ResourceManager.Module,
723+
TLSConfig: cm.clientTLSConfig,
724+
}, nil)
725+
}
724726
}
725727

726728
// enable discovery project module
727729
if cm.opt.ProjectManager.Enable {
728-
cm.projectDisc = discovery.NewModuleDiscovery(cm.opt.ProjectManager.Module, cm.microRegistry)
729-
blog.Infof("init discovery for project manager successfully")
730-
731730
project.SetProjectClient(&project.Options{
732-
Module: cm.opt.ProjectManager.Module,
733-
TLSConfig: cm.clientTLSConfig,
734-
}, cm.projectDisc)
731+
Module: cm.opt.ProjectManager.Module,
732+
})
733+
if !discovery.UseServiceDiscovery() {
734+
cm.projectDisc = discovery.NewModuleDiscovery(cm.opt.ProjectManager.Module, cm.microRegistry)
735+
blog.Infof("init discovery for project manager successfully")
736+
bcsproject.SetClientConfig(cm.clientTLSConfig, cm.projectDisc)
737+
} else {
738+
bcsproject.SetClientConfig(cm.clientTLSConfig, nil)
739+
}
735740
}
736741
}
737742

@@ -802,26 +807,10 @@ func (cm *ClusterManager) initTunnelServer(router *mux.Router) error {
802807
return nil
803808
}
804809

805-
// CustomMatcher for http header
806-
func CustomMatcher(key string) (string, bool) {
807-
switch key {
808-
case "X-Request-Id":
809-
return "X-Request-Id", true
810-
case middleware.CustomUsernameHeaderKey:
811-
return middleware.CustomUsernameHeaderKey, true
812-
case middleware.InnerClientHeaderKey:
813-
return middleware.InnerClientHeaderKey, true
814-
case constants.Traceparent:
815-
return constants.GrpcTraceparent, true
816-
default:
817-
return runtime.DefaultHeaderMatcher(key)
818-
}
819-
}
820-
821810
// init http grpc gateway
822811
func (cm *ClusterManager) initHTTPGateway(router *mux.Router) error {
823812
gwmux := runtime.NewServeMux(
824-
runtime.WithIncomingHeaderMatcher(CustomMatcher),
813+
runtime.WithIncomingHeaderMatcher(header.CustomHeaderMatcher),
825814
runtime.WithMarshalerOption(runtime.MIMEWildcard, &runtime.JSONPb{
826815
OrigName: true,
827816
EmitDefaults: true,
@@ -1104,7 +1093,6 @@ func (cm *ClusterManager) close() {
11041093
closeCtx, closeCancel := context.WithTimeout(context.Background(), 10*time.Second)
11051094
defer closeCancel()
11061095
helm.GetHelmManagerClient().Stop()
1107-
addons.GetAddonsClient().Stop()
11081096
cm.extraServer.Shutdown(closeCtx) // nolint
11091097
cm.httpServer.Shutdown(closeCtx) // nolint
11101098
cm.daemon.Stop()

Diff for: bcs-services/bcs-cluster-manager/internal/cloudprovider/common/component.go

+17-17
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ func InstallWatchComponentByHelm(ctx context.Context, projectID,
146146
blog.Errorf("InstallWatchComponentByHelm[%s] GetWatchInstaller failed: %v", taskID, err)
147147
return err
148148
}
149-
err = installer.Install(clusterID, values)
149+
err = installer.Install(ctx, clusterID, values)
150150
if err != nil {
151151
blog.Errorf("InstallWatchComponentByHelm[%s] Install failed: %v", taskID, err)
152152
return err
@@ -166,7 +166,7 @@ func DeleteWatchComponentByHelm(ctx context.Context, projectID,
166166
blog.Errorf("DeleteWatchComponentByHelm[%s] GetWatchInstaller failed: %v", traceID, err)
167167
return err
168168
}
169-
err = install.Uninstall(clusterID)
169+
err = install.Uninstall(ctx, clusterID)
170170
if err != nil {
171171
blog.Errorf("DeleteWatchComponentByHelm[%s] Uninstall failed: %v", traceID, err)
172172
return err
@@ -178,7 +178,7 @@ func DeleteWatchComponentByHelm(ctx context.Context, projectID,
178178

179179
err = loop.LoopDoFunc(timeContext, func() error {
180180
var exist bool
181-
exist, err = install.IsInstalled(clusterID)
181+
exist, err = install.IsInstalled(ctx, clusterID)
182182
if err != nil {
183183
blog.Errorf("DeleteWatchComponentByHelm[%s] failed[%s:%s]: %v", traceID, projectID, clusterID, err)
184184
return nil
@@ -260,7 +260,7 @@ func InstallImagePullSecretByAddon(ctx context.Context, projectID, clusterID str
260260
blog.Errorf("InstallImagePullSecretByAddon[%s] GetAddonInstaller failed: %v", taskID, err)
261261
return err
262262
}
263-
err = installer.Install(clusterID, "")
263+
err = installer.Install(ctx, clusterID, "")
264264
if err != nil {
265265
blog.Errorf("InstallImagePullSecretByAddon[%s] Install failed: %v", taskID, err)
266266
return err
@@ -280,7 +280,7 @@ func DeleteImagePullSecretByAddon(ctx context.Context, projectID,
280280
blog.Errorf("DeleteImagePullSecretByAddon[%s] GetAddonInstaller failed: %v", traceID, err)
281281
return err
282282
}
283-
err = install.Uninstall(clusterID)
283+
err = install.Uninstall(ctx, clusterID)
284284
if err != nil {
285285
blog.Errorf("DeleteImagePullSecretByAddon[%s] Uninstall failed: %v", traceID, err)
286286
return err
@@ -474,7 +474,7 @@ func ensureVclusterWithInstaller(ctx context.Context, info *VclusterInfo) error
474474
blog.Errorf("ensureVclusterWithInstaller[%s] GetVclusterInstaller failed: %v", taskID, err)
475475
return err
476476
}
477-
installed, err := installer.IsInstalled(info.SrcClusterID)
477+
installed, err := installer.IsInstalled(ctx, info.SrcClusterID)
478478
if err != nil {
479479
blog.Errorf("ensureVclusterWithInstaller[%s] IsInstalled failed: %v", taskID, err)
480480
return err
@@ -498,17 +498,17 @@ func ensureVclusterWithInstaller(ctx context.Context, info *VclusterInfo) error
498498

499499
// install or upgrade
500500
if installed {
501-
if errUpgrade := installer.Upgrade(info.SrcClusterID, values); errUpgrade != nil {
501+
if errUpgrade := installer.Upgrade(ctx, info.SrcClusterID, values); errUpgrade != nil {
502502
return fmt.Errorf("upgrade app failed, err %s", errUpgrade)
503503
}
504504
} else {
505-
if errInstall := installer.Install(info.SrcClusterID, values); errInstall != nil {
505+
if errInstall := installer.Install(ctx, info.SrcClusterID, values); errInstall != nil {
506506
return fmt.Errorf("install app failed, err %s", errInstall)
507507
}
508508
}
509509

510510
// check status
511-
ok, err := installer.CheckAppStatus(info.SrcClusterID, time.Minute*10, false)
511+
ok, err := installer.CheckAppStatus(ctx, info.SrcClusterID, time.Minute*10, false)
512512
if err != nil {
513513
return fmt.Errorf("check app status failed, err %s", err)
514514
}
@@ -596,7 +596,7 @@ func DeleteVclusterComponentByHelm(ctx context.Context, info *VclusterInfo) erro
596596
blog.Errorf("DeleteVclusterComponentByHelm[%s] GetVclusterInstaller failed: %v", taskID, err)
597597
return err
598598
}
599-
err = install.Uninstall(info.SrcClusterID)
599+
err = install.Uninstall(ctx, info.SrcClusterID)
600600
if err != nil {
601601
blog.Errorf("DeleteVclusterComponentByHelm[%s] Uninstall failed: %v", taskID, err)
602602
return err
@@ -607,7 +607,7 @@ func DeleteVclusterComponentByHelm(ctx context.Context, info *VclusterInfo) erro
607607
defer cancel()
608608

609609
err = loop.LoopDoFunc(timeContext, func() error {
610-
exist, errInstall := install.IsInstalled(info.SrcClusterID)
610+
exist, errInstall := install.IsInstalled(ctx, info.SrcClusterID)
611611
if errInstall != nil {
612612
blog.Errorf("DeleteVclusterComponentByHelm[%s] failed[%s:%s]: %v", taskID, info.ProjectID,
613613
info.SrcClusterID, errInstall)
@@ -749,7 +749,7 @@ func ensureAutoScalerWithInstaller(ctx context.Context, nodeGroups []proto.NodeG
749749
blog.Errorf("ensureAutoScalerWithInstaller[%s] CreateClusterNamespace failed: %v", taskID, err)
750750
}
751751

752-
installed, err := installer.IsInstalled(as.ClusterID)
752+
installed, err := installer.IsInstalled(ctx, as.ClusterID)
753753
if err != nil {
754754
blog.Errorf("ensureAutoScalerWithInstaller IsInstalled failed: %v", err)
755755
return err
@@ -776,14 +776,14 @@ func ensureAutoScalerWithInstaller(ctx context.Context, nodeGroups []proto.NodeG
776776
}
777777
// install or upgrade
778778
if installed {
779-
if err = installer.Upgrade(as.ClusterID, values); err != nil {
779+
if err = installer.Upgrade(ctx, as.ClusterID, values); err != nil {
780780
return fmt.Errorf("upgrade app failed, err %s", err)
781781
}
782782

783783
cloudprovider.GetStorageModel().CreateTaskStepLogInfo(context.Background(),
784784
taskID, stepName, "upgrade app successful")
785785
} else {
786-
if err = installer.Install(as.ClusterID, values); err != nil {
786+
if err = installer.Install(ctx, as.ClusterID, values); err != nil {
787787
return fmt.Errorf("install app failed, err %s", err)
788788
}
789789

@@ -793,7 +793,7 @@ func ensureAutoScalerWithInstaller(ctx context.Context, nodeGroups []proto.NodeG
793793

794794
// check status
795795
var ok bool
796-
ok, err = installer.CheckAppStatus(as.ClusterID, time.Minute*10, false)
796+
ok, err = installer.CheckAppStatus(ctx, as.ClusterID, time.Minute*10, false)
797797
if err != nil {
798798
return fmt.Errorf("check app status failed, err %s", err)
799799
}
@@ -814,11 +814,11 @@ func ensureAutoScalerWithInstaller(ctx context.Context, nodeGroups []proto.NodeG
814814
return fmt.Errorf("transAutoScalingOptionToValues failed, err: %s", err)
815815
}
816816

817-
if err = installer.Upgrade(as.ClusterID, values); err != nil {
817+
if err = installer.Upgrade(ctx, as.ClusterID, values); err != nil {
818818
return fmt.Errorf("upgrade app failed, err %s", err)
819819
}
820820
// check status
821-
ok, errCheck := installer.CheckAppStatus(as.ClusterID, time.Minute*10, false)
821+
ok, errCheck := installer.CheckAppStatus(ctx, as.ClusterID, time.Minute*10, false)
822822
if errCheck != nil {
823823
return fmt.Errorf("check app status failed, err %s", err)
824824
}

Diff for: bcs-services/bcs-cluster-manager/internal/daemon/cluster.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ func (d *Daemon) reportClusterGroupNodeNum(error chan<- error) {
5252
}
5353

5454
bizId := ""
55-
pInfo, errLocal := project.GetProjectManagerClient().GetProjectInfo(group.ProjectID, true)
55+
pInfo, errLocal := project.GetProjectManagerClient().GetProjectInfo(d.ctx, group.ProjectID, true)
5656
if errLocal == nil {
5757
bizId = pInfo.GetBusinessID()
5858
}

0 commit comments

Comments
 (0)