restore advanced deployment logic, gofmt fixes

Signed-off-by: GautamBytes <manchandanigautam@gmail.com>
This commit is contained in:
GautamBytes 2025-06-26 19:14:13 +00:00
parent c82af8c731
commit b295da4f5f
4 changed files with 54 additions and 35 deletions

View File

@ -21,12 +21,12 @@ import (
"github.com/openkruise/rollouts/pkg/controller/batchrelease/context"
"github.com/openkruise/rollouts/pkg/controller/batchrelease/control"
"github.com/openkruise/rollouts/pkg/controller/batchrelease/labelpatch"
"github.com/openkruise/rollouts/pkg/feature"
"github.com/openkruise/rollouts/pkg/util"
utilfeature "github.com/openkruise/rollouts/pkg/util/feature"
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/types"
"github.com/openkruise/rollouts/pkg/feature"
utilfeature "github.com/openkruise/rollouts/pkg/util/feature"
"k8s.io/client-go/tools/record"
"k8s.io/klog/v2"
"sigs.k8s.io/controller-runtime/pkg/client"
@ -142,9 +142,9 @@ func (rc *realBatchControlPlane) Finalize() error {
// If Rollout CR was deleted and our gate is on, skip un-pause
if rc.release.DeletionTimestamp != nil &&
utilfeature.DefaultMutableFeatureGate.Enabled(feature.KeepDeploymentPausedOnDeletionGate) {
utilfeature.DefaultMutableFeatureGate.Enabled(feature.KeepDeploymentPausedOnDeletionGate) {
klog.Infof("BatchRelease(%s/%s) deletion detected; skipping Finalize() because KeepDeploymentPausedOnDeletionGate is enabled",
rc.release.Namespace, rc.release.Name)
rc.release.Namespace, rc.release.Name)
return nil
}

View File

@ -22,11 +22,11 @@ import (
"github.com/openkruise/rollouts/api/v1beta1"
"github.com/openkruise/rollouts/pkg/controller/batchrelease/control"
"github.com/openkruise/rollouts/pkg/controller/batchrelease/labelpatch"
"github.com/openkruise/rollouts/pkg/feature"
"github.com/openkruise/rollouts/pkg/util"
utilfeature "github.com/openkruise/rollouts/pkg/util/feature"
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/types"
"github.com/openkruise/rollouts/pkg/feature"
utilfeature "github.com/openkruise/rollouts/pkg/util/feature"
"k8s.io/client-go/tools/record"
"k8s.io/klog/v2"
"sigs.k8s.io/controller-runtime/pkg/client"
@ -152,32 +152,32 @@ func (rc *realCanaryController) EnsureBatchPodsReadyAndLabeled() error {
}
func (rc *realCanaryController) Finalize() error {
stable, err := rc.BuildStableController()
if client.IgnoreNotFound(err) != nil {
klog.Errorf("…")
return err
}
stable, err := rc.BuildStableController()
if client.IgnoreNotFound(err) != nil {
klog.Errorf("…")
return err
}
// If Rollout is deleted & gate is on, skip stable.Finalize()
if rc.release.DeletionTimestamp != nil &&
utilfeature.DefaultMutableFeatureGate.Enabled(feature.KeepDeploymentPausedOnDeletionGate) {
klog.Infof("… skipping stable.Finalize()")
} else {
if err = stable.Finalize(rc.release); err != nil {
klog.Errorf("… finalize stable err: %v", err)
return err
}
}
// If Rollout is deleted & gate is on, skip stable.Finalize()
if rc.release.DeletionTimestamp != nil &&
utilfeature.DefaultMutableFeatureGate.Enabled(feature.KeepDeploymentPausedOnDeletionGate) {
klog.Infof("… skipping stable.Finalize()")
} else {
if err = stable.Finalize(rc.release); err != nil {
klog.Errorf("… finalize stable err: %v", err)
return err
}
}
canary, err := rc.BuildCanaryController(rc.release)
if client.IgnoreNotFound(err) != nil {
klog.Errorf("… build canary err: %v", err)
return err
}
if err = canary.Delete(rc.release); err != nil {
klog.Errorf("… delete canary err: %v", err)
}
return err
canary, err := rc.BuildCanaryController(rc.release)
if client.IgnoreNotFound(err) != nil {
klog.Errorf("… build canary err: %v", err)
return err
}
if err = canary.Delete(rc.release); err != nil {
klog.Errorf("… delete canary err: %v", err)
}
return err
}
func (rc *realCanaryController) SyncWorkloadInformation() (control.WorkloadEventType, *util.WorkloadInfo, error) {

View File

@ -24,8 +24,8 @@ import (
"github.com/openkruise/rollouts/api/v1beta1"
"github.com/openkruise/rollouts/pkg/controller/batchrelease/control"
"github.com/openkruise/rollouts/pkg/controller/batchrelease/labelpatch"
"github.com/openkruise/rollouts/pkg/util"
"github.com/openkruise/rollouts/pkg/feature"
"github.com/openkruise/rollouts/pkg/util"
utilfeature "github.com/openkruise/rollouts/pkg/util/feature"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/errors"
@ -148,9 +148,9 @@ func (rc *realBatchControlPlane) Finalize() error {
// If Rollout CR was deleted and our gate is on, skip un-pause
if rc.release.DeletionTimestamp != nil && utilfeature.DefaultMutableFeatureGate.Enabled(feature.KeepDeploymentPausedOnDeletionGate) {
klog.Infof("BatchRelease(%s/%s) deletion detected; skipping Finalize() because KeepDeploymentPausedOnDeletionGate is enabled",
rc.release.Namespace, rc.release.Name)
rc.release.Namespace, rc.release.Name)
return nil
}
}
// release workload control info and clean up resources if it needs
return controller.Finalize(rc.release)

View File

@ -24,8 +24,10 @@ import (
"github.com/openkruise/rollouts/api/v1alpha1"
"github.com/openkruise/rollouts/api/v1beta1"
"github.com/openkruise/rollouts/pkg/feature"
"github.com/openkruise/rollouts/pkg/trafficrouting"
"github.com/openkruise/rollouts/pkg/util"
utilfeature "github.com/openkruise/rollouts/pkg/util/feature"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@ -73,6 +75,23 @@ func (m *canaryReleaseManager) runCanary(c *RolloutContext) error {
if m.doCanaryJump(c) {
return nil
}
if utilfeature.DefaultMutableFeatureGate.Enabled(feature.AdvancedDeploymentGate) &&
c.Rollout.Spec.Strategy.Canary.EnableExtraWorkloadForCanary {
tr := newTrafficRoutingContext(c)
if !tr.DisableGenerateCanaryService {
klog.Infof("rollout(%s/%s) advancedDeployment: patching stable service for canary", c.Rollout.Namespace, c.Rollout.Name)
retry, err := m.trafficRoutingManager.PatchStableService(tr)
if err != nil {
return err
} else if retry {
expectedTime := time.Now().Add(tr.RecheckDuration)
c.RecheckTime = &expectedTime
return nil
}
}
}
// When the first batch is trafficRouting rolling and the next steps are rolling release,
// We need to clean up the canary-related resources first and then rollout the rest of the batch.
currentStep := c.Rollout.Spec.Strategy.Canary.Steps[canaryStatus.CurrentStepIndex-1]