diff --git a/pkg/controller/controller.go b/pkg/controller/controller.go index c6f5fb0d3..be8247a14 100644 --- a/pkg/controller/controller.go +++ b/pkg/controller/controller.go @@ -12,6 +12,7 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" "go.uber.org/atomic" + helpers "k8s.io.apimachinery/pkg/apis/meta/v1/helpers" v1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -395,11 +396,16 @@ func (c *RolloutController) podsNotMatchingUpdateRevision(sts *v1.StatefulSet) ( return nil, errors.New("updateRevision is empty") } - // Get any pods whose revision doesn't match the StatefulSet's updateRevision + // Create selector for all the pods selected by the Statefulset + podsSelector, err := helpers.LabelSelectorAsSelector(sts.Spec.Selector) + if err != nil { + panic(err) + } + + // Filter pods whose revision doesn't match the StatefulSet's updateRevision // and so it means they still need to be updated. - podsSelector := labels.NewSelector().Add( + podsSelector.Add( mustNewLabelsRequirement(v1.ControllerRevisionHashLabelKey, selection.NotEquals, []string{updateRev}), - mustNewLabelsRequirement("name", selection.Equals, []string{sts.Spec.Template.Labels["name"]}), ) pods, err := c.listPods(podsSelector)