Skip to content

Commit

Permalink
remove dry run for k8s/helm (koderover#2776)
Browse files Browse the repository at this point in the history
* remove dry run

Signed-off-by: Patrick Zhao <[email protected]>

* remove dry run source code

Signed-off-by: Patrick Zhao <[email protected]>

---------

Signed-off-by: Patrick Zhao <[email protected]>
  • Loading branch information
PetrusZ authored Jun 28, 2023
1 parent 7b761d2 commit 1795043
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 106 deletions.
17 changes: 6 additions & 11 deletions pkg/microservice/aslan/core/common/service/kube/helm.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,6 @@ func InstallOrUpgradeHelmChartWithValues(param *ReleaseInstallParam, isRetry boo
UpgradeCRDs: true,
CleanupOnFail: true,
MaxHistory: 10,
DryRun: param.DryRun,
}
if isRetry {
chartSpec.Replace = true
Expand All @@ -126,11 +125,9 @@ func InstallOrUpgradeHelmChartWithValues(param *ReleaseInstallParam, isRetry boo

// If the target environment is a shared environment and a sub env, we need to clear the deployed K8s Service.
ctx := context.TODO()
if !chartSpec.DryRun {
err = EnsureDeletePreCreatedServices(ctx, param.ProductName, param.Namespace, chartSpec, helmClient)
if err != nil {
return fmt.Errorf("failed to ensure deleting pre-created K8s Services for product %q in namespace %q: %s", param.ProductName, param.Namespace, err)
}
err = EnsureDeletePreCreatedServices(ctx, param.ProductName, param.Namespace, chartSpec, helmClient)
if err != nil {
return fmt.Errorf("failed to ensure deleting pre-created K8s Services for product %q in namespace %q: %s", param.ProductName, param.Namespace, err)
}

helmClient, err = helmClient.Clone()
Expand All @@ -146,11 +143,9 @@ func InstallOrUpgradeHelmChartWithValues(param *ReleaseInstallParam, isRetry boo
"failed to install or upgrade helm chart %s/%s",
namespace, serviceObj.ServiceName)
} else {
if !chartSpec.DryRun {
err = EnsureZadigServiceByManifest(ctx, param.ProductName, param.Namespace, release.Manifest)
if err != nil {
err = errors.WithMessagef(err, "failed to ensure Zadig Service %s", err)
}
err = EnsureZadigServiceByManifest(ctx, param.ProductName, param.Namespace, release.Manifest)
if err != nil {
err = errors.WithMessagef(err, "failed to ensure Zadig Service %s", err)
}
}

Expand Down
65 changes: 0 additions & 65 deletions pkg/microservice/aslan/core/environment/service/environment.go
Original file line number Diff line number Diff line change
Expand Up @@ -2722,71 +2722,6 @@ func checkServiceImageUpdated(curContainer *commonmodels.Container, serviceInfo
return true
}

func dryRunInstallRelease(productResp *commonmodels.Product, renderset *commonmodels.RenderSet, helmClient *helmtool.HelmClient, log *zap.SugaredLogger) error {
productName, _ := productResp.ProductName, productResp.EnvName
renderChartMap := make(map[string]*templatemodels.ServiceRender)
for _, renderChart := range productResp.ServiceRenders {
renderChartMap[renderChart.ServiceName] = renderChart
}

handler := func(serviceObj *commonmodels.Service, log *zap.SugaredLogger) (err error) {
param, errBuildParam := buildInstallParam(productResp.Namespace, renderset.EnvName, renderset.DefaultValues, renderChartMap[serviceObj.ServiceName], serviceObj)
if errBuildParam != nil {
return errBuildParam
}
param.DryRun = true
param.Production = productResp.Production
err = kube.InstallOrUpgradeHelmChartWithValues(param, false, helmClient)
return
}

errList := new(multierror.Error)
var errLock sync.Mutex
appendErr := func(err error) {
errLock.Lock()
defer errLock.Unlock()
errList = multierror.Append(errList, err)
}

var wg sync.WaitGroup
for _, groupServices := range productResp.Services {
serviceList := make([]*commonmodels.Service, 0)
for _, service := range groupServices {
if _, ok := renderChartMap[service.ServiceName]; !ok {
continue
}
if !commonutil.ServiceDeployed(service.ServiceName, productResp.ServiceDeployStrategy) {
continue
}
opt := &commonrepo.ServiceFindOption{
ServiceName: service.ServiceName,
Type: service.Type,
Revision: service.Revision,
ProductName: productName,
}
serviceObj, err := repository.QueryTemplateService(opt, productResp.Production)
if err != nil {
appendErr(fmt.Errorf("failed to find service %s, err %s", service.ServiceName, err.Error()))
continue
}
serviceList = append(serviceList, serviceObj)
}

for _, svc := range serviceList {
wg.Add(1)
go func(service *models.Service) {
defer wg.Done()
err := handler(service, log)
if err != nil {
appendErr(fmt.Errorf("failed to dryRun install chart for service: %s, err: %s", service.ServiceName, err))
}
}(svc)
}
}
wg.Wait()
return errList.ErrorOrNil()
}

func proceedHelmRelease(productResp *commonmodels.Product, renderset *commonmodels.RenderSet, helmClient *helmtool.HelmClient, filter svcUpgradeFilter, log *zap.SugaredLogger) error {
productName, envName := productResp.ProductName, productResp.EnvName
renderChartMap := make(map[string]*templatemodels.ServiceRender)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,15 @@ import (
"github.com/hashicorp/go-multierror"
"go.uber.org/zap"
versionedclient "istio.io/client-go/pkg/clientset/versioned"
"k8s.io/client-go/informers"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/yaml"

"github.com/koderover/zadig/pkg/microservice/aslan/config"
"github.com/koderover/zadig/pkg/microservice/aslan/core/common/repository/models"
commonmodels "github.com/koderover/zadig/pkg/microservice/aslan/core/common/repository/models"
"github.com/koderover/zadig/pkg/microservice/aslan/core/common/repository/models/template"
commonrepo "github.com/koderover/zadig/pkg/microservice/aslan/core/common/repository/mongodb"
commonservice "github.com/koderover/zadig/pkg/microservice/aslan/core/common/service"
"github.com/koderover/zadig/pkg/microservice/aslan/core/common/service/kube"
commonutil "github.com/koderover/zadig/pkg/microservice/aslan/core/common/util"
"github.com/koderover/zadig/pkg/setting"
kubeclient "github.com/koderover/zadig/pkg/shared/kube/client"
e "github.com/koderover/zadig/pkg/tool/errors"
Expand Down Expand Up @@ -223,12 +220,6 @@ func (creator *HelmProductCreator) Create(user, requestID string, args *models.P
}

// before create product, do install -dryRun to expose errors earlier
err = dryRunInstallRelease(args, renderSet, helmClient, log)
if err != nil {
log.Errorf("error occurred when installing services in env: %s/%s, err: %s ", args.ProductName, args.EnvName, err)
return e.ErrCreateEnv.AddErr(err)
}

dryRunClient := client.NewDryRunClient(kubeClient)
err = initEnvConfigSetAction(args.EnvName, args.Namespace, args.ProductName, user, args.EnvConfigs, true, dryRunClient)
if err != nil {
Expand Down Expand Up @@ -324,22 +315,6 @@ func newDefaultProductCreator() *K8sYamlProductCreator {
return &K8sYamlProductCreator{}
}

func dryRunServices(args *commonmodels.Product, renderSet *commonmodels.RenderSet, informer informers.SharedInformerFactory, kubeClient client.Client, log *zap.SugaredLogger) error {
errList := &multierror.Error{}
for _, group := range args.Services {
for _, svc := range group {
if !commonutil.ServiceDeployed(svc.ServiceName, args.ServiceDeployStrategy) {
continue
}
_, err := upsertService(args, svc, nil, renderSet, args.Render, !args.Production, informer, kubeClient, nil, log)
if err != nil {
errList = multierror.Append(errList, fmt.Errorf("failed to dryRun apply service: %s, err: %s", svc.ServiceName, err))
}
}
}
return errList.ErrorOrNil()
}

func (creator *K8sYamlProductCreator) Create(user, requestID string, args *models.Product, log *zap.SugaredLogger) error {
// get project cluster relation
clusterID := args.ClusterID
Expand Down Expand Up @@ -424,11 +399,6 @@ func (creator *K8sYamlProductCreator) Create(user, requestID string, args *model

// before we apply yaml to k8s, we run kubectl apply --dry-run to expose problems early
dryRunClient := client.NewDryRunClient(kubeClient)
err = dryRunServices(args, renderSet, inf, dryRunClient, log)
if err != nil {
return e.ErrCreateEnv.AddErr(err)
}

err = initEnvConfigSetAction(args.EnvName, args.Namespace, args.ProductName, user, args.EnvConfigs, true, dryRunClient)
if err != nil {
return e.ErrCreateEnv.AddErr(err)
Expand Down

0 comments on commit 1795043

Please sign in to comment.