Repository: knative/serving
Pull request #10504 (2021-01-07 19:30:00)

Use pointers rather than values for rollouts for configs
It was initially easier that way, but there's no reason to copy them
all the time.

/assign @tcnghia mattmoor

knative-prow-robot: [APPROVALNOTIFIER] This PR is **APPROVED**

This pull-request has been approved by: *<a href="https://github.com/knative/serving/pull/10504#" title="Author self-approved">vagababov</a>*

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=knative%2Fserving).

The pull request process is described [here](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process)

<details >
Needs approval from an approver in each of these files:

- ~~[pkg/reconciler/route/OWNERS](https://github.com/knative/serving/blob/master/pkg/reconciler/route/OWNERS)~~ [vagababov]

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":[]} -->
codecov[bot]: # [Codecov](https://codecov.io/gh/knative/serving/pull/10504?src=pr&el=h1) Report
> Merging [#10504](https://codecov.io/gh/knative/serving/pull/10504?src=pr&el=desc) (230bc50) into [master](https://codecov.io/gh/knative/serving/commit/c4d88447339c9046dd499775c3ed4d5031bac5cf?el=desc) (c4d8844) will **increase** coverage by `0.05%`.
> The diff coverage is `100.00%`.

[![Impacted file tree graph](https://codecov.io/gh/knative/serving/pull/10504/graphs/tree.svg?width=650&height=150&src=pr&token=MPpDfAj4Ui)](https://codecov.io/gh/knative/serving/pull/10504?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master   #10504      +/-   ##
==========================================
+ Coverage   87.98%   88.04%   +0.05%     
==========================================
  Files         187      187              
  Lines        8855     8855              
==========================================
+ Hits         7791     7796       +5     
+ Misses        821      818       -3     
+ Partials      243      241       -2     
```


| [Impacted Files](https://codecov.io/gh/knative/serving/pull/10504?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/reconciler/route/traffic/rollout.go](https://codecov.io/gh/knative/serving/pull/10504/diff?src=pr&el=tree#diff-cGtnL3JlY29uY2lsZXIvcm91dGUvdHJhZmZpYy9yb2xsb3V0Lmdv) | `100.00% <100.00%> (ø)` | |
| [pkg/reconciler/route/traffic/traffic.go](https://codecov.io/gh/knative/serving/pull/10504/diff?src=pr&el=tree#diff-cGtnL3JlY29uY2lsZXIvcm91dGUvdHJhZmZpYy90cmFmZmljLmdv) | `93.06% <100.00%> (ø)` | |
| [pkg/autoscaler/statforwarder/forwarder.go](https://codecov.io/gh/knative/serving/pull/10504/diff?src=pr&el=tree#diff-cGtnL2F1dG9zY2FsZXIvc3RhdGZvcndhcmRlci9mb3J3YXJkZXIuZ28=) | `96.29% <0.00%> (+5.55%)` | :arrow_up: |
| [pkg/autoscaler/statforwarder/processor.go](https://codecov.io/gh/knative/serving/pull/10504/diff?src=pr&el=tree#diff-cGtnL2F1dG9zY2FsZXIvc3RhdGZvcndhcmRlci9wcm9jZXNzb3IuZ28=) | `88.88% <0.00%> (+5.55%)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/knative/serving/pull/10504?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/knative/serving/pull/10504?src=pr&el=footer). Last update [c4d8844...230bc50](https://codecov.io/gh/knative/serving/pull/10504?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

vagababov: The more you know. I didn't know that you can elide pointer type 
😊 

Patch:
diff --git a/pkg/reconciler/route/traffic/rollout.go b/pkg/reconciler/route/traffic/rollout.go
index 8336ab43f..a7fa4d924 100644
--- a/pkg/reconciler/route/traffic/rollout.go
+++ b/pkg/reconciler/route/traffic/rollout.go
@@ -37,7 +37,7 @@ import (
 // same configuration if there is a tag configured traffic target.
 type Rollout struct {
 	// Configurations are sorted by tag first and within same tag, by configuration name.
-	Configurations []ConfigurationRollout `json:"configurations,omitempty"`
+	Configurations []*ConfigurationRollout `json:"configurations,omitempty"`
 }
 
 // ConfigurationRollout describes the rollout state for a given config+tag pair.
@@ -105,7 +105,7 @@ func (cur *Rollout) RolloutsByTag(t string) []*ConfigurationRollout {
 	// Now append all configs rollouts with given tag.
 	// If tag != "", then there'll be only one such entry.
 	for ; st < len(cur.Configurations) && cur.Configurations[st].Tag == t; st++ {
-		ret = append(ret, &cur.Configurations[st])
+		ret = append(ret, cur.Configurations[st])
 	}
 	return ret
 }
@@ -155,7 +155,7 @@ func (cur *Rollout) Validate() bool {
 func (cur *Rollout) ObserveReady(ctx context.Context, nowTS int64, durationSecs float64) {
 	logger := logging.FromContext(ctx)
 	for i := range cur.Configurations {
-		c := &cur.Configurations[i]
+		c := cur.Configurations[i]
 		if c.StepParams.StepDuration == 0 && c.StepParams.StartTime > 0 {
 			// In really ceil(nowTS-params.StartTime) should always give 1s, but
 			// given possible time drift, we'll ensure that at least 1s is returned.
@@ -188,13 +188,13 @@ func (cur *Rollout) Step(ctx context.Context, prev *Rollout, nowTS int64) (*Roll
 	// Map the configs by tag.
 	currConfigs, prevConfigs := map[string][]*ConfigurationRollout{}, map[string][]*ConfigurationRollout{}
 	for i, cfg := range cur.Configurations {
-		currConfigs[cfg.Tag] = append(currConfigs[cfg.Tag], &cur.Configurations[i])
+		currConfigs[cfg.Tag] = append(currConfigs[cfg.Tag], cur.Configurations[i])
 	}
 	for i, cfg := range prev.Configurations {
-		prevConfigs[cfg.Tag] = append(prevConfigs[cfg.Tag], &prev.Configurations[i])
+		prevConfigs[cfg.Tag] = append(prevConfigs[cfg.Tag], prev.Configurations[i])
 	}
 
-	var ret []ConfigurationRollout
+	var ret []*ConfigurationRollout
 	returnTS := int64(math.MaxInt64)
 	for t, ccfgs := range currConfigs {
 		pcfgs, ok := prevConfigs[t]
@@ -204,7 +204,7 @@ func (cur *Rollout) Step(ctx context.Context, prev *Rollout, nowTS int64) (*Roll
 		// So just append to the return list.
 		// TODO(vagababov): perhaps just ignore and remove from the return?
 		if !ok {
-			ret = append(ret, *ccfgs[0])
+			ret = append(ret, ccfgs[0])
 			continue
 		}
 		// This is basically an intersect algorithm,
@@ -214,7 +214,7 @@ func (cur *Rollout) Step(ctx context.Context, prev *Rollout, nowTS int64) (*Roll
 			case j >= len(pcfgs):
 				// Those are the new configs that were added during this reconciliation.
 				// So we just copy them to the result.
-				ret = append(ret, *ccfgs[i])
+				ret = append(ret, ccfgs[i])
 				i++
 			case ccfgs[i].ConfigurationName == pcfgs[j].ConfigurationName:
 				// Config might have >0% traffic assigned, unless it is a tag only route (i.e.
@@ -222,7 +222,7 @@ func (cur *Rollout) Step(ctx context.Context, prev *Rollout, nowTS int64) (*Roll
 				// altogether.
 				switch p := ccfgs[i].Percent; {
 				case p > 1:
-					sc := *stepConfig(ctx, ccfgs[i], pcfgs[j], nowTS)
+					sc := stepConfig(ctx, ccfgs[i], pcfgs[j], nowTS)
 					ret = append(ret, sc)
 					// Keep the minimum value if it is not 0.
 					if nst := sc.StepParams.NextStepTime; nst > 0 && nst < returnTS {
@@ -231,7 +231,7 @@ func (cur *Rollout) Step(ctx context.Context, prev *Rollout, nowTS int64) (*Roll
 				case p == 1:
 					// Skip all the work if it's a common A/B scenario where the test config
 					// receives just 1% of traffic.
-					ret = append(ret, *ccfgs[i])
+					ret = append(ret, ccfgs[i])
 					// default p == 0 => just ignore for rollout.
 				}
 				i++
@@ -240,7 +240,7 @@ func (cur *Rollout) Step(ctx context.Context, prev *Rollout, nowTS int64) (*Roll
 				// A new config, has been added. No action for rollout though.
 				// Keep it for future rollout actions.
 				if ccfgs[i].Percent != 0 {
-					ret = append(ret, *ccfgs[i])
+					ret = append(ret, ccfgs[i])
 				}
 				i++
 			default: // cur > prev.
diff --git a/pkg/reconciler/route/traffic/traffic.go b/pkg/reconciler/route/traffic/traffic.go
index 1af1c348e..463ff4bf0 100644
--- a/pkg/reconciler/route/traffic/traffic.go
+++ b/pkg/reconciler/route/traffic/traffic.go
@@ -251,7 +251,7 @@ func buildRolloutForTag(r *Rollout, tag string, rts RevisionTargets) {
 			continue
 		}
 		// The targets with the same revision are already joined together.
-		r.Configurations = append(r.Configurations, ConfigurationRollout{
+		r.Configurations = append(r.Configurations, &ConfigurationRollout{
 			ConfigurationName: rt.ConfigurationName,
 			Tag:               tag,
 			Percent:           int(*rt.Percent),


Test patch:
diff --git a/pkg/reconciler/route/reconcile_resources_test.go b/pkg/reconciler/route/reconcile_resources_test.go
index 4c00c6ac8..48025e261 100644
--- a/pkg/reconciler/route/reconcile_resources_test.go
+++ b/pkg/reconciler/route/reconcile_resources_test.go
@@ -294,7 +294,7 @@ func TestReconcileIngressRolloutDeserializeFail(t *testing.T) {
 		name: "invalid",
 		val: func() string {
 			ro := &traffic.Rollout{
-				Configurations: []traffic.ConfigurationRollout{{
+				Configurations: []*traffic.ConfigurationRollout{{
 					ConfigurationName: "configuration",
 					Percent:           202, // <- this is not right!
 				}},
diff --git a/pkg/reconciler/route/resources/ingress_test.go b/pkg/reconciler/route/resources/ingress_test.go
index 7fc2b840a..110d5e0c7 100644
--- a/pkg/reconciler/route/resources/ingress_test.go
+++ b/pkg/reconciler/route/resources/ingress_test.go
@@ -157,7 +157,7 @@ func TestMakeIngressWithTaggedRollout(t *testing.T) {
 func TestMakeIngressWithActualRollout(t *testing.T) {
 	const ingressClass = "ng-ingress"
 	ro := &traffic.Rollout{
-		Configurations: []traffic.ConfigurationRollout{{
+		Configurations: []*traffic.ConfigurationRollout{{
 			ConfigurationName: "rune",
 			Percent:           1,
 			Revisions: []traffic.RevisionRollout{{
diff --git a/pkg/reconciler/route/table_test.go b/pkg/reconciler/route/table_test.go
index edd9063f2..becf69d37 100644
--- a/pkg/reconciler/route/table_test.go
+++ b/pkg/reconciler/route/table_test.go
@@ -434,7 +434,7 @@ func TestReconcile(t *testing.T) {
 					},
 				},
 				&traffic.Rollout{
-					Configurations: []traffic.ConfigurationRollout{{
+					Configurations: []*traffic.ConfigurationRollout{{
 						ConfigurationName: "config",
 						Revisions: []traffic.RevisionRollout{{
 							RevisionName: "config-00000",
@@ -895,7 +895,7 @@ func TestReconcile(t *testing.T) {
 					},
 				},
 				&traffic.Rollout{
-					Configurations: []traffic.ConfigurationRollout{{
+					Configurations: []*traffic.ConfigurationRollout{{
 						ConfigurationName: "config",
 						Revisions: []traffic.RevisionRollout{{
 							RevisionName: "config-00001",
@@ -2886,7 +2886,7 @@ func simpleRollout(cfg string, revs []traffic.RevisionRollout,
 	now time.Time, ros ...rolloutOption) IngressOption {
 	return func(i *netv1alpha1.Ingress) {
 		r := &traffic.Rollout{
-			Configurations: []traffic.ConfigurationRollout{{
+			Configurations: []*traffic.ConfigurationRollout{{
 				ConfigurationName: cfg,
 				StepParams: traffic.RolloutParams{
 					StartTime: now.UnixNano(),
diff --git a/pkg/reconciler/route/traffic/rollout_test.go b/pkg/reconciler/route/traffic/rollout_test.go
index ad6bba478..948099806 100644
--- a/pkg/reconciler/route/traffic/rollout_test.go
+++ b/pkg/reconciler/route/traffic/rollout_test.go
@@ -46,7 +46,7 @@ func TestStep(t *testing.T) {
 	}, {
 		name: "prev is empty",
 		cur: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -56,13 +56,13 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		prev: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 			}},
 		},
 		want: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -74,7 +74,7 @@ func TestStep(t *testing.T) {
 	}, {
 		name: "simplest, same",
 		cur: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -90,7 +90,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		prev: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -100,7 +100,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		want: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -112,7 +112,7 @@ func TestStep(t *testing.T) {
 	}, {
 		name: "simplest, step",
 		cur: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -122,7 +122,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		prev: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				StepParams: RolloutParams{
@@ -141,7 +141,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		want: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -163,7 +163,7 @@ func TestStep(t *testing.T) {
 	}, {
 		name: "multiple configs step",
 		cur: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           42,
 				Revisions: []RevisionRollout{{
@@ -181,7 +181,7 @@ func TestStep(t *testing.T) {
 			// 6% allocated to the revision direct, say.
 		},
 		prev: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           42,
 				StepParams: RolloutParams{
@@ -217,7 +217,7 @@ func TestStep(t *testing.T) {
 		},
 		want: &Rollout{
 			// Note: order will change, since we sort.
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "keith",
 				Percent:           52,
 				StepParams: RolloutParams{
@@ -255,7 +255,7 @@ func TestStep(t *testing.T) {
 	}, {
 		name: "multiple configs step and roll",
 		cur: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           42,
 				Revisions: []RevisionRollout{{
@@ -273,7 +273,7 @@ func TestStep(t *testing.T) {
 			// 6% allocated to the revision direct, say.
 		},
 		prev: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           42,
 				StepParams: RolloutParams{
@@ -309,7 +309,7 @@ func TestStep(t *testing.T) {
 		},
 		want: &Rollout{
 			// Note: order will change, since we sort.
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "keith",
 				Percent:           52,
 				StepParams: RolloutParams{
@@ -347,7 +347,7 @@ func TestStep(t *testing.T) {
 	}, {
 		name: "simplest, step, when stepsize=0",
 		cur: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -363,7 +363,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		prev: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				StepParams: RolloutParams{
@@ -380,7 +380,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		want: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -398,7 +398,7 @@ func TestStep(t *testing.T) {
 	}, {
 		name: "when new revision becomes 0%",
 		cur: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "charlie",
 				Percent:           0,
 				Revisions: []RevisionRollout{{
@@ -408,7 +408,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		prev: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "charlie",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -421,7 +421,7 @@ func TestStep(t *testing.T) {
 	}, {
 		name: "when new config is added but it's 0%",
 		cur: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "charlie",
 				Percent:           0,
 				Revisions: []RevisionRollout{{
@@ -438,7 +438,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		prev: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -448,7 +448,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		want: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -460,7 +460,7 @@ func TestStep(t *testing.T) {
 	}, {
 		name: "simplest, roll",
 		cur: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -470,7 +470,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		prev: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -486,7 +486,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		want: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				StepParams: RolloutParams{
@@ -504,7 +504,7 @@ func TestStep(t *testing.T) {
 	}, {
 		name: "roll with percentage change down",
 		cur: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           33,
 				Revisions: []RevisionRollout{{
@@ -514,7 +514,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		prev: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           42,
 				Revisions: []RevisionRollout{{
@@ -527,7 +527,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		want: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           33,
 				StepParams: RolloutParams{
@@ -548,7 +548,7 @@ func TestStep(t *testing.T) {
 	}, {
 		name: "roll with percentage change up",
 		cur: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           75,
 				Revisions: []RevisionRollout{{
@@ -558,7 +558,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		prev: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           25,
 				Revisions: []RevisionRollout{{
@@ -571,7 +571,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		want: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				StepParams: RolloutParams{
 					StartTime: now,
@@ -592,7 +592,7 @@ func TestStep(t *testing.T) {
 	}, {
 		name: "roll, where sum < 100% (one route targets a revision, e.g.)",
 		cur: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "brian",
 				Percent:           70,
 				Revisions: []RevisionRollout{{
@@ -602,7 +602,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		prev: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "brian",
 				Percent:           70,
 				Revisions: []RevisionRollout{{
@@ -612,7 +612,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		want: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "brian",
 				Percent:           70,
 				StepParams: RolloutParams{
@@ -630,7 +630,7 @@ func TestStep(t *testing.T) {
 	}, {
 		name: "roll with two existing revisions, no deletes",
 		cur: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -640,7 +640,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		prev: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				StepParams: RolloutParams{
@@ -656,7 +656,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		want: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				StepParams: RolloutParams{
@@ -677,7 +677,7 @@ func TestStep(t *testing.T) {
 	}, {
 		name: "roll with delete (two fast successive rolls)",
 		cur: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -687,7 +687,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		prev: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				StepParams: RolloutParams{
@@ -703,7 +703,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		want: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				StepParams: RolloutParams{
 					StartTime: now,
@@ -721,7 +721,7 @@ func TestStep(t *testing.T) {
 	}, {
 		name: "roll with delete (minimal config target)",
 		cur: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           1,
 				Revisions: []RevisionRollout{{
@@ -731,7 +731,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		prev: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           1,
 				Revisions: []RevisionRollout{{
@@ -741,7 +741,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		want: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           1,
 				Revisions: []RevisionRollout{{
@@ -753,7 +753,7 @@ func TestStep(t *testing.T) {
 	}, {
 		name: "new tag, no roll", // just attached a tag to an existing route.
 		cur: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -771,7 +771,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		prev: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -781,7 +781,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		want: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -801,7 +801,7 @@ func TestStep(t *testing.T) {
 	}, {
 		name: "deleted config, no roll",
 		cur: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -811,7 +811,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		prev: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "keith",
 				Percent:           50,
 				Revisions: []RevisionRollout{{
@@ -828,7 +828,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		want: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -840,7 +840,7 @@ func TestStep(t *testing.T) {
 	}, {
 		name: "a/b config, roll both",
 		cur: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "keith",
 				Percent:           99,
 				Revisions: []RevisionRollout{{
@@ -857,7 +857,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		prev: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "keith",
 				Percent:           99,
 				Revisions: []RevisionRollout{{
@@ -874,7 +874,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		want: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "keith",
 				Percent:           99,
 				StepParams: RolloutParams{
@@ -899,7 +899,7 @@ func TestStep(t *testing.T) {
 	}, {
 		name: "new config, no roll, newer smaller",
 		cur: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "keith",
 				Percent:           50,
 				Revisions: []RevisionRollout{{
@@ -916,7 +916,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		prev: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "mick",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -926,7 +926,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		want: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "keith",
 				Percent:           50,
 				Revisions: []RevisionRollout{{
@@ -945,7 +945,7 @@ func TestStep(t *testing.T) {
 	}, {
 		name: "new config, no roll, newer larger",
 		cur: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "keith",
 				Percent:           50,
 				Revisions: []RevisionRollout{{
@@ -962,7 +962,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		prev: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "keith",
 				Percent:           100,
 				Revisions: []RevisionRollout{{
@@ -972,7 +972,7 @@ func TestStep(t *testing.T) {
 			}},
 		},
 		want: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "keith",
 				Percent:           50,
 				Revisions: []RevisionRollout{{
@@ -1017,7 +1017,7 @@ func TestObserveReady(t *testing.T) {
 		duration    = 120.
 	)
 	ro := Rollout{
-		Configurations: []ConfigurationRollout{{
+		Configurations: []*ConfigurationRollout{{
 			Percent:           100,
 			ConfigurationName: "has-step",
 			StepParams: RolloutParams{
@@ -1063,7 +1063,7 @@ func TestObserveReady(t *testing.T) {
 	}
 
 	want := Rollout{
-		Configurations: []ConfigurationRollout{{
+		Configurations: []*ConfigurationRollout{{
 			Percent:           100,
 			ConfigurationName: "has-step",
 			StepParams: RolloutParams{
@@ -1264,7 +1264,7 @@ func TestValidateFailures(t *testing.T) {
 	}{{
 		name: "config > 100%",
 		r: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "keith",
 				Percent:           101,
 				Revisions: []RevisionRollout{{
@@ -1276,7 +1276,7 @@ func TestValidateFailures(t *testing.T) {
 	}, {
 		name: "rev more than config",
 		r: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "keith",
 				Percent:           42,
 				Revisions: []RevisionRollout{{
@@ -1288,7 +1288,7 @@ func TestValidateFailures(t *testing.T) {
 	}, {
 		name: "revs more than config",
 		r: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "keith",
 				Percent:           42,
 				Revisions: []RevisionRollout{{
@@ -1303,7 +1303,7 @@ func TestValidateFailures(t *testing.T) {
 	}, {
 		name: "2nd config > 100%",
 		r: &Rollout{
-			Configurations: []ConfigurationRollout{{
+			Configurations: []*ConfigurationRollout{{
 				ConfigurationName: "rob",
 				Percent:           10,
 				Revisions: []RevisionRollout{{
@@ -1334,7 +1334,7 @@ func TestValidateFailures(t *testing.T) {
 
 func TestConfigDone(t *testing.T) {
 	r := &Rollout{
-		Configurations: []ConfigurationRollout{{
+		Configurations: []*ConfigurationRollout{{
 			ConfigurationName: "nil",
 			Percent:           100,
 		}, {
@@ -1383,7 +1383,7 @@ func TestConfigDone(t *testing.T) {
 
 func TestJSONRoundtrip(t *testing.T) {
 	orig := &Rollout{
-		Configurations: []ConfigurationRollout{{
+		Configurations: []*ConfigurationRollout{{
 			ConfigurationName: "one",
 			Percent:           100,
 			Revisions: []RevisionRollout{{
@@ -1620,7 +1620,7 @@ func TestStepRevisions(t *testing.T) {
 
 func TestGetByTag(t *testing.T) {
 	r := &Rollout{
-		Configurations: []ConfigurationRollout{{
+		Configurations: []*ConfigurationRollout{{
 			ConfigurationName: "one",
 			Percent:           50,
 			Revisions: []RevisionRollout{{
@@ -1670,9 +1670,9 @@ func TestGetByTag(t *testing.T) {
 	}
 	sortRollout(r)
 
-	wantDef := []*ConfigurationRollout{&r.Configurations[0], &r.Configurations[1], &r.Configurations[2]}
-	wantGilberto := []*ConfigurationRollout{&r.Configurations[3]}
-	wantJobim := []*ConfigurationRollout{&r.Configurations[4]}
+	wantDef := []*ConfigurationRollout{r.Configurations[0], r.Configurations[1], r.Configurations[2]}
+	wantGilberto := []*ConfigurationRollout{r.Configurations[3]}
+	wantJobim := []*ConfigurationRollout{r.Configurations[4]}
 
 	if got, want := r.RolloutsByTag(""), wantDef; !cmp.Equal(got, want) {
 		t.Errorf(`RolloutsByTag("") mismatch: diff(-want,+got):\n%s`, cmp.Diff(want, got))
diff --git a/pkg/reconciler/route/traffic/traffic_test.go b/pkg/reconciler/route/traffic/traffic_test.go
index 2c9ef4371..f96fefdbe 100644
--- a/pkg/reconciler/route/traffic/traffic_test.go
+++ b/pkg/reconciler/route/traffic/traffic_test.go
@@ -179,7 +179,7 @@ func TestBuildTrafficConfigurationVanilla(t *testing.T) {
 	}
 	gotR := tc.BuildRollout()
 	wantR := &Rollout{
-		Configurations: []ConfigurationRollout{{
+		Configurations: []*ConfigurationRollout{{
 			ConfigurationName: goodConfig.Name,
 			Percent:           100,
 			Revisions: []RevisionRollout{{
@@ -279,7 +279,7 @@ func TestBuildTrafficConfigurationVanillaScaledToZero(t *testing.T) {
 	// Inactive shouldn't matter for rollout state.
 	gotR := tc.BuildRollout()
 	wantR := &Rollout{
-		Configurations: []ConfigurationRollout{{
+		Configurations: []*ConfigurationRollout{{
 			ConfigurationName: inactiveConfig.Name,
 			Percent:           100,
 			Revisions: []RevisionRollout{{
@@ -424,7 +424,7 @@ func TestBuildTrafficConfigurationTwoEntriesSameConfig(t *testing.T) {
 
 	gotR := tc.BuildRollout()
 	wantR := &Rollout{
-		Configurations: []ConfigurationRollout{{
+		Configurations: []*ConfigurationRollout{{
 			ConfigurationName: niceConfig.Name,
 			Percent:           100,
 			Revisions: []RevisionRollout{{
@@ -551,7 +551,7 @@ func TestBuildTrafficConfigThreeConfigs(t *testing.T) {
 	gotR := tc.BuildRollout()
 	wantR := &Rollout{
 		// Default tag configs are sorted as well.
-		Configurations: []ConfigurationRollout{{
+		Configurations: []*ConfigurationRollout{{
 			ConfigurationName: goodConfig.Name,
 			Percent:           35,
 			Revisions: []RevisionRollout{{
@@ -661,7 +661,7 @@ func TestBuildTrafficConfigurationTwoEntriesSameConfigDifferentTags(t *testing.T
 
 	gotR := tc.BuildRollout()
 	wantR := &Rollout{
-		Configurations: []ConfigurationRollout{{
+		Configurations: []*ConfigurationRollout{{
 			ConfigurationName: niceConfig.Name,
 			Percent:           100,
 			Revisions: []RevisionRollout{{
@@ -746,7 +746,7 @@ func TestBuildTrafficConfigurationCanary(t *testing.T) {
 	// Ensure just the 10% is going to be rolled out.
 	gotR := tc.BuildRollout()
 	wantR := &Rollout{
-		Configurations: []ConfigurationRollout{{
+		Configurations: []*ConfigurationRollout{{
 			ConfigurationName: goodConfig.Name,
 			Percent:           10,
 			Revisions: []RevisionRollout{{
@@ -1202,7 +1202,7 @@ func TestBuildTrafficConfigurationReadyNotReadyConfig(t *testing.T) {
 	}
 	gotR := tc.BuildRollout()
 	wantR := &Rollout{
-		Configurations: []ConfigurationRollout{{
+		Configurations: []*ConfigurationRollout{{
 			ConfigurationName: readyUnreadyConfig.Name,
 			Percent:           100,
 			Revisions: []RevisionRollout{{
@@ -1431,7 +1431,7 @@ func TestRoundTrippingWithRollout(t *testing.T) {
 		ConfigurationName: niceConfig.Name,
 	}))
 	ro := &Rollout{
-		Configurations: []ConfigurationRollout{{
+		Configurations: []*ConfigurationRollout{{
 			ConfigurationName: goodConfig.Name,
 			Revisions: []RevisionRollout{{
 				RevisionName: "older-rev",
@@ -1651,7 +1651,7 @@ func TestBuildTrafficConfigurationTag0Percent(t *testing.T) {
 
 	gotR := tc.BuildRollout()
 	wantR := &Rollout{
-		Configurations: []ConfigurationRollout{{
+		Configurations: []*ConfigurationRollout{{
 			ConfigurationName: niceConfig.Name,
 			Percent:           100,
 			Revisions: []RevisionRollout{{
diff --git a/third_party/cert-manager-latest/net-certmanager.yaml b/third_party/cert-manager-latest/net-certmanager.yaml
index 538de3a37..d14222eb1 100644
--- a/third_party/cert-manager-latest/net-certmanager.yaml
+++ b/third_party/cert-manager-latest/net-certmanager.yaml
@@ -18,7 +18,7 @@ metadata:
   # These are the permissions needed by the `cert-manager` `Certificate` implementation.
   name: knative-serving-certmanager
   labels:
-    serving.knative.dev/release: "v20210106-d4e4184"
+    serving.knative.dev/release: "v20210107-af85fbf"
     serving.knative.dev/controller: "true"
     networking.knative.dev/certificate-provider: cert-manager
 rules:
@@ -49,7 +49,7 @@ kind: ValidatingWebhookConfiguration
 metadata:
   name: config.webhook.net-certmanager.networking.internal.knative.dev
   labels:
-    serving.knative.dev/release: "v20210106-d4e4184"
+    serving.knative.dev/release: "v20210107-af85fbf"
 webhooks:
   - admissionReviewVersions:
       - v1beta1
@@ -86,7 +86,7 @@ metadata:
   name: net-certmanager-webhook-certs
   namespace: knative-serving
   labels:
-    serving.knative.dev/release: "v20210106-d4e4184"
+    serving.knative.dev/release: "v20210107-af85fbf"
 
 ---
 # Copyright 2020 The Knative Authors
@@ -109,7 +109,7 @@ metadata:
   name: config-certmanager
   namespace: knative-serving
   labels:
-    serving.knative.dev/release: "v20210106-d4e4184"
+    serving.knative.dev/release: "v20210107-af85fbf"
     networking.knative.dev/certificate-provider: cert-manager
 data:
   _example: |
@@ -156,7 +156,7 @@ metadata:
   name: networking-certmanager
   namespace: knative-serving
   labels:
-    serving.knative.dev/release: "v20210106-d4e4184"
+    serving.knative.dev/release: "v20210107-af85fbf"
     networking.knative.dev/certificate-provider: cert-manager
 spec:
   selector:
@@ -168,14 +168,14 @@ spec:
         cluster-autoscaler.kubernetes.io/safe-to-evict: "true"
       labels:
         app: networking-certmanager
-        serving.knative.dev/release: "v20210106-d4e4184"
+        serving.knative.dev/release: "v20210107-af85fbf"
     spec:
       serviceAccountName: controller
       containers:
         - name: networking-certmanager
           # This is the Go import path for the binary that is containerized
           # and substituted here.
-          image: gcr.io/knative-nightly/knative.dev/net-certmanager/cmd/controller@sha256:4be2c29913f66781a47279ab835ae704e8c708307dab7a51cc1f521cfb48c59d
+          image: gcr.io/knative-nightly/knative.dev/net-certmanager/cmd/controller@sha256:3a92347b2baf1307e9573d235b645aab9682e1cbc8f89b1a6aef015017b17630
           resources:
             requests:
               cpu: 30m
@@ -213,7 +213,7 @@ kind: Service
 metadata:
   labels:
     app: networking-certmanager
-    serving.knative.dev/release: "v20210106-d4e4184"
+    serving.knative.dev/release: "v20210107-af85fbf"
     networking.knative.dev/certificate-provider: cert-manager
   name: networking-certmanager
   namespace: knative-serving
@@ -250,7 +250,7 @@ metadata:
   name: net-certmanager-webhook
   namespace: knative-serving
   labels:
-    serving.knative.dev/release: "v20210106-d4e4184"
+    serving.knative.dev/release: "v20210107-af85fbf"
 spec:
   selector:
     matchLabels:
@@ -263,14 +263,14 @@ spec:
       labels:
         app: net-certmanager-webhook
         role: net-certmanager-webhook
-        serving.knative.dev/release: "v20210106-d4e4184"
+        serving.knative.dev/release: "v20210107-af85fbf"
     spec:
       serviceAccountName: controller
       containers:
         - name: webhook
           # This is the Go import path for the binary that is containerized
           # and substituted here.
-          image: gcr.io/knative-nightly/knative.dev/net-certmanager/cmd/webhook@sha256:0dc1bbb47ef5d51b9d7516f9171f4699d455763c89c12fb86f75a985bddce474
+          image: gcr.io/knative-nightly/knative.dev/net-certmanager/cmd/webhook@sha256:c7d9630fe24b92844b8efd64edd5f6ad82c0e7a77689aecf43fc5e8c5fb2f6c0
           resources:
             requests:
               cpu: 20m
@@ -329,7 +329,7 @@ metadata:
   namespace: knative-serving
   labels:
     role: net-certmanager-webhook
-    serving.knative.dev/release: "v20210106-d4e4184"
+    serving.knative.dev/release: "v20210107-af85fbf"
 spec:
   ports:
     # Define metrics and profiling for them to be accessible within service meshes.
diff --git a/third_party/kourier-latest/kourier.yaml b/third_party/kourier-latest/kourier.yaml
index 8131e255f..f6c350282 100644
--- a/third_party/kourier-latest/kourier.yaml
+++ b/third_party/kourier-latest/kourier.yaml
@@ -18,7 +18,7 @@ metadata:
   name: kourier-system
   labels:
     networking.knative.dev/ingress-provider: kourier
-    serving.knative.dev/release: "v20210106-a4e10cc2"
+    serving.knative.dev/release: "v20210107-707240d1"
 
 ---
 # Copyright 2020 The Knative Authors
@@ -42,7 +42,7 @@ metadata:
   namespace: knative-serving
   labels:
     networking.knative.dev/ingress-provider: kourier
-    serving.knative.dev/release: "v20210106-a4e10cc2"
+    serving.knative.dev/release: "v20210107-707240d1"
 ---
 apiVersion: rbac.authorization.k8s.io/v1
 kind: ClusterRole
@@ -51,7 +51,7 @@ metadata:
   namespace: knative-serving
   labels:
     networking.knative.dev/ingress-provider: kourier
-    serving.knative.dev/release: "v20210106-a4e10cc2"
+    serving.knative.dev/release: "v20210107-707240d1"
 rules:
   - apiGroups: [""]
     resources: ["events"]
@@ -78,7 +78,7 @@ metadata:
   name: 3scale-kourier
   labels:
     networking.knative.dev/ingress-provider: kourier
-    serving.knative.dev/release: "v20210106-a4e10cc2"
+    serving.knative.dev/release: "v20210107-707240d1"
 roleRef:
   apiGroup: rbac.authorization.k8s.io
   kind: ClusterRole
@@ -110,7 +110,7 @@ metadata:
   namespace: knative-serving
   labels:
     networking.knative.dev/ingress-provider: kourier
-    serving.knative.dev/release: "v20210106-a4e10cc2"
+    serving.knative.dev/release: "v20210107-707240d1"
 spec:
   replicas: 1
   selector:
@@ -122,7 +122,7 @@ spec:
         app: 3scale-kourier-control
     spec:
       containers:
-        - image: gcr.io/knative-nightly/knative.dev/net-kourier/cmd/kourier@sha256:e1a21d7147009edb875c9651db60b1b545970295d15a70f93bfa96e8cb3cc9b3
+        - image: gcr.io/knative-nightly/knative.dev/net-kourier/cmd/kourier@sha256:ca4090e564c601bc32a487f586ad3d748d682d0e62cfce1c0c80ee0858a735e0
           name: kourier-control
           env:
             - name: CERTS_SECRET_NAMESPACE
@@ -158,7 +158,7 @@ metadata:
   namespace: knative-serving
   labels:
     networking.knative.dev/ingress-provider: kourier
-    serving.knative.dev/release: "v20210106-a4e10cc2"
+    serving.knative.dev/release: "v20210107-707240d1"
 spec:
   ports:
     - name: grpc-xds
@@ -191,7 +191,7 @@ metadata:
   namespace: kourier-system
   labels:
     networking.knative.dev/ingress-provider: kourier
-    serving.knative.dev/release: "v20210106-a4e10cc2"
+    serving.knative.dev/release: "v20210107-707240d1"
 spec:
   selector:
     matchLabels:
@@ -257,7 +257,7 @@ metadata:
   namespace: kourier-system
   labels:
     networking.knative.dev/ingress-provider: kourier
-    serving.knative.dev/release: "v20210106-a4e10cc2"
+    serving.knative.dev/release: "v20210107-707240d1"
 spec:
   ports:
     - name: http2
@@ -279,7 +279,7 @@ metadata:
   namespace: kourier-system
   labels:
     networking.knative.dev/ingress-provider: kourier
-    serving.knative.dev/release: "v20210106-a4e10cc2"
+    serving.knative.dev/release: "v20210107-707240d1"
 spec:
   ports:
     - name: http2
@@ -297,7 +297,7 @@ metadata:
   namespace: kourier-system
   labels:
     networking.knative.dev/ingress-provider: kourier
-    serving.knative.dev/release: "v20210106-a4e10cc2"
+    serving.knative.dev/release: "v20210107-707240d1"
 data:
   envoy-bootstrap.yaml: |
     dynamic_resources: