提交 e0bcc01e 编写于 作者: S SampsonYe

k8s配置读写均从数据库中获取

上级 f9986f0e
......@@ -27,13 +27,8 @@ import (
_ "github.com/go-atomci/atomci/internal/migrations"
_ "github.com/go-atomci/atomci/internal/models"
"github.com/go-atomci/atomci/internal/routers"
"github.com/go-atomci/atomci/pkg/kube"
)
func init() {
kube.Init()
}
func main() {
cronjob.RunPublishJobServer()
beego.Info("Beego version:", beego.VERSION)
......
......@@ -18,14 +18,9 @@ package api
import (
"fmt"
"path"
"github.com/go-atomci/atomci/internal/core/podexec"
"github.com/go-atomci/atomci/internal/middleware/log"
"github.com/go-atomci/atomci/pkg/kube"
"github.com/astaxie/beego"
"k8s.io/client-go/tools/clientcmd"
)
type TerminalController struct {
......@@ -57,7 +52,7 @@ func (t *TerminalController) PodTerminal() {
_ = pty.Close()
}()
kubeCli, err := kube.GetClientset(cluster)
kubeCli, cfg, err := kube.GetClientset(cluster)
if err != nil {
msg := fmt.Sprintf("get kubecli err :%v", err)
log.Log.Error(msg)
......@@ -79,14 +74,6 @@ func (t *TerminalController) PodTerminal() {
return
}
configFile := path.Join(beego.AppConfig.String("k8s::configPath"), cluster)
cfg, err := clientcmd.BuildConfigFromFlags("", configFile)
if err != nil {
msg := fmt.Sprintf("build config occur error: %s", err.Error())
log.Log.Error(msg)
t.HandleInternalServerError(msg)
return
}
err = podexec.ExecPod(kubeCli, cfg, []string{"/bin/sh"}, pty, namespace, podName, containerName)
if err != nil {
msg := fmt.Sprintf("Exec to pod error! err: %v", err)
......
......@@ -144,7 +144,7 @@ func NewAppRes(cluster string, envID, projectID int64) (*AppRes, error) {
ProjectID: projectID,
}, nil
}
client, err := kube.GetClientset(cluster)
client, _, err := kube.GetClientset(cluster)
if err != nil {
if cluster != "" {
return nil, errors.NewInternalServerError().SetCause(err)
......@@ -486,7 +486,7 @@ func (ar *AppRes) SetLabels(namespace, name string, labels map[string]string) er
}
func CreateK8sNamespace(cluster, namespace string) error {
client, err := kube.GetClientset(cluster)
client, _, err := kube.GetClientset(cluster)
if err != nil {
return err
}
......@@ -505,7 +505,7 @@ func CreateK8sNamespace(cluster, namespace string) error {
}
func CreateRegistrySecret(cluster, namespace string, envID int64) error {
client, err := kube.GetClientset(cluster)
client, _, err := kube.GetClientset(cluster)
if err != nil {
log.Log.Warning(fmt.Sprintf("create registry secret failed: %v", err.Error()))
return err
......
......@@ -17,37 +17,29 @@ limitations under the License.
package kube
import (
"encoding/json"
"github.com/go-atomci/atomci/internal/core/settings"
"github.com/go-atomci/atomci/internal/models"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
)
func GetClientset(cluster string) (client kubernetes.Interface, err error) {
func GetClientset(cluster string) (client kubernetes.Interface, cfg *rest.Config, err error) {
pm := settings.NewSettingManager()
resp, err := pm.GetIntegrateSettingByName(cluster, settings.KubernetesType)
if err != nil {
return nil, err
return nil, nil, err
}
return buildK8sClient(resp.IntegrateSettingReq.Config.(*models.IntegrateSetting))
return buildK8sClient(resp.IntegrateSettingReq.Config.(*settings.KubeConfig))
}
func buildK8sClient(setting *models.IntegrateSetting) (client kubernetes.Interface, err error) {
kube := &settings.KubeConfig{}
err = json.Unmarshal([]byte(setting.Config), kube)
if err != nil {
return nil, err
}
func buildK8sClient(kube *settings.KubeConfig) (client kubernetes.Interface, cfg *rest.Config, err error) {
var k8sConfig *rest.Config
switch kube.Type {
case settings.KubernetesConfig:
k8sConfig, err = clientcmd.RESTConfigFromKubeConfig([]byte(kube.Conf))
if err != nil {
return nil, err
return nil, nil, err
}
case settings.KubernetesToken:
k8sConfig = &rest.Config{
......@@ -58,5 +50,5 @@ func buildK8sClient(setting *models.IntegrateSetting) (client kubernetes.Interfa
}
clientSet, err := kubernetes.NewForConfig(k8sConfig)
return clientSet, err
return clientSet, k8sConfig, err
}
/*
Copyright 2021 The AtomCI Group Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
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 kube
import (
"path"
"github.com/astaxie/beego"
"github.com/astaxie/beego/config"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
)
var clientsetProvider func(cluster string) (kubernetes.Interface, error)
var appConfigProvider func() config.Configer
func Init() {
clientsetProvider = func(cluster string) (kubernetes.Interface, error) {
configPath := path.Join(beego.AppConfig.String("k8s::configPath"), cluster)
config, err := clientcmd.BuildConfigFromFlags("", configPath)
if err != nil {
return nil, err
}
return kubernetes.NewForConfig(config)
}
appConfigProvider = func() config.Configer {
return beego.AppConfig
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册