Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 14 additions & 14 deletions pkg/controllers/backendrouting/backendrouting_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"time"

"github.com/go-logr/logr"
"github.com/samber/lo"
"k8s.io/apimachinery/pkg/api/equality"
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/meta"
Expand Down Expand Up @@ -257,10 +258,9 @@ func (b *BackendRoutingReconciler) syncInClusterBackends(ctx context.Context, sy

// ensure canary and stable backends
canaryConfig := obj.Spec.ForkedBackends.Canary.DeepCopy()
if canaryConfig.ExtraLabelSelector == nil {
canaryConfig.ExtraLabelSelector = make(map[string]string)
}
canaryConfig.ExtraLabelSelector[rolloutapi.LabelTrafficLane] = rolloutapi.LabelValueTrafficLaneCanary
canaryConfig.ExtraLabelSelector = lo.Assign(canaryConfig.ExtraLabelSelector, map[string]string{
rolloutapi.LabelTrafficLane: rolloutapi.LabelValueTrafficLaneCanary,
})
err := b.ensureBackendResource(ctx, syncCtx, *canaryConfig)
if err != nil {
return err
Expand All @@ -269,10 +269,9 @@ func (b *BackendRoutingReconciler) syncInClusterBackends(ctx context.Context, sy
syncCtx.NewStatus.Backends.Canary.Conditions.Ready = ptr.To(true)

stableConfig := obj.Spec.ForkedBackends.Stable.DeepCopy()
if stableConfig.ExtraLabelSelector == nil {
stableConfig.ExtraLabelSelector = make(map[string]string)
}
stableConfig.ExtraLabelSelector[rolloutapi.LabelTrafficLane] = rolloutapi.LabelValueTrafficLaneStable
stableConfig.ExtraLabelSelector = lo.Assign(stableConfig.ExtraLabelSelector, map[string]string{
rolloutapi.LabelTrafficLane: rolloutapi.LabelValueTrafficLaneStable,
})
err = b.ensureBackendResource(ctx, syncCtx, *stableConfig)
if err != nil {
return err
Expand Down Expand Up @@ -346,12 +345,13 @@ func (b *BackendRoutingReconciler) ensureBackendResource(ctx context.Context, sy
// need to create
newBackendObj := backendStore.Fork(syncCtx.BackendObject, config)
// add label
labels := newBackendObj.GetLabels()
if labels == nil {
labels = make(map[string]string)
}
labels[rolloutapi.LabelTemporaryResource] = "true"
newBackendObj.SetLabels(labels)
newBackendObj.SetLabels(lo.Assign(
newBackendObj.GetLabels(),
config.ExtraLabelSelector,
map[string]string{
rolloutapi.LabelCanaryResource: "true",
},
))

err = b.Client.Create(ctx, newBackendObj)
if err != nil {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -416,9 +416,9 @@ func (s *BackendRoutingControllerTestSuite) Test_ForBackends() {
}

s.Require().Equal(rolloutapi.LabelValueTrafficLaneStable, stableSVC.Spec.Selector[rolloutapi.LabelTrafficLane])
s.Require().Contains(stableSVC.Labels, rolloutapi.LabelTemporaryResource)
s.Require().Contains(stableSVC.Labels, rolloutapi.LabelCanaryResource)
s.Require().Equal(rolloutapi.LabelValueTrafficLaneCanary, canarySVC.Spec.Selector[rolloutapi.LabelTrafficLane])
s.Require().Contains(canarySVC.Labels, rolloutapi.LabelTemporaryResource)
s.Require().Contains(canarySVC.Labels, rolloutapi.LabelCanaryResource)

return true
}, 60*time.Second, 5*time.Second, "stable and canary should be created")
Expand Down Expand Up @@ -577,9 +577,7 @@ func (s *BackendRoutingControllerTestSuite) Test_Route() {
if err != nil {
return false
}

s.Require().Contains(ingress.Labels, rolloutapi.LabelCanary)
s.Require().Contains(ingress.Labels, rolloutapi.LabelTemporaryResource)
s.Require().Contains(ingress.Labels, rolloutapi.LabelCanaryResource)
return true
}, 60*time.Second, 5*time.Second, "canary ingress should be ready")

Expand Down
2 changes: 1 addition & 1 deletion pkg/controllers/rolloutrun/control/control.go
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ func (c *CanaryReleaseControl) canaryObject(stable *workload.Info) (client.Objec
func (c *CanaryReleaseControl) applyCanaryDefaults(canaryObj client.Object) {
controllerutil.AddFinalizer(canaryObj, rolloutapi.FinalizerCanaryResourceProtection)
utils.MutateLabels(canaryObj, func(labels map[string]string) {
labels[rolloutapi.LabelCanary] = "true"
labels[rolloutapi.LabelCanaryResource] = "true"
})
}

Expand Down
6 changes: 3 additions & 3 deletions pkg/controllers/rolloutrun/executor/canary.go
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ func (e *canaryExecutor) doCanary(ctx *ExecutorContext) (bool, time.Duration, er
logger.Info("about to create canary resources and check")
canaryWorkloads := make([]*workload.Info, 0)

patch := appendBuiltinPodTemplateMetadataPatch(rolloutRun.Spec.Canary.TemplateMetadataPatch)
patch := appendBuiltinTemplateMetadataPatch(rolloutRun.Spec.Canary.TemplateMetadataPatch)

changed := false
releaseControl := control.NewCanaryReleaseControl(ctx.Accessor, ctx.Client)
Expand Down Expand Up @@ -245,7 +245,7 @@ func (e *canaryExecutor) doCanary(ctx *ExecutorContext) (bool, time.Duration, er
return true, retryImmediately, nil
}

func appendBuiltinPodTemplateMetadataPatch(patch *rolloutv1alpha1.MetadataPatch) *rolloutv1alpha1.MetadataPatch {
func appendBuiltinTemplateMetadataPatch(patch *rolloutv1alpha1.MetadataPatch) *rolloutv1alpha1.MetadataPatch {
if patch == nil {
patch = &rolloutv1alpha1.MetadataPatch{}
}
Expand All @@ -254,7 +254,7 @@ func appendBuiltinPodTemplateMetadataPatch(patch *rolloutv1alpha1.MetadataPatch)
patch.Labels = map[string]string{}
}

patch.Labels[rolloutapi.LabelCanary] = "true"
patch.Labels[rolloutapi.LabelCanaryResource] = "true"
patch.Labels[rolloutapi.LabelTrafficLane] = rolloutapi.LabelValueTrafficLaneCanary
return patch
}
Expand Down
3 changes: 2 additions & 1 deletion pkg/features/rolloutclasspredicate/predicate.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@ import (
"os"

"kusionstack.io/kube-api/rollout"
"kusionstack.io/rollout/pkg/features"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/event"
"sigs.k8s.io/controller-runtime/pkg/predicate"

"kusionstack.io/rollout/pkg/features"
)

var RolloutClassMatchesPredicate = predicate.Funcs{
Expand Down
6 changes: 0 additions & 6 deletions pkg/trafficrouting/backend/inferencepool/accessor.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package inferencepool

import (
rolloutapi "kusionstack.io/kube-api/rollout"
rolloutv1alpha1 "kusionstack.io/kube-api/rollout/v1alpha1"
"sigs.k8s.io/controller-runtime/pkg/client"
gwapiv1alpha2 "sigs.k8s.io/gateway-api-inference-extension/api/v1alpha2"
Expand Down Expand Up @@ -30,10 +29,6 @@ func (b *accessorImpl) Fork(origin client.Object, config rolloutv1alpha1.ForkedB
forkedObj := &gwapiv1alpha2.InferencePool{}
// fork metadata
forkedObj.ObjectMeta = backend.ForkObjectMeta(obj, config.Name)
if forkedObj.Labels == nil {
forkedObj.Labels = make(map[string]string)
}
forkedObj.Labels[rolloutapi.LabelTemporaryResource] = "true"
// fork spec
forkedObj.Spec = *obj.Spec.DeepCopy()
// change spec
Expand All @@ -42,7 +37,6 @@ func (b *accessorImpl) Fork(origin client.Object, config rolloutv1alpha1.ForkedB
}
for k, v := range config.ExtraLabelSelector {
forkedObj.Spec.Selector[gwapiv1alpha2.LabelKey(k)] = gwapiv1alpha2.LabelValue(v)
forkedObj.Labels[k] = v
}
return forkedObj
}
17 changes: 3 additions & 14 deletions pkg/trafficrouting/backend/service/accessor.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,8 @@
package service

import (
"maps"

"github.com/samber/lo"
corev1 "k8s.io/api/core/v1"
rolloutapi "kusionstack.io/kube-api/rollout"
rolloutv1alpha1 "kusionstack.io/kube-api/rollout/v1alpha1"
"sigs.k8s.io/controller-runtime/pkg/client"

Expand All @@ -45,19 +43,10 @@ func (s *accessorImpl) Fork(origin client.Object, config rolloutv1alpha1.ForkedB
forkedObj := &corev1.Service{}
// fork metadata
forkedObj.ObjectMeta = backend.ForkObjectMeta(obj, config.Name)
if forkedObj.Labels == nil {
forkedObj.Labels = make(map[string]string)
}
maps.Copy(forkedObj.Labels, config.ExtraLabelSelector)
forkedObj.Labels[rolloutapi.LabelTemporaryResource] = "true"
// fork spec
forkedObj.Spec.Ports = obj.Spec.Ports
forkedObj.Spec.Type = obj.Spec.Type
forkedObj.Spec.Selector = obj.Spec.Selector
if forkedObj.Spec.Selector == nil {
forkedObj.Spec.Selector = make(map[string]string)
}
// change selector
maps.Copy(forkedObj.Spec.Selector, config.ExtraLabelSelector)
// merge selector
forkedObj.Spec.Selector = lo.Assign(obj.Spec.Selector, config.ExtraLabelSelector)
return forkedObj
}
1 change: 0 additions & 1 deletion pkg/trafficrouting/route/httproute/route.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ func New() route.Route {
}
}


func (r *routeImpl) GetController(client client.Client, br *rolloutv1alpha1.BackendRouting, route client.Object, routeStatus rolloutv1alpha1.BackendRouteStatus) (route.RouteController, error) {
routeObj, ok := route.(*gatewayapiv1.HTTPRoute)
if !ok {
Expand Down
3 changes: 1 addition & 2 deletions pkg/trafficrouting/route/ingress/control.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,8 +150,7 @@ func (c *ingressControl) AddCanary(ctx context.Context) error {
if canaryIgs.Labels == nil {
canaryIgs.Labels = make(map[string]string)
}
canaryIgs.Labels[rolloutapi.LabelCanary] = "true"
canaryIgs.Labels[rolloutapi.LabelTemporaryResource] = "true"
canaryIgs.Labels[rolloutapi.LabelCanaryResource] = "true"
return nil
})

Expand Down
2 changes: 1 addition & 1 deletion pkg/webhook/mutating/pod/pod_mutating.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ func (h *mutatingHandler) Handle(ctx context.Context, req admission.Request) adm

// update pod annotations if needed
progressingInfosMutator := &progressinginfos.ProgressingInfoMutator{
ProgressingInfosAnnotationKey: rollout.AnnoPodRolloutProgressingInfos,
ProgressingInfosAnnotationKey: rollout.AnnoRolloutProgressingInfos,
}
if changed := progressingInfosMutator.MutatePogressingInfo(pod, owners); !changed {
return admission.Allowed("Not changed")
Expand Down
2 changes: 1 addition & 1 deletion pkg/workload/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ func IsProgressing(workload client.Object) bool {
}

func IsCanary(workload client.Object) bool {
canaryValue := workload.GetLabels()[rolloutapi.LabelCanary]
canaryValue := workload.GetLabels()[rolloutapi.LabelCanaryResource]
return canaryValue == "true"
}

Expand Down