chart cache

This commit is contained in:
GLYASAI 2021-06-21 16:48:25 +08:00
parent 53219eeed1
commit 253f8b96a3
13 changed files with 40 additions and 29 deletions

View File

@ -32,7 +32,7 @@ func (a *ApplicationController) CreateApp(w http.ResponseWriter, r *http.Request
httputil.ReturnBcodeError(r, w, bcode.NewBadRequest("the field 'app_template_name' is required"))
return
}
if tenantReq.AppTemplateName == "" {
if tenantReq.AppName == "" {
httputil.ReturnBcodeError(r, w, bcode.NewBadRequest("the field 'helm_app_name' is required"))
return
}

View File

@ -40,7 +40,6 @@ import (
"github.com/goodrain/rainbond/cmd/api/option"
"github.com/goodrain/rainbond/db"
"github.com/goodrain/rainbond/event"
"github.com/goodrain/rainbond/util/commonutil"
"github.com/goodrain/rainbond/worker/client"
"github.com/goodrain/rainbond/worker/discover/model"
"github.com/goodrain/rainbond/worker/server"
@ -762,7 +761,7 @@ func (s *ServiceAction) ServiceCreate(sc *api_model.ServiceStruct) error {
func (s *ServiceAction) openInnerPorts(componentID string, ports []dbmodel.TenantServicesPort) {
// TODO: support open multiple ports in one task.
for _, port := range ports {
if !commonutil.BoolValue(port.IsInnerService) {
if !port.IsOpen(){
continue
}
@ -2062,17 +2061,6 @@ func (s *ServiceAction) isServiceClosed(serviceID string) error {
return nil
}
// DeleteComponentInBatch deletes components in batch.
func (s *ServiceAction) DeleteComponentInBatch(tx *gorm.DB, components []*dbmodel.TenantServices) error {
for _, cpt := range components {
err := s.deleteComponent(tx, cpt)
if err != nil {
return err
}
}
return nil
}
func (s *ServiceAction) deleteComponent(tx *gorm.DB, service *dbmodel.TenantServices) error {
delService := service.ChangeDelete()
delService.ID = 0

View File

@ -25,7 +25,6 @@ import (
dbmodel "github.com/goodrain/rainbond/db/model"
"github.com/goodrain/rainbond/worker/discover/model"
"github.com/goodrain/rainbond/worker/server/pb"
"github.com/jinzhu/gorm"
)
//ServiceHandler service handler
@ -77,7 +76,6 @@ type ServiceHandler interface {
GetServiceCheckInfo(uuid string) (*exector.ServiceCheckResult, *util.APIHandleError)
GetServiceDeployInfo(tenantID, serviceID string) (*pb.DeployInfo, *util.APIHandleError)
ListVersionInfo(serviceID string) (*api_model.BuildListRespVO, error)
DeleteComponentInBatch(tx *gorm.DB, components []*dbmodel.TenantServices) error
AddAutoscalerRule(req *api_model.AutoscalerRuleReq) error
UpdAutoscalerRule(req *api_model.AutoscalerRuleReq) error

View File

@ -58,9 +58,10 @@ type Config struct {
// Helm helm configuration.
type Helm struct {
DataDir string
RepoFile string
RepoCache string
DataDir string
RepoFile string
RepoCache string
ChartCache string
}
//Worker worker server
@ -107,6 +108,7 @@ func (a *Worker) AddFlags(fs *pflag.FlagSet) {
}
a.Helm.RepoFile = path.Join(a.Helm.DataDir, "repo/repositories.yaml")
a.Helm.RepoCache = path.Join(a.Helm.DataDir, "cache")
a.Helm.ChartCache = path.Join(a.Helm.DataDir, "chart")
}
//SetLog 设置log

View File

@ -23,6 +23,8 @@ import (
"os"
"strings"
"time"
"github.com/goodrain/rainbond/util/commonutil"
)
//Model 默认字段
@ -324,6 +326,11 @@ func (t *TenantServicesPort) TableName() string {
return "tenant_services_port"
}
// IsOpen checks if the port is opened.
func (t *TenantServicesPort) IsOpen() bool {
return commonutil.BoolValue(t.IsOuterService) || commonutil.BoolValue(t.IsInnerService)
}
//TenantServiceLBMappingPort stream应用端口映射情况
type TenantServiceLBMappingPort struct {
Model

2
go.mod
View File

@ -121,6 +121,7 @@ replace (
github.com/coreos/etcd => github.com/coreos/etcd v3.2.31+incompatible
github.com/docker/distribution => github.com/docker/distribution v0.0.0-20191216044856-a8371794149d
github.com/docker/docker => github.com/docker/docker v17.12.0-ce-rc1.0.20200916142827-bd33bbf0497b+incompatible
github.com/godbus/dbus => github.com/godbus/dbus/v5 v5.0.4
google.golang.org/grpc => google.golang.org/grpc v1.29.0
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.20.0
k8s.io/apimachinery => k8s.io/apimachinery v0.20.0
@ -129,5 +130,4 @@ replace (
k8s.io/client-go => k8s.io/client-go v0.20.0
k8s.io/code-generator => k8s.io/code-generator v0.20.0
k8s.io/component-base => k8s.io/component-base v0.20.0
github.com/godbus/dbus => github.com/godbus/dbus/v5 v5.0.4
)

10
localcheck.sh Executable file
View File

@ -0,0 +1,10 @@
#!/bin/sh
TARGET_BRANCH=${TARGET_BRANCH:-'master'}
CHANGED_MARKDOWN_FILES=$(git diff --name-only ${TARGET_BRANCH} | grep .go)
for file in ${CHANGED_MARKDOWN_FILES}; do
echo "golint ${file}"
golint -set_exit_status=true ${file} || exit 1
done
echo "code golint check success"

View File

@ -68,7 +68,7 @@ func (a *App) Chart() string {
}
// NewApp creates a new app.
func NewApp(ctx context.Context, kubeClient clientset.Interface, rainbondClient versioned.Interface, helmApp *v1alpha1.HelmApp, repoFile, repoCache string) (*App, error) {
func NewApp(ctx context.Context, kubeClient clientset.Interface, rainbondClient versioned.Interface, helmApp *v1alpha1.HelmApp, repoFile, repoCache, chartCache string) (*App, error) {
helmCmd, err := helm.NewHelm(helmApp.GetNamespace(), repoFile, repoCache)
if err != nil {
return nil, err
@ -93,7 +93,7 @@ func NewApp(ctx context.Context, kubeClient clientset.Interface, rainbondClient
overrides: helmApp.Spec.Overrides,
helmCmd: helmCmd,
repo: repo,
chartDir: path.Join("/tmp/helm/chart", helmApp.Namespace, helmApp.Name, helmApp.Spec.Version),
chartDir: path.Join(chartCache, helmApp.Namespace, helmApp.Name, helmApp.Spec.Version),
}, nil
}

View File

@ -38,13 +38,13 @@ type Controller struct {
// NewController creates a new helm app controller.
func NewController(ctx context.Context, stopCh chan struct{}, kubeClient clientset.Interface, clientset versioned.Interface, resyncPeriod time.Duration,
repoFile, repoCache string) *Controller {
repoFile, repoCache, chartCache string) *Controller {
workQueue := workqueue.New()
finalizerQueue := workqueue.New()
storer := NewStorer(clientset, resyncPeriod, workQueue, finalizerQueue)
controlLoop := NewControlLoop(ctx, kubeClient, clientset, storer, workQueue, repoFile, repoCache)
finalizer := NewFinalizer(ctx, kubeClient, clientset, finalizerQueue, repoFile, repoCache)
controlLoop := NewControlLoop(ctx, kubeClient, clientset, storer, workQueue, repoFile, repoCache, chartCache)
finalizer := NewFinalizer(ctx, kubeClient, clientset, finalizerQueue, repoFile, repoCache, chartCache)
return &Controller{
storer: storer,

View File

@ -52,6 +52,7 @@ type ControlLoop struct {
repo *helm.Repo
repoFile string
repoCache string
chartCache string
}
// NewControlLoop -
@ -62,6 +63,7 @@ func NewControlLoop(ctx context.Context,
workQueue workqueue.Interface,
repoFile string,
repoCache string,
chartCache string,
) *ControlLoop {
repo := helm.NewRepo(repoFile, repoCache)
return &ControlLoop{
@ -74,6 +76,7 @@ func NewControlLoop(ctx context.Context,
repo: repo,
repoFile: repoFile,
repoCache: repoCache,
chartCache: chartCache,
}
}
@ -124,7 +127,7 @@ func nameNamespace(key string) (string, string) {
// Reconcile -
func (c *ControlLoop) Reconcile(helmApp *v1alpha1.HelmApp) error {
app, err := NewApp(c.ctx, c.kubeClient, c.clientset, helmApp, c.repoFile, c.repoCache)
app, err := NewApp(c.ctx, c.kubeClient, c.clientset, helmApp, c.repoFile, c.repoCache, c.chartCache)
if err != nil {
return err
}

View File

@ -37,6 +37,7 @@ type Finalizer struct {
queue workqueue.Interface
repoFile string
repoCache string
chartCache string
}
// NewFinalizer creates a new finalizer.
@ -46,6 +47,7 @@ func NewFinalizer(ctx context.Context,
workQueue workqueue.Interface,
repoFile string,
repoCache string,
chartCache string,
) *Finalizer {
return &Finalizer{
ctx: ctx,
@ -55,6 +57,7 @@ func NewFinalizer(ctx context.Context,
queue: workQueue,
repoFile: repoFile,
repoCache: repoCache,
chartCache: chartCache,
}
}
@ -89,7 +92,7 @@ func (c *Finalizer) run(obj interface{}) error {
logrus.Infof("start uninstall helm app: %s/%s", helmApp.Name, helmApp.Namespace)
app, err := NewApp(c.ctx, c.kubeClient, c.clientset, helmApp, c.repoFile, c.repoCache)
app, err := NewApp(c.ctx, c.kubeClient, c.clientset, helmApp, c.repoFile, c.repoCache, c.chartCache)
if err != nil {
return err
}

View File

@ -73,7 +73,7 @@ var _ = BeforeSuite(func() {
rainbondClient = versioned.NewForConfigOrDie(restConfig)
kubeClient = clientset.NewForConfigOrDie(restConfig)
ctrl := NewController(ctx, stopCh, kubeClient, rainbondClient, 5*time.Second, "/tmp/helm/repo/repositories.yaml", "/tmp/helm/cache")
ctrl := NewController(ctx, stopCh, kubeClient, rainbondClient, 5*time.Second, "/tmp/helm/repo/repositories.yaml", "/tmp/helm/cache", "/tmp/helm/chart")
go ctrl.Start()
// create namespace

View File

@ -91,7 +91,7 @@ func NewMasterController(conf option.Config, store store.Storer, kubeClient kube
}, serverVersion.GitVersion)
stopCh := make(chan struct{})
helmAppController := helmapp.NewController(ctx, stopCh, kubeClient, rainbondClient, 5*time.Second, conf.Helm.RepoFile, conf.Helm.RepoCache)
helmAppController := helmapp.NewController(ctx, stopCh, kubeClient, rainbondClient, 5*time.Second, conf.Helm.RepoFile, conf.Helm.RepoCache, conf.Helm.RepoCache)
return &Controller{
conf: conf,