Skip to content

Commit

Permalink
fix: not merage region inter (#2083)
Browse files Browse the repository at this point in the history
Signed-off-by: 张启航 <[email protected]>
  • Loading branch information
ZhangSetSail authored Nov 29, 2024
1 parent 73fe67a commit a154063
Show file tree
Hide file tree
Showing 5 changed files with 85 additions and 0 deletions.
1 change: 1 addition & 0 deletions api/api/api_interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ type ClusterInterface interface {
GetAbility(w http.ResponseWriter, r *http.Request)
UpdateAbility(w http.ResponseWriter, r *http.Request)
ListRainbondComponents(w http.ResponseWriter, r *http.Request)
GetRegionStatus(w http.ResponseWriter, r *http.Request)
GetLangVersion(w http.ResponseWriter, r *http.Request)
UpdateLangVersion(w http.ResponseWriter, r *http.Request)
CreateLangVersion(w http.ResponseWriter, r *http.Request)
Expand Down
7 changes: 7 additions & 0 deletions api/api_routers/websocket/websocket.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,3 +80,10 @@ func LongVersionRoutes() chi.Router {
r.Head("/download/{language}/{version}", controller.GetManager().DownloadLongVersion)
return r
}

// HelmInstallRegionStatus Helm安装集群状态查询
func HelmInstallRegionStatus() chi.Router {
r := chi.NewRouter()
r.Get("/region_status/{token}", controller.GetManager().GetRegionStatus)
return r
}
14 changes: 14 additions & 0 deletions api/controller/cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -647,3 +647,17 @@ func copyDirectory(srcDir, dstDir string) error {
})
return err
}

func (c *ClusterController) GetRegionStatus(w http.ResponseWriter, r *http.Request) {
token := chi.URLParam(r, "token")
if token != os.Getenv("HELM_TOKEN") {
httputil.ReturnError(r, w, 400, "failed to verify token")
return
}
regionInfo, err := handler.GetClusterHandler().GetClusterRegionStatus()
if err != nil {
httputil.ReturnError(r, w, 400, err.Error())
return
}
httputil.ReturnSuccess(r, w, regionInfo)
}
62 changes: 62 additions & 0 deletions api/handler/cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package handler
import (
"context"
"fmt"
rainbondv1alpha1 "github.com/goodrain/rainbond-operator/api/v1alpha1"
"github.com/goodrain/rainbond-operator/util/rbdutil"
"github.com/goodrain/rainbond/api/client/prometheus"
"github.com/goodrain/rainbond/api/model"
Expand All @@ -11,6 +12,7 @@ import (
"github.com/goodrain/rainbond/config/configs"
"github.com/goodrain/rainbond/db"
dbmodel "github.com/goodrain/rainbond/db/model"
"github.com/goodrain/rainbond/grctl/clients"
mqclient "github.com/goodrain/rainbond/mq/client"
"github.com/goodrain/rainbond/pkg/apis/rainbond/v1alpha1"
"github.com/goodrain/rainbond/pkg/component/grpc"
Expand All @@ -35,6 +37,7 @@ import (
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apiserver/pkg/util/flushwriter"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/kubernetes"
Expand Down Expand Up @@ -88,6 +91,7 @@ type ClusterHandler interface {
GenerateAbilityID(ability *unstructured.Unstructured) string
ListRainbondComponents(ctx context.Context) (res []*model.RainbondComponent, err error)
ListUpgradeStatus() ([]model.ComponentStatus, error)
GetClusterRegionStatus() (map[string]interface{}, error)
}

// NewClusterHandler -
Expand All @@ -97,6 +101,7 @@ func NewClusterHandler() ClusterHandler {
clientset: k8s.Default().Clientset,
config: k8s.Default().RestConfig,
mapper: k8s.Default().Mapper,
client: k8s.Default().K8sClient,
grctlImage: configs.Default().APIConfig.GrctlImage,
prometheusCli: prom.Default().PrometheusCli,
rainbondClient: k8s.Default().RainbondClient,
Expand Down Expand Up @@ -1236,3 +1241,60 @@ func (c *clusterAction) checkPodStatus(componentName string) string {
}
return ""
}

func (c *clusterAction) GetClusterRegionStatus() (map[string]interface{}, error) {
secret := &corev1.Secret{}
if err := c.client.Get(context.Background(), types.NamespacedName{Namespace: c.namespace, Name: "rbd-api-server-cert"}, secret); err != nil {
return nil, err
}
var cluster rainbondv1alpha1.RainbondCluster
if err := clients.RainbondKubeClient.Get(context.Background(), types.NamespacedName{Namespace: c.namespace, Name: "rainbondcluster"}, &cluster); err != nil {
return nil, err
}
var gatewayIngressIP string
if len(cluster.Spec.GatewayIngressIPs) > 0 && cluster.Spec.GatewayIngressIPs[0] != "" {
gatewayIngressIP = cluster.Spec.GatewayIngressIPs[0]
} else if len(cluster.Spec.NodesForGateway) > 0 {
gatewayIngressIP = cluster.Spec.NodesForGateway[0].InternalIP
}

if secret != nil {
var ips = strings.ReplaceAll(strings.Join(cluster.GatewayIngressIPs(), "-"), ".", "_")
if availableips, ok := secret.Labels["availableips"]; ok && availableips == ips {
caPem := secret.Data["ca.pem"]
clientPem := secret.Data["server.pem"]
clientKey := secret.Data["server.key.pem"]
regionInfo := make(map[string]interface{})
regionInfo["regionName"] = time.Now().Unix()
regionInfo["regionType"] = []string{"custom"}
regionInfo["sslCaCert"] = string(caPem)
regionInfo["keyFile"] = string(clientKey)
regionInfo["certFile"] = string(clientPem)
regionInfo["url"] = fmt.Sprintf("https://%s:%s", gatewayIngressIP, "8443")
regionInfo["wsUrl"] = fmt.Sprintf("ws://%s:%s", gatewayIngressIP, "6060")
regionInfo["httpDomain"] = cluster.Spec.SuffixHTTPHost
regionInfo["tcpDomain"] = cluster.GatewayIngressIP()
regionInfo["desc"] = "Helm"
regionInfo["regionAlias"] = "对接集群"
regionInfo["provider"] = "helm"
regionInfo["providerClusterId"] = ""
regionInfo["token"] = os.Getenv("HELM_TOKEN")
if os.Getenv("ENTERPRISE_ID") != "" {
regionInfo["enterpriseId"] = os.Getenv("ENTERPRISE_ID")
}
if os.Getenv("CLOUD_SERVER") != "" {
cloud := os.Getenv("CLOUD_SERVER")
switch cloud {
case "aliyun":
regionInfo["regionType"] = []string{"aliyun"}
case "huawei":
regionInfo["regionType"] = []string{"huawei"}
case "tencent":
regionInfo["regionType"] = []string{"tencent"}
}
}
return regionInfo, nil
}
}
return nil, fmt.Errorf("get rbd-api-server-cert secret is nil")
}
1 change: 1 addition & 0 deletions api/server/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,7 @@ func (m *Manager) Run() {
websocketRouter.Mount("/logs", websocket.LogRoutes())
websocketRouter.Mount("/app", websocket.AppRoutes())
websocketRouter.Mount("/package_build", websocket.PackageBuildRoutes())
websocketRouter.Mount("/helm_install", websocket.HelmInstallRegionStatus())
// 共享存储的文件操作路由
websocketRouter.Mount("/v2/file-operate", websocket.FileOperateRoutes())
// 语言包处理
Expand Down

0 comments on commit a154063

Please sign in to comment.