From a20197ebccea416cfcc237d47a67de0150395b9d Mon Sep 17 00:00:00 2001 From: dove0012 Date: Fri, 29 Aug 2025 14:43:23 +0800 Subject: [PATCH 1/4] =?UTF-8?q?1.=20=E4=BF=AE=E6=94=B9=E8=BF=9E=E6=8E=A5cl?= =?UTF-8?q?ustermanager=E5=92=8Cprojectmanager=E7=9A=84=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E4=B8=BAgrpc=202.=20=E6=B7=BB=E5=8A=A0vpc=E3=80=81cluster?= =?UTF-8?q?=E5=92=8Ctemplateconfig=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bcs-services/bcs-platform-manager/cmd/api.go | 3 - bcs-services/bcs-platform-manager/go.mod | 70 +++++- .../pkg/api/cloudvpc/cloudvpc.go | 51 +++++ .../pkg/api/cluster/cluster.go | 216 ++++++++++++++++++ .../bcs-platform-manager/pkg/api/routes.go | 28 ++- .../pkg/api/templateconfig/templateconfig.go | 62 +++++ .../pkg/component/bcs/bcs.go | 177 -------------- .../pkg/component/bcs/bcs_test.go | 27 --- .../component/bcs/clustermanager/client.go | 43 ++++ .../component/bcs/clustermanager/cloudvpc.go | 70 ++++++ .../component/bcs/clustermanager/cluster.go | 95 ++++++++ .../bcs/clustermanager/templateconfig.go | 70 ++++++ .../pkg/component/bcs/project.go | 80 ------- .../pkg/component/bcs/project_test.go | 31 --- .../component/bcs/projectmanager/client.go | 43 ++++ .../component/bcs/projectmanager/project.go | 70 ++++++ .../bcs-platform-manager/pkg/config/base.go | 2 + .../bcs-platform-manager/pkg/config/bcs.go | 1 + .../pkg/discovery/discovery.go | 30 ++- .../bcs-platform-manager/pkg/rest/context.go | 4 - .../pkg/rest/middleware/auth.go | 6 +- .../pkg/rest/middleware/project.go | 12 +- 22 files changed, 835 insertions(+), 356 deletions(-) create mode 100644 bcs-services/bcs-platform-manager/pkg/api/cloudvpc/cloudvpc.go create mode 100644 bcs-services/bcs-platform-manager/pkg/api/cluster/cluster.go create mode 100644 bcs-services/bcs-platform-manager/pkg/api/templateconfig/templateconfig.go delete mode 100644 bcs-services/bcs-platform-manager/pkg/component/bcs/bcs.go delete mode 100644 bcs-services/bcs-platform-manager/pkg/component/bcs/bcs_test.go create mode 100644 bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/client.go create mode 100644 bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/cloudvpc.go create mode 100644 bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/cluster.go create mode 100644 bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/templateconfig.go delete mode 100644 bcs-services/bcs-platform-manager/pkg/component/bcs/project.go delete mode 100644 bcs-services/bcs-platform-manager/pkg/component/bcs/project_test.go create mode 100644 bcs-services/bcs-platform-manager/pkg/component/bcs/projectmanager/client.go create mode 100644 bcs-services/bcs-platform-manager/pkg/component/bcs/projectmanager/project.go diff --git a/bcs-services/bcs-platform-manager/cmd/api.go b/bcs-services/bcs-platform-manager/cmd/api.go index ee2213ea71..ebb70ddc87 100644 --- a/bcs-services/bcs-platform-manager/cmd/api.go +++ b/bcs-services/bcs-platform-manager/cmd/api.go @@ -24,7 +24,6 @@ import ( "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/api" "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component" - "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component/bcs" "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/config" "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/discovery" "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/storage" @@ -81,7 +80,5 @@ func runAPIServer(ctx context.Context, g *run.Group, opt *option) error { g.Add(server.Run, func(err error) { _ = server.Close(); component.GetAuditClient().Close() }) g.Add(sd.Run, func(error) {}) - bcs.CacheListClusters() - return nil } diff --git a/bcs-services/bcs-platform-manager/go.mod b/bcs-services/bcs-platform-manager/go.mod index 2e670a68ab..c17dc0d795 100644 --- a/bcs-services/bcs-platform-manager/go.mod +++ b/bcs-services/bcs-platform-manager/go.mod @@ -2,8 +2,22 @@ module github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager go 1.23.0 +replace ( + // github.com/databus23/helm-diff/v3 limit by go 1.23 + github.com/databus23/helm-diff/v3 => github.com/databus23/helm-diff/v3 v3.9.11 + helm.sh/helm/v3 => github.com/adevjoe/helm/v3 v3.17.3-tx.1 + k8s.io/api => k8s.io/api v0.32.2 + k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.32.2 + k8s.io/apimachinery => k8s.io/apimachinery v0.32.2 + k8s.io/cli-runtime => k8s.io/cli-runtime v0.32.2 + k8s.io/client-go => k8s.io/client-go v0.32.2 + k8s.io/kubectl => k8s.io/kubectl v0.32.2 + k8s.io/kubernetes => k8s.io/kubernetes v1.13.0 +) + require ( - github.com/Tencent/bk-bcs/bcs-common v0.0.0-20250729093702-993155773a94 + github.com/Tencent/bk-bcs/bcs-common v0.0.0-20250710101644-24c34c9b3919 + github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager v0.0.0-20250825015655-cf938f258a8b github.com/Tencent/bk-bcs/bcs-services/pkg v0.0.0-20250729093702-993155773a94 github.com/dustin/go-humanize v1.0.1 github.com/ggicci/httpin v0.20.1 @@ -26,7 +40,7 @@ require ( github.com/spf13/viper v1.20.1 github.com/stretchr/testify v1.10.0 github.com/swaggo/http-swagger v1.3.4 - go-micro.dev/v4 v4.10.2 + go-micro.dev/v4 v4.9.0 go.mongodb.org/mongo-driver v1.17.4 go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo v0.62.0 go.opentelemetry.io/otel v1.37.0 @@ -40,6 +54,7 @@ require ( github.com/KyleBanks/depth v1.2.1 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/ProtonMail/go-crypto v1.1.3 // indirect + github.com/Tencent/bk-bcs/bcs-runtime/bcs-k8s/kubernetes/common v0.0.0-20220330120237-0bbed74dcf6d // indirect github.com/TencentBlueKing/bk-audit-go-sdk v0.0.6 // indirect github.com/TencentBlueKing/gopkg v1.1.0 // indirect github.com/TencentBlueKing/iam-go-sdk v0.1.6 // indirect @@ -53,31 +68,43 @@ require ( github.com/coreos/go-systemd/v22 v22.3.2 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect github.com/cyphar/filepath-securejoin v0.2.5 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect + github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect + github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect + github.com/fxamacker/cbor/v2 v2.7.0 // indirect github.com/gabriel-vasile/mimetype v1.4.8 // indirect github.com/ggicci/owl v0.8.2 // indirect + github.com/go-acme/lego/v4 v4.4.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.6.0 // indirect github.com/go-git/go-git/v5 v5.13.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-openapi/jsonpointer v0.19.5 // indirect - github.com/go-openapi/jsonreference v0.20.0 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/spec v0.20.9 // indirect - github.com/go-openapi/swag v0.21.1 // indirect + github.com/go-openapi/swag v0.23.0 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-sql-driver/mysql v1.7.1 // indirect + github.com/gobwas/httphead v0.1.0 // indirect + github.com/gobwas/pool v0.2.1 // indirect + github.com/gobwas/ws v1.2.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-migrate/migrate/v4 v4.17.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v1.0.0 // indirect + github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/go-cmp v0.7.0 // indirect + github.com/google/gofuzz v1.2.0 // indirect + github.com/gorilla/handlers v1.5.1 // indirect + github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect @@ -86,12 +113,14 @@ require ( github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect + github.com/juju/ratelimit v1.0.1 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/klauspost/compress v1.18.0 // indirect github.com/labstack/echo/v4 v4.13.4 // indirect github.com/labstack/gommon v0.4.2 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect + github.com/mattbaird/jsonpatch v0.0.0-20200820163806-098863c1fc24 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/miekg/dns v1.1.50 // indirect @@ -100,19 +129,21 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/montanaflynn/stats v0.7.1 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/nxadm/tail v1.4.8 // indirect github.com/openzipkin/zipkin-go v0.4.3 // indirect github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c // indirect github.com/parnurzeal/gorequest v0.2.16 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.5.0 // indirect github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sagikazarmark/locafero v0.7.0 // indirect + github.com/samuel/go-zookeeper v0.0.0-20201211165307-7117e9ea2414 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/skeema/knownhosts v1.3.0 // indirect @@ -128,15 +159,16 @@ require ( github.com/urfave/cli/v2 v2.8.1 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect + github.com/x448/float16 v0.8.4 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/scram v1.1.2 // indirect github.com/xdg-go/stringprep v1.0.4 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect - go.etcd.io/etcd/api/v3 v3.5.4 // indirect - go.etcd.io/etcd/client/pkg/v3 v3.5.4 // indirect - go.etcd.io/etcd/client/v3 v3.5.4 // indirect + go.etcd.io/etcd/api/v3 v3.5.5 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.5.5 // indirect + go.etcd.io/etcd/client/v3 v3.5.5 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect go.opentelemetry.io/otel/exporters/jaeger v1.3.0 // indirect @@ -152,16 +184,30 @@ require ( golang.org/x/crypto v0.40.0 // indirect golang.org/x/mod v0.25.0 // indirect golang.org/x/net v0.42.0 // indirect + golang.org/x/oauth2 v0.30.0 // indirect golang.org/x/sync v0.16.0 // indirect golang.org/x/sys v0.34.0 // indirect + golang.org/x/term v0.33.0 // indirect golang.org/x/text v0.27.0 // indirect + golang.org/x/time v0.11.0 // indirect golang.org/x/tools v0.34.0 // indirect + google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/protobuf v1.36.6 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect - k8s.io/klog/v2 v2.100.1 // indirect + k8s.io/api v0.32.2 // indirect + k8s.io/apimachinery v0.32.2 // indirect + k8s.io/client-go v11.0.0+incompatible // indirect + k8s.io/klog v1.0.0 // indirect + k8s.io/klog/v2 v2.130.1 // indirect + k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect + k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect moul.io/http2curl v1.0.0 // indirect + sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect ) diff --git a/bcs-services/bcs-platform-manager/pkg/api/cloudvpc/cloudvpc.go b/bcs-services/bcs-platform-manager/pkg/api/cloudvpc/cloudvpc.go new file mode 100644 index 0000000000..d2446dc281 --- /dev/null +++ b/bcs-services/bcs-platform-manager/pkg/api/cloudvpc/cloudvpc.go @@ -0,0 +1,51 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Package cloudvpc cloudvpc operate +package cloudvpc + +import ( + "context" + + "github.com/Tencent/bk-bcs/bcs-common/pkg/bcsapi/clustermanager" + clustermgr "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager" +) + +// CreateCloudVPC 创建VPC +// @Summary 创建VPC +// @Tags Logs +// @Produce json +// @Success 200 {array} k8sclient.Container +// @Router /cloudvpc [post] +func CreateCloudVPC(ctx context.Context, req *clustermanager.CreateCloudVPCRequest) (*bool, error) { + result, err := clustermgr.CreateCloudVPC(ctx, req) + if err != nil { + return nil, err + } + + return &result, nil +} + +// UpdateCloudVPC 更新VPC +// @Summary 更新VPC +// @Tags Logs +// @Produce json +// @Success 200 {array} k8sclient.Container +// @Router /cloudvpc [put] +func UpdateCloudVPC(ctx context.Context, req *clustermanager.UpdateCloudVPCRequest) (*bool, error) { + result, err := clustermgr.UpdateCloudVPC(ctx, req) + if err != nil { + return nil, err + } + + return &result, nil +} diff --git a/bcs-services/bcs-platform-manager/pkg/api/cluster/cluster.go b/bcs-services/bcs-platform-manager/pkg/api/cluster/cluster.go new file mode 100644 index 0000000000..1c19063e92 --- /dev/null +++ b/bcs-services/bcs-platform-manager/pkg/api/cluster/cluster.go @@ -0,0 +1,216 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Package cluster cluster operate +package cluster + +import ( + "context" + "fmt" + "sort" + + "github.com/Tencent/bk-bcs/bcs-common/pkg/bcsapi/clustermanager" + clustermgr "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager" + projectrmgr "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component/bcs/projectmanager" + "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/config" +) + +// ListClusterReq list cluster request +type ListClusterReq struct { + ProjectID string `json:"projectID" in:"query=projectID"` + BusinessID string `json:"businessID" in:"query=businessID"` + Provider string `json:"provider" in:"query=provider"` + SortKey string `json:"sortKey" in:"query=sortKey"` + SortWay string `json:"sortWay" in:"query=sortWay"` // asc or desc +} + +// ListClusterRsp list cluster response +type ListClusterRsp struct { + ClusterID string `json:"clusterID"` + ClusterName string `json:"clusterName"` + Provider string `json:"provider"` + Region string `json:"region"` + VpcID string `json:"vpcID"` + ProjectID string `json:"projectID"` + BusinessID string `json:"businessID"` + Environment string `json:"environment"` + EngineType string `json:"engineType"` + ClusterType string `json:"clusterType"` + Label map[string]string `json:"label"` + Creator string `json:"creator"` + CreateTime string `json:"createTime"` + UpdateTime string `json:"updateTime"` + SystemID string `json:"systemID"` + ManageType string `json:"manageType"` + Status string `json:"status"` + Updater string `json:"updater"` + NetworkType string `json:"networkType"` + ModuleID string `json:"moduleID"` + IsCommonCluster bool `json:"isCommonCluster"` + Description string `json:"description"` + ClusterCategory string `json:"clusterCategory"` + IsShared bool `json:"isShared"` + Link string `json:"link"` + SortKey string `json:"-"` + SortWay string `json:"-"` +} + +// SortCluster 排序 +type SortCluster []*ListClusterRsp + +// Len 实现sort.Interface接口的Len方法 +func (a SortCluster) Len() int { return len(a) } + +// Less 实现sort.Interface接口的Less方法,这里我们先按Name排序,如果Name相同则按Age排序 +func (a SortCluster) Less(i, j int) bool { + sortKey := a[0].SortKey + sortWay := a[0].SortWay + + switch sortKey { + case "clusterID": + if sortWay == "desc" { + return a[i].ClusterID > a[j].ClusterID + } + return a[i].ClusterID < a[j].ClusterID + case "clusterName": + if sortWay == "desc" { + return a[i].ClusterName > a[j].ClusterName + } + return a[i].ClusterName < a[j].ClusterName + default: + return a[i].CreateTime > a[j].CreateTime + } +} + +// Swap 实现sort.Interface接口的Swap方法 +func (a SortCluster) Swap(i, j int) { a[i], a[j] = a[j], a[i] } + +// UpdateClusterOperatorReq update cluster operator request +type UpdateClusterOperatorReq struct { + ClusterID string `json:"clusterID" in:"path=clusterID"` + Creator string `json:"creator"` + Updater string `json:"updater"` +} + +// UpdateClusterProjectBusinessReq update cluster projectID or businessID request +type UpdateClusterProjectBusinessReq struct { + ClusterID string `json:"clusterID" in:"path=clusterID"` + ProjectID string `json:"projectID"` + BusinessID string `json:"businessID"` +} + +// ListCluster 获取cluster列表 +// @Summary 获取cluster列表 +// @Tags Logs +// @Produce json +// @Success 200 {array} k8sclient.Container +// @Router /cluster [get] +func ListCluster(ctx context.Context, req *ListClusterReq) (*[]*ListClusterRsp, error) { + projects, err := projectrmgr.ListProject(ctx) + if err != nil { + return nil, err + } + + clusters, err := clustermgr.ListCluster(ctx, &clustermanager.ListClusterV2Req{ + ProjectID: req.ProjectID, + BusinessID: req.BusinessID, + Provider: req.Provider, + }) + if err != nil { + return nil, err + } + + result := make([]*ListClusterRsp, 0) + for _, cluster := range clusters { + result = append(result, &ListClusterRsp{ + ClusterID: cluster.ClusterID, + ClusterName: cluster.ClusterName, + Provider: cluster.Provider, + Region: cluster.Region, + VpcID: cluster.VpcID, + ProjectID: cluster.ProjectID, + BusinessID: cluster.BusinessID, + Environment: cluster.Environment, + EngineType: cluster.EngineType, + ClusterType: cluster.ClusterType, + Creator: cluster.Creator, + CreateTime: cluster.CreateTime, + UpdateTime: cluster.UpdateTime, + ManageType: cluster.ManageType, + Status: cluster.Status, + Updater: cluster.Updater, + Description: cluster.Description, + ClusterCategory: cluster.ClusterCategory, + Link: func() string { + projectCode := "" + for _, project := range projects { + if project.ProjectID == cluster.ProjectID { + projectCode = project.ProjectCode + break + } + } + return fmt.Sprintf("%s/bcs/projects/%s/clusters?clusterId=%s", + config.G.BCS.Host, projectCode, cluster.ClusterID) + }(), + SortKey: req.SortKey, + SortWay: req.SortWay, + Label: cluster.Labels, + SystemID: cluster.SystemID, + NetworkType: cluster.NetworkType, + ModuleID: cluster.ModuleID, + IsCommonCluster: cluster.IsCommonCluster, + IsShared: cluster.IsShared, + }) + } + + sort.Sort(SortCluster(result)) + + return &result, nil +} + +// UpdateClusterOperator 更新cluster 创建人和更新人 +// @Summary 更新cluster 创建人和更新人 +// @Tags Logs +// @Produce json +// @Success 200 {array} k8sclient.Container +// @Router /cluster/{clusterID}/operator [put] +func UpdateClusterOperator(ctx context.Context, req *UpdateClusterOperatorReq) (*bool, error) { + result, err := clustermgr.UpdateCluster(ctx, &clustermanager.UpdateClusterReq{ + ClusterID: req.ClusterID, + Creator: req.Creator, + Updater: req.Updater, + }) + if err != nil { + return nil, err + } + + return &result, nil +} + +// UpdateClusterProjectBusiness 更新cluster 项目或业务ID +// @Summary 更新cluster 项目或业务ID +// @Tags Logs +// @Produce json +// @Success 200 {array} k8sclient.Container +// @Router /cluster/{clusterID}/projectidorbusinessid [put] +func UpdateClusterProjectBusiness(ctx context.Context, req *UpdateClusterProjectBusinessReq) (*bool, error) { + result, err := clustermgr.UpdateCluster(ctx, &clustermanager.UpdateClusterReq{ + ClusterID: req.ClusterID, + ProjectID: req.ProjectID, + BusinessID: req.BusinessID, + }) + if err != nil { + return nil, err + } + + return &result, nil +} diff --git a/bcs-services/bcs-platform-manager/pkg/api/routes.go b/bcs-services/bcs-platform-manager/pkg/api/routes.go index b523f8ff02..b0c6a7146f 100644 --- a/bcs-services/bcs-platform-manager/pkg/api/routes.go +++ b/bcs-services/bcs-platform-manager/pkg/api/routes.go @@ -23,7 +23,9 @@ import ( "github.com/go-chi/chi/v5" httpSwagger "github.com/swaggo/http-swagger" - "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/api/pod" + "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/api/cloudvpc" + "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/api/cluster" + "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/api/templateconfig" "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/config" "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/rest" "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/rest/middleware" @@ -109,14 +111,24 @@ func (a *APIServer) newRoutes() http.Handler { func registerRoutes() http.Handler { r := chi.NewRouter() - // 日志相关接口 - - r.Route("/projects/{projectId}/clusters/{clusterId}", func(route chi.Router) { - route.Use(middleware.AuthenticationRequired, middleware.ProjectParse, middleware.ClusterAuthorization) - route.Use(middleware.VisitorsRequired, middleware.Tracing, middleware.Audit) - - route.Get("/containers", rest.Handle(pod.GetPodContainers)) + // vpc 相关接口 + r.Route("/platformmanager/v1", func(route chi.Router) { + route.Use(middleware.AuthenticationRequired, middleware.Tracing, middleware.Audit) + + // vpc 相关接口 + route.Post("/cloudvpc", rest.Handle(cloudvpc.CreateCloudVPC)) + route.Put("/cloudvpc", rest.Handle(cloudvpc.UpdateCloudVPC)) + + // templateconfig 相关接口 + route.Post("/templateconfigs", rest.Handle(templateconfig.CreateTemplateConfig)) + route.Delete("/templateconfigs/{templateConfigID}", rest.Handle(templateconfig.DeleteTemplateConfig)) + + // cluster 相关接口 + route.Get("/cluster", rest.Handle(cluster.ListCluster)) + route.Put("/cluster/{clusterID}/operator", rest.Handle(cluster.UpdateClusterOperator)) + route.Put("/cluster/{clusterID}/project_business", rest.Handle(cluster.UpdateClusterProjectBusiness)) }) + return r } diff --git a/bcs-services/bcs-platform-manager/pkg/api/templateconfig/templateconfig.go b/bcs-services/bcs-platform-manager/pkg/api/templateconfig/templateconfig.go new file mode 100644 index 0000000000..115c2f68ce --- /dev/null +++ b/bcs-services/bcs-platform-manager/pkg/api/templateconfig/templateconfig.go @@ -0,0 +1,62 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Package templateconfig templateconfig operate +package templateconfig + +import ( + "context" + + "github.com/Tencent/bk-bcs/bcs-common/pkg/bcsapi/clustermanager" + clustermgr "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager" +) + +// DeleteTemplateConfigReq delete template config request +type DeleteTemplateConfigReq struct { + TemplateConfigID string `json:"cloudID" in:"path=templateConfigID"` + BusinessID string `json:"businessID" in:"query=businessID"` + ProjectID string `json:"projectID" in:"query=projectID"` +} + +// CreateTemplateConfig 创建TemplateConfig +// @Summary 创建TemplateConfig +// @Tags Logs +// @Produce json +// @Success 200 {array} k8sclient.Container +// @Router /templateConfig [post] +func CreateTemplateConfig(ctx context.Context, req *clustermanager.CreateTemplateConfigRequest) (*bool, error) { + result, err := clustermgr.CreateTemplateConfig(ctx, req) + if err != nil { + return nil, err + } + + return &result, nil +} + +// DeleteTemplateConfig 删除TemplateConfig +// @Summary 删除TemplateConfig +// @Tags Logs +// @Produce json +// @Success 200 {array} k8sclient.Container +// @Router /templateConfig/{templateConfigID} [delete] +func DeleteTemplateConfig(ctx context.Context, req *DeleteTemplateConfigReq) (*bool, error) { + result, err := clustermgr.DeleteTemplateConfig(ctx, &clustermanager.DeleteTemplateConfigRequest{ + TemplateConfigID: req.TemplateConfigID, + BusinessID: req.BusinessID, + ProjectID: req.ProjectID, + }) + if err != nil { + return nil, err + } + + return &result, nil +} diff --git a/bcs-services/bcs-platform-manager/pkg/component/bcs/bcs.go b/bcs-services/bcs-platform-manager/pkg/component/bcs/bcs.go deleted file mode 100644 index 596d7ab633..0000000000 --- a/bcs-services/bcs-platform-manager/pkg/component/bcs/bcs.go +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making Blueking Container Service available. - * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. - * Licensed under the MIT License (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * http://opensource.org/licenses/MIT - * Unless required by applicable law or agreed to in writing, software distributed under - * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, - * either express or implied. See the License for the specific language governing permissions and - * limitations under the License. - */ - -// Package bcs 集群操作 -package bcs - -import ( - "encoding/json" - "errors" - "fmt" - "time" - - "github.com/Tencent/bk-bcs/bcs-common/common/blog" - - "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component" - "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/config" - "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/storage" -) - -const ( - // VirtualClusterType vcluster - VirtualClusterType = "virtual" -) - -// Cluster 集群信息 -type Cluster struct { - ProjectID string `json:"projectID"` - ClusterID string `json:"clusterID"` - ClusterName string `json:"clusterName"` - BKBizID string `json:"businessID"` - Status string `json:"status"` - IsShared bool `json:"is_shared"` - ClusterType string `json:"clusterType"` - NetworkSettings struct { - MaxNodePodNum int `json:"maxNodePodNum"` - MaxServiceNum int `json:"maxServiceNum"` - } `json:"networkSettings"` - ExtraInfo struct { - NamespaceInfo string `json:"namespaceInfo"` - Provider string `json:"provider"` - VclusterNetwork string `json:"vclusterNetwork"` - } `json:"extraInfo"` - VclusterInfo VclusterInfo `json:"-"` -} - -// VclusterInfo vcluster info, parse from extraInfo.namespaceInfo -type VclusterInfo struct { - Name string `json:"name"` - Quota VclusterQuota `json:"quota"` -} - -// VclusterQuota vcluster quota, parse from extraInfo.namespaceInfo -type VclusterQuota struct { - CPURequests string `json:"cpuRequests"` - CPULimits string `json:"cpuLimits"` - MemoryRequests string `json:"MemoryRequests"` - MemoryLimits string `json:"memoryLimits"` -} - -// String : -func (c *Cluster) String() string { - return fmt.Sprintf("cluster<%s, %s>", c.ClusterName, c.ClusterID) -} - -// IsVirtual check cluster is vcluster -func (c *Cluster) IsVirtual() bool { - return c.ClusterType == VirtualClusterType -} - -// CacheListClusters 定时同步 cluster 列表 -func CacheListClusters() { - go func() { - ListClusters() - for range time.Tick(time.Minute * 1) { - blog.Infof("list clusters running") - ListClusters() - blog.Infof("list clusters end") - } - }() -} - -const listClustersCacheKey = "bcs.ListClusters" - -// ListClusters 获取集群列表 -func ListClusters() { - url := fmt.Sprintf("%s/bcsapi/v4/clustermanager/v1/cluster", config.G.BCS.Host) - - resp, err := component.GetClient().R(). - SetAuthToken(config.G.BCS.Token). - Get(url) - - if err != nil { - blog.Errorf("list clusters error, %s", err.Error()) - return - } - - var result []*Cluster - if err = component.UnmarshalBKResult(resp, &result); err != nil { - blog.Errorf("unmarshal clusters error, %s", err.Error()) - return - } - - clusterMap := map[string]*Cluster{} - for _, cluster := range result { - cls := cluster - if cls.IsVirtual() { - cls.VclusterInfo, err = parseVClusterInfo(cls.ExtraInfo.NamespaceInfo) - if err != nil { - blog.Errorf("parse clusters %s namespaceInfo %s error, %s", cls.ClusterID, cls.ExtraInfo.NamespaceInfo, - err.Error()) - } - } - clusterMap[cluster.ClusterID] = cls - } - - storage.LocalCache.Slot.Set(listClustersCacheKey, clusterMap, -1) -} - -func parseVClusterInfo(s string) (VclusterInfo, error) { - info := VclusterInfo{} - if s == "" { - return info, nil - } - err := json.Unmarshal([]byte(s), &info) - if err != nil { - return info, err - } - return info, nil -} - -// GetClusterMap 获取全部集群数据, map格式 -func GetClusterMap() (map[string]*Cluster, error) { - if cacheResult, ok := storage.LocalCache.Slot.Get(listClustersCacheKey); ok { - return cacheResult.(map[string]*Cluster), nil - } - return nil, errNotFoundCluster -} - -var errNotFoundCluster = errors.New("not found cluster") - -// GetCluster 获取集群详情 -func GetCluster(clusterID string) (*Cluster, error) { - getCluster := func() (*Cluster, error) { - var cacheResult interface{} - var ok bool - if cacheResult, ok = storage.LocalCache.Slot.Get(listClustersCacheKey); !ok { - return nil, errNotFoundCluster - } - if clusterMap, ok := cacheResult.(map[string]*Cluster); ok { - if cls, ok := clusterMap[clusterID]; ok { - return cls, nil - } - return nil, errNotFoundCluster - } - return nil, fmt.Errorf("cluster cache is invalid") - } - - cls, err := getCluster() - if err != nil { - // 新创建的集群,未在缓存中,刷新一下缓存 - if errors.Is(err, errNotFoundCluster) { - ListClusters() - return getCluster() - } - return nil, err - } - return cls, nil -} diff --git a/bcs-services/bcs-platform-manager/pkg/component/bcs/bcs_test.go b/bcs-services/bcs-platform-manager/pkg/component/bcs/bcs_test.go deleted file mode 100644 index 05530f9f55..0000000000 --- a/bcs-services/bcs-platform-manager/pkg/component/bcs/bcs_test.go +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making Blueking Container Service available. - * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. - * Licensed under the MIT License (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * http://opensource.org/licenses/MIT - * Unless required by applicable law or agreed to in writing, software distributed under - * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, - * either express or implied. See the License for the specific language governing permissions and - * limitations under the License. - */ - -package bcs - -import ( - "testing" - - "github.com/stretchr/testify/assert" - - bcstesting "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/testing" -) - -func TestGetCluster(t *testing.T) { - cluster, err := GetCluster(bcstesting.GetTestClusterId()) - assert.NoError(t, err) - assert.Equal(t, cluster.ProjectID, bcstesting.GetTestProjectId()) -} diff --git a/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/client.go b/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/client.go new file mode 100644 index 0000000000..cf73a5994f --- /dev/null +++ b/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/client.go @@ -0,0 +1,43 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Package clustermanager xxx +package clustermanager + +import ( + "crypto/tls" + + "github.com/Tencent/bk-bcs/bcs-common/pkg/bcsapi/clustermanager" + "github.com/Tencent/bk-bcs/bcs-common/pkg/discovery" + microRgt "go-micro.dev/v4/registry" +) + +const ( + // ClusterManagerServiceName cluster manager service name + ClusterManagerServiceName = "clustermanager.bkbcs.tencent.com" +) + +// NewClient create cluster manager service client +func NewClient(tlsConfig *tls.Config, microRgt microRgt.Registry) error { + if !discovery.UseServiceDiscovery() { + dis := discovery.NewModuleDiscovery(ClusterManagerServiceName, microRgt) + err := dis.Start() + if err != nil { + return err + } + clustermanager.SetClientConfig(tlsConfig, dis) + } else { + clustermanager.SetClientConfig(tlsConfig, nil) + } + + return nil +} diff --git a/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/cloudvpc.go b/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/cloudvpc.go new file mode 100644 index 0000000000..10d32ee50c --- /dev/null +++ b/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/cloudvpc.go @@ -0,0 +1,70 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Package clustermanager cloudvpc操作 +package clustermanager + +import ( + "context" + "fmt" + + "github.com/Tencent/bk-bcs/bcs-common/pkg/bcsapi/clustermanager" + "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/config" +) + +// CreateCloudVPC 创建cloud vpc +func CreateCloudVPC(ctx context.Context, req *clustermanager.CreateCloudVPCRequest) (bool, error) { + cli, close, err := clustermanager.GetClient(config.ServiceDomain) + defer func() { + if close != nil { + close() + } + }() + if err != nil { + return false, err + } + + p, err := cli.CreateCloudVPC(ctx, req) + if err != nil { + return false, fmt.Errorf("CreateCloudVPC error: %s", err) + } + + if p.Code != 0 { + return false, fmt.Errorf("CreateCloudVPC error, code: %d, message: %s", p.Code, p.GetMessage()) + } + + return p.Result, nil +} + +// UpdateCloudVPC 更新cloud vpc +func UpdateCloudVPC(ctx context.Context, req *clustermanager.UpdateCloudVPCRequest) (bool, error) { + cli, close, err := clustermanager.GetClient(config.ServiceDomain) + defer func() { + if close != nil { + close() + } + }() + if err != nil { + return false, err + } + + p, err := cli.UpdateCloudVPC(ctx, req) + if err != nil { + return false, fmt.Errorf("UpdateCloudVPC error: %s", err) + } + + if p.Code != 0 { + return false, fmt.Errorf("UpdateCloudVPC error, code: %d, message: %s", p.Code, p.GetMessage()) + } + + return p.Result, nil +} diff --git a/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/cluster.go b/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/cluster.go new file mode 100644 index 0000000000..eab1bd513a --- /dev/null +++ b/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/cluster.go @@ -0,0 +1,95 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Package clustermanager xxx +package clustermanager + +import ( + "context" + "fmt" + + "github.com/Tencent/bk-bcs/bcs-common/pkg/bcsapi/clustermanager" + "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/config" +) + +// GetCluster get cluster from cluster manager +func GetCluster(ctx context.Context, clusterID string) (*clustermanager.Cluster, error) { + cli, close, err := clustermanager.GetClient(config.ServiceDomain) + defer func() { + if close != nil { + close() + } + }() + if err != nil { + return nil, err + } + + p, err := cli.GetCluster(ctx, &clustermanager.GetClusterReq{ClusterID: clusterID}) + if err != nil { + return nil, fmt.Errorf("GetCluster error: %s", err) + } + + if p.Code != 0 || p.Data == nil { + return nil, fmt.Errorf("GetCluster error, code: %d, message: %s", p.Code, p.GetMessage()) + } + + return p.Data, nil +} + +// ListCluster list cluster from cluster manager +func ListCluster(ctx context.Context, req *clustermanager.ListClusterV2Req) ( + []*clustermanager.ClusterBasicInfo, error) { + cli, close, err := clustermanager.GetClient(config.ServiceDomain) + defer func() { + if close != nil { + close() + } + }() + if err != nil { + return nil, err + } + + p, err := cli.ListClusterV2(ctx, req) + if err != nil { + return nil, fmt.Errorf("ListCluster error: %s", err) + } + + if p.Code != 0 || p.Data == nil { + return nil, fmt.Errorf("ListCluster error, code: %d, message: %s", p.Code, p.GetMessage()) + } + + return p.Data, nil +} + +// UpdateCluster update cluster from cluster manager +func UpdateCluster(ctx context.Context, req *clustermanager.UpdateClusterReq) (bool, error) { + cli, close, err := clustermanager.GetClient(config.ServiceDomain) + defer func() { + if close != nil { + close() + } + }() + if err != nil { + return false, err + } + + p, err := cli.UpdateCluster(ctx, req) + if err != nil { + return false, fmt.Errorf("UpdateCluster error: %s", err) + } + + if p.Code != 0 { + return false, fmt.Errorf("UpdateCluster error, code: %d, message: %s", p.Code, p.GetMessage()) + } + + return p.Result, nil +} diff --git a/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/templateconfig.go b/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/templateconfig.go new file mode 100644 index 0000000000..d5636054e1 --- /dev/null +++ b/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/templateconfig.go @@ -0,0 +1,70 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Package clustermanager templateconfig操作 +package clustermanager + +import ( + "context" + "fmt" + + "github.com/Tencent/bk-bcs/bcs-common/pkg/bcsapi/clustermanager" + "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/config" +) + +// CreateTemplateConfig 创建template config +func CreateTemplateConfig(ctx context.Context, req *clustermanager.CreateTemplateConfigRequest) (bool, error) { + cli, close, err := clustermanager.GetClient(config.ServiceDomain) + defer func() { + if close != nil { + close() + } + }() + if err != nil { + return false, err + } + + p, err := cli.CreateTemplateConfig(ctx, req) + if err != nil { + return false, fmt.Errorf("CreateTemplateConfig error: %s", err) + } + + if p.Code != 0 { + return false, fmt.Errorf("CreateTemplateConfig error, code: %d, message: %s", p.Code, p.GetMessage()) + } + + return p.Result, nil +} + +// DeleteTemplateConfig 删除template config +func DeleteTemplateConfig(ctx context.Context, req *clustermanager.DeleteTemplateConfigRequest) (bool, error) { + cli, close, err := clustermanager.GetClient(config.ServiceDomain) + defer func() { + if close != nil { + close() + } + }() + if err != nil { + return false, err + } + + p, err := cli.DeleteTemplateConfig(ctx, req) + if err != nil { + return false, fmt.Errorf("DeleteTemplateConfig error: %s", err) + } + + if p.Code != 0 { + return false, fmt.Errorf("DeleteTemplateConfig error, code: %d, message: %s", p.Code, p.GetMessage()) + } + + return p.Result, nil +} diff --git a/bcs-services/bcs-platform-manager/pkg/component/bcs/project.go b/bcs-services/bcs-platform-manager/pkg/component/bcs/project.go deleted file mode 100644 index c3c76bb952..0000000000 --- a/bcs-services/bcs-platform-manager/pkg/component/bcs/project.go +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making Blueking Container Service available. - * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. - * Licensed under the MIT License (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * http://opensource.org/licenses/MIT - * Unless required by applicable law or agreed to in writing, software distributed under - * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, - * either express or implied. See the License for the specific language governing permissions and - * limitations under the License. - */ - -package bcs - -import ( - "context" - "fmt" - "time" - - "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component" - "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/config" - "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/storage" - "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/utils" -) - -// Project 项目信息 -type Project struct { - Name string `json:"name"` - ProjectId string `json:"projectID"` - Code string `json:"projectCode"` - CcBizID string `json:"businessID"` - Creator string `json:"creator"` - Kind string `json:"kind"` - RawCreateTime string `json:"createTime"` -} - -// String : -func (p *Project) String() string { - var displayCode string - if p.Code == "" { - displayCode = "-" - } else { - displayCode = p.Code - } - return fmt.Sprintf("project<%s, %s|%s|%s>", p.Name, displayCode, p.ProjectId, p.CcBizID) -} - -// CreateTime xxx -func (p *Project) CreateTime() (time.Time, error) { - return time.ParseInLocation("2006-01-02T15:04:05Z", p.RawCreateTime, config.G.Base.Location) -} - -// GetProject 通过 project_id/code 获取项目信息 -func GetProject(ctx context.Context, bcsConf *config.BCSConf, projectIDOrCode string) (*Project, error) { - cacheKey := fmt.Sprintf("bcs.GetProject:%s", projectIDOrCode) - if cacheResult, ok := storage.LocalCache.Slot.Get(cacheKey); ok { - return cacheResult.(*Project), nil - } - - url := fmt.Sprintf("%s/bcsapi/v4/bcsproject/v1/projects/%s", bcsConf.Host, projectIDOrCode) - resp, err := component.GetClient().R(). - SetContext(ctx). - SetHeaders(utils.GetLaneIDByCtx(ctx)). // 泳道特性 - SetHeader("X-Project-Username", ""). // bcs_project 要求有这个header - SetAuthToken(bcsConf.Token). - Get(url) - - if err != nil { - return nil, err - } - - project := new(Project) - if err := component.UnmarshalBKResult(resp, project); err != nil { - return nil, err - } - - storage.LocalCache.Slot.Set(cacheKey, project, time.Hour*24) - - return project, nil -} diff --git a/bcs-services/bcs-platform-manager/pkg/component/bcs/project_test.go b/bcs-services/bcs-platform-manager/pkg/component/bcs/project_test.go deleted file mode 100644 index f06066f883..0000000000 --- a/bcs-services/bcs-platform-manager/pkg/component/bcs/project_test.go +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making Blueking Container Service available. - * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. - * Licensed under the MIT License (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * http://opensource.org/licenses/MIT - * Unless required by applicable law or agreed to in writing, software distributed under - * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, - * either express or implied. See the License for the specific language governing permissions and - * limitations under the License. - */ - -package bcs - -import ( - "context" - "testing" - - "github.com/stretchr/testify/assert" - - "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/config" - bcstesting "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/testing" -) - -func TestGetProject(t *testing.T) { - ctx := context.Background() - - project, err := GetProject(ctx, config.G.BCS, bcstesting.GetTestProjectId()) - assert.NoError(t, err) - assert.Equal(t, project.ProjectId, bcstesting.GetTestProjectId()) -} diff --git a/bcs-services/bcs-platform-manager/pkg/component/bcs/projectmanager/client.go b/bcs-services/bcs-platform-manager/pkg/component/bcs/projectmanager/client.go new file mode 100644 index 0000000000..cfdf6989b0 --- /dev/null +++ b/bcs-services/bcs-platform-manager/pkg/component/bcs/projectmanager/client.go @@ -0,0 +1,43 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Package projectmanager xxx +package projectmanager + +import ( + "crypto/tls" + + "github.com/Tencent/bk-bcs/bcs-common/pkg/bcsapi/clustermanager" + "github.com/Tencent/bk-bcs/bcs-common/pkg/discovery" + microRgt "go-micro.dev/v4/registry" +) + +const ( + // ProjectManagerServiceName project manager service name + ProjectManagerServiceName = "project.bkbcs.tencent.com" +) + +// NewClient create project manager service client +func NewClient(tlsConfig *tls.Config, microRgt microRgt.Registry) error { + if !discovery.UseServiceDiscovery() { + dis := discovery.NewModuleDiscovery(ProjectManagerServiceName, microRgt) + err := dis.Start() + if err != nil { + return err + } + clustermanager.SetClientConfig(tlsConfig, dis) + } else { + clustermanager.SetClientConfig(tlsConfig, nil) + } + + return nil +} diff --git a/bcs-services/bcs-platform-manager/pkg/component/bcs/projectmanager/project.go b/bcs-services/bcs-platform-manager/pkg/component/bcs/projectmanager/project.go new file mode 100644 index 0000000000..749682e1ff --- /dev/null +++ b/bcs-services/bcs-platform-manager/pkg/component/bcs/projectmanager/project.go @@ -0,0 +1,70 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Package projectmanager xxx +package projectmanager + +import ( + "context" + "fmt" + + "github.com/Tencent/bk-bcs/bcs-common/pkg/bcsapi/bcsproject" + "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/config" +) + +// GetProject get project from project manager +func GetProject(ctx context.Context, projectIDOrCode string) (*bcsproject.Project, error) { + cli, close, err := bcsproject.GetClient(config.ServiceDomain) + defer func() { + if close != nil { + close() + } + }() + if err != nil { + return nil, err + } + + p, err := cli.Project.GetProject(ctx, &bcsproject.GetProjectRequest{ProjectIDOrCode: projectIDOrCode}) + if err != nil { + return nil, fmt.Errorf("GetProject error: %s", err) + } + + if p.Code != 0 || p.Data == nil { + return nil, fmt.Errorf("GetProject error, code: %d, message: %s", p.Code, p.GetMessage()) + } + + return p.Data, nil +} + +// ListProject list project from project manager +func ListProject(ctx context.Context) ([]*bcsproject.Project, error) { + cli, close, err := bcsproject.GetClient(config.ServiceDomain) + defer func() { + if close != nil { + close() + } + }() + if err != nil { + return nil, err + } + + p, err := cli.Project.ListProjects(ctx, &bcsproject.ListProjectsRequest{All: true}) + if err != nil { + return nil, fmt.Errorf("ListProject error: %s", err) + } + + if p.Code != 0 || p.Data == nil { + return nil, fmt.Errorf("ListProject error, code: %d, message: %s", p.Code, p.GetMessage()) + } + + return p.Data.GetResults(), nil +} diff --git a/bcs-services/bcs-platform-manager/pkg/config/base.go b/bcs-services/bcs-platform-manager/pkg/config/base.go index e5d21959d9..00bf4b347d 100644 --- a/bcs-services/bcs-platform-manager/pkg/config/base.go +++ b/bcs-services/bcs-platform-manager/pkg/config/base.go @@ -25,6 +25,8 @@ const ( StagEnv = "stag" // ProdEnv xxx ProdEnv = "prod" + // ServiceDomain domain name for service + ServiceDomain = "bcsplatformmanager.bkbcs.tencent.com" ) // BaseConf : diff --git a/bcs-services/bcs-platform-manager/pkg/config/bcs.go b/bcs-services/bcs-platform-manager/pkg/config/bcs.go index b600183bef..0ff1313ab0 100644 --- a/bcs-services/bcs-platform-manager/pkg/config/bcs.go +++ b/bcs-services/bcs-platform-manager/pkg/config/bcs.go @@ -32,6 +32,7 @@ const ( // BCSConf : type BCSConf struct { + Target string `yaml:"target"` Host string `yaml:"host"` Token string `yaml:"token"` Verify bool `yaml:"verify"` diff --git a/bcs-services/bcs-platform-manager/pkg/discovery/discovery.go b/bcs-services/bcs-platform-manager/pkg/discovery/discovery.go index b3c2dff9f4..5cbcb5bd07 100644 --- a/bcs-services/bcs-platform-manager/pkg/discovery/discovery.go +++ b/bcs-services/bcs-platform-manager/pkg/discovery/discovery.go @@ -15,6 +15,7 @@ package discovery import ( "context" + "crypto/tls" "strings" "github.com/Tencent/bk-bcs/bcs-common/common/ssl" @@ -24,6 +25,8 @@ import ( "go-micro.dev/v4/registry" "go-micro.dev/v4/server" + "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager" + "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component/bcs/projectmanager" "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/config" "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/utils" ) @@ -32,8 +35,10 @@ const serverNameSuffix = ".bkbcs.tencent.com" // ServiceDiscovery service discovery type ServiceDiscovery struct { - ctx context.Context - srv micro.Service + ctx context.Context + srv micro.Service + microRgt registry.Registry + clientTLSConfig *tls.Config } // NewServiceDiscovery : @@ -92,7 +97,7 @@ func (s *ServiceDiscovery) initEtcdRegistry() (registry.Registry, error) { return nil, nil } - etcdRegistry := etcd.NewRegistry(registry.Addrs(strings.Split(endpoints, ",")...)) + s.microRgt = etcd.NewRegistry(registry.Addrs(strings.Split(endpoints, ",")...)) ca := config.G.Viper.GetString("etcd.ca") cert := config.G.Viper.GetString("etcd.cert") @@ -102,8 +107,23 @@ func (s *ServiceDiscovery) initEtcdRegistry() (registry.Registry, error) { if err != nil { return nil, err } - _ = etcdRegistry.Init(registry.TLSConfig(tlsConfig)) + s.clientTLSConfig = tlsConfig + _ = s.microRgt.Init(registry.TLSConfig(tlsConfig)) } - return etcdRegistry, nil + return s.microRgt, nil +} + +// InitComponentConfig init component config +func (s *ServiceDiscovery) InitComponentConfig() error { + err := projectmanager.NewClient(s.clientTLSConfig, s.microRgt) + if err != nil { + return err + } + + err = clustermanager.NewClient(s.clientTLSConfig, s.microRgt) + if err != nil { + return err + } + return nil } diff --git a/bcs-services/bcs-platform-manager/pkg/rest/context.go b/bcs-services/bcs-platform-manager/pkg/rest/context.go index 36f19d0d25..a9e160a35e 100644 --- a/bcs-services/bcs-platform-manager/pkg/rest/context.go +++ b/bcs-services/bcs-platform-manager/pkg/rest/context.go @@ -21,8 +21,6 @@ import ( httpin_integration "github.com/ggicci/httpin/integration" "github.com/go-chi/chi/v5" "github.com/golang-jwt/jwt/v4" - - "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component/bcs" ) func init() { @@ -44,8 +42,6 @@ type Context struct { BindEnv *EnvToken `json:"bind_env"` BindBCS *UserClaimsInfo `json:"bind_bcs"` BindAPIGW *APIGWToken `json:"bind_apigw"` - BindCluster *bcs.Cluster `json:"bind_cluster"` - BindProject *bcs.Project `json:"bind_project"` } // WriteAttachment 提供附件下载能力 diff --git a/bcs-services/bcs-platform-manager/pkg/rest/middleware/auth.go b/bcs-services/bcs-platform-manager/pkg/rest/middleware/auth.go index bbb81e8b75..33f90d2ec0 100644 --- a/bcs-services/bcs-platform-manager/pkg/rest/middleware/auth.go +++ b/bcs-services/bcs-platform-manager/pkg/rest/middleware/auth.go @@ -24,7 +24,7 @@ import ( "github.com/golang-jwt/jwt/v4" "github.com/pkg/errors" - "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component/bcs" + clustermgr "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager" "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component/iam" "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/config" "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/rest" @@ -68,7 +68,7 @@ func ProjectAuthorization(next http.Handler) http.Handler { username := restContext.Username // check cluster - cls, err := bcs.GetCluster(clusterID) + cls, err := clustermgr.GetCluster(r.Context(), clusterID) if err != nil { _ = render.Render(w, r, rest.AbortWithWithForbiddenError(restContext, err)) return @@ -113,7 +113,7 @@ func ClusterAuthorization(next http.Handler) http.Handler { username := restContext.Username // check cluster - cls, err := bcs.GetCluster(clusterID) + cls, err := clustermgr.GetCluster(r.Context(), clusterID) if err != nil { _ = render.Render(w, r, rest.AbortWithWithForbiddenError(restContext, err)) return diff --git a/bcs-services/bcs-platform-manager/pkg/rest/middleware/project.go b/bcs-services/bcs-platform-manager/pkg/rest/middleware/project.go index 77d2eac8b2..272defeca8 100644 --- a/bcs-services/bcs-platform-manager/pkg/rest/middleware/project.go +++ b/bcs-services/bcs-platform-manager/pkg/rest/middleware/project.go @@ -18,8 +18,8 @@ import ( "github.com/Tencent/bk-bcs/bcs-common/common/blog" "github.com/go-chi/render" - "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component/bcs" - "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/config" + clustermgr "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager" + projectrmgr "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component/bcs/projectmanager" "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/rest" "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/utils" ) @@ -41,17 +41,17 @@ func ProjectParse(next http.Handler) http.Handler { ctx := utils.WithLaneIdCtx(r.Context(), r.Header) r = r.WithContext(ctx) - project, err := bcs.GetProject(ctx, config.G.BCS, projectIDOrCode) + project, err := projectrmgr.GetProject(ctx, projectIDOrCode) if err != nil { blog.Errorf("get project error for project %s, error: %s", projectIDOrCode, err.Error()) _ = render.Render(w, r, rest.AbortWithBadRequestError(restContext, err)) return } - restContext.ProjectId = project.ProjectId - restContext.ProjectCode = project.Code + restContext.ProjectId = project.ProjectID + restContext.ProjectCode = project.ProjectCode // get cluster info - cls, err := bcs.GetCluster(restContext.ClusterId) + cls, err := clustermgr.GetCluster(ctx, restContext.ClusterId) if err != nil { _ = render.Render(w, r, rest.AbortWithWithForbiddenError(restContext, err)) return From f5dda80d44364e1a866e8fdefe92f3a90983ed07 Mon Sep 17 00:00:00 2001 From: dove0012 Date: Fri, 29 Aug 2025 14:55:31 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dgolangci-lint=E8=A7=84?= =?UTF-8?q?=E8=8C=83=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bcs-services/bcs-platform-manager/pkg/api/cloudvpc/cloudvpc.go | 1 + bcs-services/bcs-platform-manager/pkg/api/cluster/cluster.go | 1 + .../pkg/api/templateconfig/templateconfig.go | 1 + .../pkg/component/bcs/clustermanager/cloudvpc.go | 1 + .../pkg/component/bcs/clustermanager/cluster.go | 1 + .../pkg/component/bcs/clustermanager/templateconfig.go | 1 + .../pkg/component/bcs/projectmanager/project.go | 1 + 7 files changed, 7 insertions(+) diff --git a/bcs-services/bcs-platform-manager/pkg/api/cloudvpc/cloudvpc.go b/bcs-services/bcs-platform-manager/pkg/api/cloudvpc/cloudvpc.go index d2446dc281..fe0b965290 100644 --- a/bcs-services/bcs-platform-manager/pkg/api/cloudvpc/cloudvpc.go +++ b/bcs-services/bcs-platform-manager/pkg/api/cloudvpc/cloudvpc.go @@ -17,6 +17,7 @@ import ( "context" "github.com/Tencent/bk-bcs/bcs-common/pkg/bcsapi/clustermanager" + clustermgr "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager" ) diff --git a/bcs-services/bcs-platform-manager/pkg/api/cluster/cluster.go b/bcs-services/bcs-platform-manager/pkg/api/cluster/cluster.go index 1c19063e92..d7a12c4788 100644 --- a/bcs-services/bcs-platform-manager/pkg/api/cluster/cluster.go +++ b/bcs-services/bcs-platform-manager/pkg/api/cluster/cluster.go @@ -19,6 +19,7 @@ import ( "sort" "github.com/Tencent/bk-bcs/bcs-common/pkg/bcsapi/clustermanager" + clustermgr "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager" projectrmgr "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component/bcs/projectmanager" "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/config" diff --git a/bcs-services/bcs-platform-manager/pkg/api/templateconfig/templateconfig.go b/bcs-services/bcs-platform-manager/pkg/api/templateconfig/templateconfig.go index 115c2f68ce..705a3f370a 100644 --- a/bcs-services/bcs-platform-manager/pkg/api/templateconfig/templateconfig.go +++ b/bcs-services/bcs-platform-manager/pkg/api/templateconfig/templateconfig.go @@ -17,6 +17,7 @@ import ( "context" "github.com/Tencent/bk-bcs/bcs-common/pkg/bcsapi/clustermanager" + clustermgr "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager" ) diff --git a/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/cloudvpc.go b/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/cloudvpc.go index 10d32ee50c..f51a8b4d06 100644 --- a/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/cloudvpc.go +++ b/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/cloudvpc.go @@ -18,6 +18,7 @@ import ( "fmt" "github.com/Tencent/bk-bcs/bcs-common/pkg/bcsapi/clustermanager" + "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/config" ) diff --git a/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/cluster.go b/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/cluster.go index eab1bd513a..6c805f1498 100644 --- a/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/cluster.go +++ b/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/cluster.go @@ -18,6 +18,7 @@ import ( "fmt" "github.com/Tencent/bk-bcs/bcs-common/pkg/bcsapi/clustermanager" + "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/config" ) diff --git a/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/templateconfig.go b/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/templateconfig.go index d5636054e1..4433db0476 100644 --- a/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/templateconfig.go +++ b/bcs-services/bcs-platform-manager/pkg/component/bcs/clustermanager/templateconfig.go @@ -18,6 +18,7 @@ import ( "fmt" "github.com/Tencent/bk-bcs/bcs-common/pkg/bcsapi/clustermanager" + "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/config" ) diff --git a/bcs-services/bcs-platform-manager/pkg/component/bcs/projectmanager/project.go b/bcs-services/bcs-platform-manager/pkg/component/bcs/projectmanager/project.go index 749682e1ff..5aede24afc 100644 --- a/bcs-services/bcs-platform-manager/pkg/component/bcs/projectmanager/project.go +++ b/bcs-services/bcs-platform-manager/pkg/component/bcs/projectmanager/project.go @@ -18,6 +18,7 @@ import ( "fmt" "github.com/Tencent/bk-bcs/bcs-common/pkg/bcsapi/bcsproject" + "github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager/pkg/config" ) From caf8ca2d5a50295a5023da759828108cb27d2c21 Mon Sep 17 00:00:00 2001 From: dove0012 Date: Fri, 29 Aug 2025 15:00:21 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dgolangci-lint=E8=A7=84?= =?UTF-8?q?=E8=8C=83=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bcs-services/bcs-platform-manager/go.mod | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/bcs-services/bcs-platform-manager/go.mod b/bcs-services/bcs-platform-manager/go.mod index c17dc0d795..831f92bd91 100644 --- a/bcs-services/bcs-platform-manager/go.mod +++ b/bcs-services/bcs-platform-manager/go.mod @@ -17,7 +17,6 @@ replace ( require ( github.com/Tencent/bk-bcs/bcs-common v0.0.0-20250710101644-24c34c9b3919 - github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager v0.0.0-20250825015655-cf938f258a8b github.com/Tencent/bk-bcs/bcs-services/pkg v0.0.0-20250729093702-993155773a94 github.com/dustin/go-humanize v1.0.1 github.com/ggicci/httpin v0.20.1 @@ -38,7 +37,6 @@ require ( github.com/prometheus/prometheus v1.8.2-0.20220308163432-03831554a519 github.com/spf13/cobra v1.9.1 github.com/spf13/viper v1.20.1 - github.com/stretchr/testify v1.10.0 github.com/swaggo/http-swagger v1.3.4 go-micro.dev/v4 v4.9.0 go.mongodb.org/mongo-driver v1.17.4 @@ -73,6 +71,7 @@ require ( github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect + github.com/evanphx/json-patch v4.12.0+incompatible // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect @@ -136,7 +135,6 @@ require ( github.com/parnurzeal/gorequest v0.2.16 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect - github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.5.0 // indirect github.com/prometheus/common v0.48.0 // indirect From 73bdb57271d8e42d7ad5be7bed0d1fd032bdf5f2 Mon Sep 17 00:00:00 2001 From: dove0012 Date: Fri, 29 Aug 2025 17:01:50 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E7=9A=84=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bcs-services/bcs-platform-manager/go.mod | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/bcs-services/bcs-platform-manager/go.mod b/bcs-services/bcs-platform-manager/go.mod index 831f92bd91..173776f6c6 100644 --- a/bcs-services/bcs-platform-manager/go.mod +++ b/bcs-services/bcs-platform-manager/go.mod @@ -2,21 +2,10 @@ module github.com/Tencent/bk-bcs/bcs-services/bcs-platform-manager go 1.23.0 -replace ( - // github.com/databus23/helm-diff/v3 limit by go 1.23 - github.com/databus23/helm-diff/v3 => github.com/databus23/helm-diff/v3 v3.9.11 - helm.sh/helm/v3 => github.com/adevjoe/helm/v3 v3.17.3-tx.1 - k8s.io/api => k8s.io/api v0.32.2 - k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.32.2 - k8s.io/apimachinery => k8s.io/apimachinery v0.32.2 - k8s.io/cli-runtime => k8s.io/cli-runtime v0.32.2 - k8s.io/client-go => k8s.io/client-go v0.32.2 - k8s.io/kubectl => k8s.io/kubectl v0.32.2 - k8s.io/kubernetes => k8s.io/kubernetes v1.13.0 -) +replace k8s.io/client-go => k8s.io/client-go v0.32.2 require ( - github.com/Tencent/bk-bcs/bcs-common v0.0.0-20250710101644-24c34c9b3919 + github.com/Tencent/bk-bcs/bcs-common v0.0.0-20250729093702-993155773a94 github.com/Tencent/bk-bcs/bcs-services/pkg v0.0.0-20250729093702-993155773a94 github.com/dustin/go-humanize v1.0.1 github.com/ggicci/httpin v0.20.1 @@ -38,7 +27,7 @@ require ( github.com/spf13/cobra v1.9.1 github.com/spf13/viper v1.20.1 github.com/swaggo/http-swagger v1.3.4 - go-micro.dev/v4 v4.9.0 + go-micro.dev/v4 v4.10.2 go.mongodb.org/mongo-driver v1.17.4 go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo v0.62.0 go.opentelemetry.io/otel v1.37.0 @@ -71,7 +60,6 @@ require ( github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect - github.com/evanphx/json-patch v4.12.0+incompatible // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect @@ -199,7 +187,7 @@ require ( gopkg.in/warnings.v0 v0.1.2 // indirect k8s.io/api v0.32.2 // indirect k8s.io/apimachinery v0.32.2 // indirect - k8s.io/client-go v11.0.0+incompatible // indirect + k8s.io/client-go v0.23.1 // indirect k8s.io/klog v1.0.0 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect