Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 添加私有化版本参数 #3317

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 30 additions & 1 deletion bcs-services/bcs-bscp/cmd/auth-server/service/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ import (
"github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/cc"
"github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/components/bkpaas"
"github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/errf"
"github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/iam/apigw"
iamauth "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/iam/auth"
"github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/iam/client"
"github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/iam/meta"
Expand Down Expand Up @@ -76,6 +77,7 @@ type Service struct {
// auth logic module.
auth *auth.Auth
spaceMgr *space.Manager
pubKey string
}

// NewService create a service instance.
Expand Down Expand Up @@ -110,13 +112,39 @@ func NewService(sd serviced.Discover, iamSettings cc.IAM, disableAuth bool,
spaceMgr: spaceMgr,
}

if errH := s.handlerAutoRegister(); errH != nil {
return nil, errH
}

if err = s.initLogicModule(); err != nil {
return nil, err
}

return s, nil
}

// 注册网关
func (s *Service) handlerAutoRegister() error {
s.pubKey = cc.AuthServer().LoginAuth.GWPubKey
if cc.AuthServer().ApiGateway.AutoRegister {
gw, err := apigw.NewApiGw(cc.AuthServer().Esb)
if err != nil {
return err
}

result, err := gw.GetApigwPublicKey(apigw.Name)
if err != nil {
return err
}
if result.Code != 0 && result.Data.PublicKey == "" {
return fmt.Errorf("get the gateway public key failed, err: %s", result.Message)
}
s.pubKey = result.Data.PublicKey
}

return nil
}

// Handler return service's handler.
func (s *Service) Handler() (http.Handler, error) {
if s.gateway == nil {
Expand Down Expand Up @@ -255,12 +283,13 @@ func (s *Service) InitAuthCenter(ctx context.Context, req *pbas.InitAuthCenterRe
// GetAuthConf get auth login conf
func (s *Service) GetAuthConf(_ context.Context,
_ *pbas.GetAuthConfReq) (*pbas.GetAuthConfResp, error) {

resp := &pbas.GetAuthConfResp{
LoginAuth: &pbas.LoginAuth{
Host: cc.AuthServer().LoginAuth.Host,
InnerHost: cc.AuthServer().LoginAuth.InnerHost,
Provider: cc.AuthServer().LoginAuth.Provider,
GwPubkey: cc.AuthServer().LoginAuth.GWPubKey,
GwPubkey: s.pubKey,
UseEsb: false,
},
Esb: &pbas.ESB{
Expand Down
20 changes: 14 additions & 6 deletions bcs-services/bcs-bscp/pkg/cc/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,12 +120,13 @@ func (s ApiServerSetting) Validate() error {

// AuthServerSetting defines auth server used setting options.
type AuthServerSetting struct {
Network Network `yaml:"network"`
Service Service `yaml:"service"`
Log LogOption `yaml:"log"`
LoginAuth LoginAuthSettings `yaml:"loginAuth"`
IAM IAM `yaml:"iam"`
Esb Esb `yaml:"esb"`
Network Network `yaml:"network"`
Service Service `yaml:"service"`
Log LogOption `yaml:"log"`
LoginAuth LoginAuthSettings `yaml:"loginAuth"`
IAM IAM `yaml:"iam"`
Esb Esb `yaml:"esb"`
ApiGateway ApiGateway `yaml:"apiGateway"`
}

// LoginAuthSettings login conf
Expand All @@ -137,6 +138,13 @@ type LoginAuthSettings struct {
GWPubKey string `yaml:"gwPubkey"`
}

// ApiGateway gateway conf
type ApiGateway struct {
// AutoRegister 是否自动注册
AutoRegister bool `yaml:"autoRegister"`
GWPubKey string `yaml:"gwPubkey"`
}

// trySetFlagBindIP try set flag bind ip.
func (s *AuthServerSetting) trySetFlagBindIP(ip net.IP) error {
return s.Network.trySetFlagBindIP(ip)
Expand Down
5 changes: 3 additions & 2 deletions bcs-services/bcs-bscp/pkg/cc/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -768,8 +768,9 @@ type Esb struct {
// AppSecret is the blueking app secret of bscp to request esb.
AppSecret string `yaml:"appSecret"`
// User is the blueking user of bscp to request esb.
User string `yaml:"user"`
TLS TLSConfig `yaml:"tls"`
User string `yaml:"user"`
TLS TLSConfig `yaml:"tls"`
BscpHost string `yaml:"bscpHost"`
}

// validate esb runtime.
Expand Down
7 changes: 4 additions & 3 deletions bcs-services/bcs-bscp/pkg/iam/apigw/apigw.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ type ApiGw interface {
}

// NewApiGw 初始化网关
func NewApiGw(opt cc.ApiServerSetting) (ApiGw, error) {
func NewApiGw(opt cc.Esb) (ApiGw, error) {

c, err := client.NewClient(nil)
if err != nil {
Expand All @@ -70,11 +70,12 @@ func NewApiGw(opt cc.ApiServerSetting) (ApiGw, error) {
client: c,
opt: opt,
}, nil

}

type apiGw struct {
client *http.Client
opt cc.ApiServerSetting
opt cc.Esb
}

// SyncApi 同步网关,如果网关不存在,创建网关,如果网关已存在,更新网关
Expand Down Expand Up @@ -359,7 +360,7 @@ func (a *apiGw) newRequest(method, url string, body []byte) (*http.Request, erro

// 设置请求头
req.Header.Set("X-Bkapi-Authorization", fmt.Sprintf(`{"bk_app_code": "%s", "bk_app_secret": "%s"}`,
a.opt.Esb.AppCode, a.opt.Esb.AppSecret))
a.opt.AppCode, a.opt.AppSecret))
req.Header.Set("Content-Type", "application/json")

return req, nil
Expand Down
16 changes: 9 additions & 7 deletions bcs-services/bcs-bscp/pkg/iam/apigw/sync_docs.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,27 +21,29 @@ import (
)

const (
name = "bk-bscp-test"
// Name 网关名
Name = "bk-bscp"
env = "prod"
description = "bk-bscp-test 网关描述"
host = "http://bscp-api.sit.bktencent.com"
description = "服务配置平台(bk_bscp)API 网关,包含了服务、配置项/模板、版本、分组、发布等相关资源的查询和操作接口"
)

// ReleaseSwagger 导入swagge 文档
func ReleaseSwagger(opt cc.ApiServerSetting, language, version string) error { // nolint
// nolint:funlen
func ReleaseSwagger(opt cc.ApiServerSetting, language, version string) error {

// 获取需要导入的文档
swaggerData, err := docs.Assets.ReadFile("swagger/bkapigw.swagger.json")
if err != nil {
return fmt.Errorf("reads and returns the content of the named file failed, err: %s", err.Error())
}
// 初始化网关
gw, err := NewApiGw(opt)
gw, err := NewApiGw(opt.Esb)
if err != nil {
return fmt.Errorf("init api gateway failed, err: %s", err.Error())
}

// 创建或者更新网关
syncApiResp, err := gw.SyncApi(name, &SyncApiReq{
syncApiResp, err := gw.SyncApi(Name, &SyncApiReq{
Description: description,
Maintainers: []string{"admin"},
IsPublic: true,
Expand All @@ -62,7 +64,7 @@ func ReleaseSwagger(opt cc.ApiServerSetting, language, version string) error { /
Upstreams: Upstreams{
Loadbalance: "roundrobin",
Hosts: []Host{{
Host: host,
Host: opt.Esb.BscpHost,
Weight: 100,
}},
},
Expand Down
Loading