Merge 4513b2efbf into 0fbc3ed8c4
This commit is contained in:
commit
0d92d5bedb
|
|
@ -44,6 +44,9 @@ const (
|
|||
// RollbackInBatchAnnotation is set to rollout annotations.
|
||||
// RollbackInBatchAnnotation allow use disable quick rollback, and will roll back in batch style.
|
||||
RollbackInBatchAnnotation = "rollouts.kruise.io/rollback-in-batch"
|
||||
|
||||
// RolloutFinalizer is the finalizer string that the Rollout controller adds to Rollout objects.
|
||||
RolloutFinalizer = "rollouts.kruise.io/finalizer"
|
||||
)
|
||||
|
||||
// RolloutSpec defines the desired state of Rollout
|
||||
|
|
|
|||
|
|
@ -21,7 +21,9 @@ 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"
|
||||
|
|
@ -138,6 +140,14 @@ func (rc *realBatchControlPlane) Finalize() error {
|
|||
return client.IgnoreNotFound(err)
|
||||
}
|
||||
|
||||
// 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)
|
||||
return nil
|
||||
}
|
||||
|
||||
// release workload control info and clean up resources if it needs
|
||||
return controller.Finalize(rc.release)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,9 @@ 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"
|
||||
"k8s.io/client-go/tools/record"
|
||||
|
|
@ -152,24 +154,28 @@ func (rc *realCanaryController) EnsureBatchPodsReadyAndLabeled() error {
|
|||
func (rc *realCanaryController) Finalize() error {
|
||||
stable, err := rc.BuildStableController()
|
||||
if client.IgnoreNotFound(err) != nil {
|
||||
klog.Errorf("BatchRelease %v build stable controller err: %v", klog.KObj(rc.release), err)
|
||||
klog.Errorf("…")
|
||||
return err
|
||||
}
|
||||
|
||||
err = stable.Finalize(rc.release)
|
||||
if err != nil {
|
||||
klog.Errorf("BatchRelease %v finalize stable err: %v", klog.KObj(rc.release), 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("BatchRelease %v build canary controller err: %v", klog.KObj(rc.release), err)
|
||||
klog.Errorf("… build canary err: %v", err)
|
||||
return err
|
||||
}
|
||||
err = canary.Delete(rc.release)
|
||||
if err != nil {
|
||||
klog.Errorf("BatchRelease %v delete canary workload err: %v", klog.KObj(rc.release), err)
|
||||
if err = canary.Delete(rc.release); err != nil {
|
||||
klog.Errorf("… delete canary err: %v", err)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,9 @@ 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"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
|
|
@ -143,6 +145,13 @@ func (rc *realBatchControlPlane) Finalize() error {
|
|||
return client.IgnoreNotFound(err)
|
||||
}
|
||||
|
||||
// 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)
|
||||
return nil
|
||||
}
|
||||
|
||||
// release workload control info and clean up resources if it needs
|
||||
return controller.Finalize(rc.release)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,12 +30,15 @@ const (
|
|||
AdvancedDeploymentGate featuregate.Feature = "AdvancedDeployment"
|
||||
// AppendServiceSelectorGate enable appending pod labels from PodTemplateMetadata to the canary service selector.
|
||||
AppendServiceSelectorGate featuregate.Feature = "AppendPodSelector"
|
||||
// KeepDeploymentPausedOnDeletionGate prevents unpausing a Deployment when its managing Rollout CR is deleted.
|
||||
KeepDeploymentPausedOnDeletionGate featuregate.Feature = "KeepDeploymentPausedOnDeletion"
|
||||
)
|
||||
|
||||
var defaultFeatureGates = map[featuregate.Feature]featuregate.FeatureSpec{
|
||||
RolloutHistoryGate: {Default: false, PreRelease: featuregate.Alpha},
|
||||
AdvancedDeploymentGate: {Default: false, PreRelease: featuregate.Alpha},
|
||||
AppendServiceSelectorGate: {Default: false, PreRelease: featuregate.Alpha},
|
||||
RolloutHistoryGate: {Default: false, PreRelease: featuregate.Alpha},
|
||||
AdvancedDeploymentGate: {Default: false, PreRelease: featuregate.Alpha},
|
||||
AppendServiceSelectorGate: {Default: false, PreRelease: featuregate.Alpha},
|
||||
KeepDeploymentPausedOnDeletionGate: {Default: false, PreRelease: featuregate.Alpha},
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue