Repository: knative/serving
Pull request #11669 (2021-07-13 15:55:10)

Add support for emptyDir volume type
Part of work in #11664 

<!-- Please include the 'why' behind your changes if no issue exists -->
## Proposed Changes

* Adds the required feature flag `kubernetes.podspec-volumes-emptydir`, updates the related CRD and apis.
* Updates related unit tests
* Validates EmptyDir contents. A bit stricter with the negative values compared to what K8s does [here](https://github.com/kubernetes/kubernetes/blob/4d78db54a58e250b049c4fe17ac484e5c3ec662d/pkg/volume/emptydir/empty_dir.go#L137).

Tested manually, test cases and results [here](https://gist.github.com/skonto/fc374cdd4ffeb914c3f950540ffa5ad8).

/cc @dprotaso @julz @markusthoemmes 

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

This pull-request has been approved by: *<a href="https://github.com/knative/serving/pull/11669#" title="Author self-approved">skonto</a>*
To complete the [pull request process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process), please assign **dprotaso** after the PR has been reviewed.
You can assign the PR to them by writing `/assign @dprotaso` in a comment when ready.

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

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

- **[config/OWNERS](https://github.com/knative/serving/blob/main/config/OWNERS)**
- **[hack/OWNERS](https://github.com/knative/serving/blob/main/hack/OWNERS)**
- **[pkg/apis/OWNERS](https://github.com/knative/serving/blob/main/pkg/apis/OWNERS)**
- **[pkg/reconciler/route/OWNERS](https://github.com/knative/serving/blob/main/pkg/reconciler/route/OWNERS)**

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":["dprotaso"]} -->
codecov[bot]: # [Codecov](https://codecov.io/gh/knative/serving/pull/11669?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative) Report
> Merging [#11669](https://codecov.io/gh/knative/serving/pull/11669?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative) (5dbdcd0) into [main](https://codecov.io/gh/knative/serving/commit/aebfbce96f8981cfdeeb6f7ea37550f2b4edf251?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative) (aebfbce) will **decrease** coverage by `0.10%`.
> The diff coverage is `68.18%`.

[![Impacted file tree graph](https://codecov.io/gh/knative/serving/pull/11669/graphs/tree.svg?width=650&height=150&src=pr&token=MPpDfAj4Ui&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative)](https://codecov.io/gh/knative/serving/pull/11669?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative)

```diff
@@            Coverage Diff             @@
##             main   #11669      +/-   ##
==========================================
- Coverage   87.89%   87.78%   -0.11%     
==========================================
  Files         190      190              
  Lines        9253     9268      +15     
==========================================
+ Hits         8133     8136       +3     
- Misses        873      880       +7     
- Partials      247      252       +5     
```


| [Impacted Files](https://codecov.io/gh/knative/serving/pull/11669?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative) | Coverage Δ | |
|---|---|---|
| [pkg/apis/serving/k8s\_validation.go](https://codecov.io/gh/knative/serving/pull/11669/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative#diff-cGtnL2FwaXMvc2VydmluZy9rOHNfdmFsaWRhdGlvbi5nbw==) | `96.36% <64.70%> (-1.60%)` | :arrow_down: |
| [pkg/apis/config/features.go](https://codecov.io/gh/knative/serving/pull/11669/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative#diff-cGtnL2FwaXMvY29uZmlnL2ZlYXR1cmVzLmdv) | `94.73% <66.66%> (+0.29%)` | :arrow_up: |
| [pkg/apis/serving/fieldmask.go](https://codecov.io/gh/knative/serving/pull/11669/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative#diff-cGtnL2FwaXMvc2VydmluZy9maWVsZG1hc2suZ28=) | `94.94% <100.00%> (+0.03%)` | :arrow_up: |
| [pkg/reconciler/configuration/configuration.go](https://codecov.io/gh/knative/serving/pull/11669/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative#diff-cGtnL3JlY29uY2lsZXIvY29uZmlndXJhdGlvbi9jb25maWd1cmF0aW9uLmdv) | `84.61% <0.00%> (-3.85%)` | :arrow_down: |
| [pkg/autoscaler/scaling/multiscaler.go](https://codecov.io/gh/knative/serving/pull/11669/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative#diff-cGtnL2F1dG9zY2FsZXIvc2NhbGluZy9tdWx0aXNjYWxlci5nbw==) | `87.27% <0.00%> (-1.82%)` | :arrow_down: |
| [pkg/reconciler/revision/resources/queue.go](https://codecov.io/gh/knative/serving/pull/11669/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative#diff-cGtnL3JlY29uY2lsZXIvcmV2aXNpb24vcmVzb3VyY2VzL3F1ZXVlLmdv) | `100.00% <0.00%> (ø)` | |
| [cmd/queue/main.go](https://codecov.io/gh/knative/serving/pull/11669/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative#diff-Y21kL3F1ZXVlL21haW4uZ28=) | `0.51% <0.00%> (+<0.01%)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/knative/serving/pull/11669?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/knative/serving/pull/11669?src=pr&el=footer&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative). Last update [aebfbce...5dbdcd0](https://codecov.io/gh/knative/serving/pull/11669?src=pr&el=lastupdated&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative).

dprotaso: A question for everyone (@julz, @skonto, @markusthoemmes) - what do people thing about allowing `emptyDir` _without_ then need for a feature flag?
markusthoemmes: Personally, I'm game, but what are the ramifications of that? Do we need to change specs?
julz: interesting! I'm pretty ok with it, on balance, from a security perspective: it's technically more surface area, but not dramatically (although as it happens there _was_ [a recent upstream cve](https://nvd.nist.gov/vuln/detail/CVE-2021-30465) that not supporting arbitrary volumes meant we weren't exposed to).

Thinking out loud it does seems possible though to imagine a more opinionated administrator wanting to turn this off it in order to prevent patterns that might be difficult to support (like downloading models on startup), and if we add it without a feature flag then as @markusthoemmes says _arguably_ we should probably add it to the spec, and it may not be a feature all implementations could support so.. I'd probably vote for keeping it flagged, though not very strongly and I'm super ok going another way if y'all disagree. 

(I do wish we could have a more generic way to exclude fields so we could get out of the PodSpec validation business; maybe the openapi stuff eventually?..)
dprotaso: > Do we need to change specs?

So the specs are more about conformance - and technically the OSS can be a superset of that.

ie. We surface replica counts in the revision status though it's not in the spec at this moment. When we bring that to the KTC it could be veto'd by a member. Similarly this is the same case with multiple containers.
dprotaso: My motivation for `emptyDir` not being behind a feature flag is because I think it'll help support multi-container use cases - ie. IPC via a socket or a named pipe
dprotaso: I'm ok being conservative and having the flag to introduce this feature. ie. I'm not sure there are resourceLimits on emptyDir volumes etc.

But long term I think it's beneficial to open it up
dprotaso: oh interesting you can have limits and requests on ephemeral storage

https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#setting-requests-and-limits-for-local-ephemeral-storage
julz: > oh interesting you can have limits and requests on ephemeral storage

Yah I actually double-checked that before writing the sentence about being ok with it from a security perspective 😇 
skonto: I would vote to keep it flagged but open it up later for sure (if we see no issues). 
dprotaso: Sounds good
knative-prow-robot: [APPROVALNOTIFIER] This PR is **NOT APPROVED**

This pull-request has been approved by: *<a href="https://github.com/knative/serving/pull/11669#" title="Author self-approved">skonto</a>*
To complete the [pull request process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process), please ask for approval from **dprotaso** after the PR has been reviewed.

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

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

- **[config/OWNERS](https://github.com/knative/serving/blob/main/config/OWNERS)**
- **[hack/OWNERS](https://github.com/knative/serving/blob/main/hack/OWNERS)**
- **[pkg/apis/OWNERS](https://github.com/knative/serving/blob/main/pkg/apis/OWNERS)**
- **[pkg/reconciler/route/OWNERS](https://github.com/knative/serving/blob/main/pkg/reconciler/route/OWNERS)**

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":["dprotaso"]} -->
skonto: Ready for another review round.

Patch:
diff --git a/config/core/300-resources/configuration.yaml b/config/core/300-resources/configuration.yaml
index c2cef7582..762c9f8e5 100644
--- a/config/core/300-resources/configuration.yaml
+++ b/config/core/300-resources/configuration.yaml
@@ -647,6 +647,7 @@ spec:
                                   secretName:
                                     description: 'Name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
                                     type: string
+                            x-kubernetes-preserve-unknown-fields: true
                       x-kubernetes-preserve-unknown-fields: true
             status:
               description: ConfigurationStatus communicates the observed state of the Configuration (from the controller).
diff --git a/config/core/300-resources/revision.yaml b/config/core/300-resources/revision.yaml
index a035aab78..d2e508c3b 100644
--- a/config/core/300-resources/revision.yaml
+++ b/config/core/300-resources/revision.yaml
@@ -626,6 +626,7 @@ spec:
                           secretName:
                             description: 'Name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
                             type: string
+                    x-kubernetes-preserve-unknown-fields: true
               x-kubernetes-preserve-unknown-fields: true
             status:
               description: RevisionStatus communicates the observed state of the Revision (from the controller).
diff --git a/config/core/300-resources/service.yaml b/config/core/300-resources/service.yaml
index 0676b6c84..08c0e7053 100644
--- a/config/core/300-resources/service.yaml
+++ b/config/core/300-resources/service.yaml
@@ -651,6 +651,7 @@ spec:
                                   secretName:
                                     description: 'Name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
                                     type: string
+                            x-kubernetes-preserve-unknown-fields: true
                       x-kubernetes-preserve-unknown-fields: true
                 traffic:
                   description: Traffic specifies how to distribute traffic over a collection of revisions and configurations.
diff --git a/config/core/configmaps/features.yaml b/config/core/configmaps/features.yaml
index 1723b5c80..3ae7def7b 100644
--- a/config/core/configmaps/features.yaml
+++ b/config/core/configmaps/features.yaml
@@ -20,7 +20,7 @@ metadata:
   labels:
     serving.knative.dev/release: devel
   annotations:
-    knative.dev/example-checksum: "8c1f8302"
+    knative.dev/example-checksum: "3bac317a"
 data:
   _example: |-
     ################################
@@ -131,3 +131,8 @@ data:
     # 1. Enabled: http2 connection will be attempted via upgrade.
     # 2. Disabled: http2 connection will only be attempted when port name is set to "h2c".
     autodetect-http2: "disabled"
+
+    # Controls whether volume support for EmptyDir is enabled or not.
+    # 1. Enabled: enabling EmptyDir volume support
+    # 2. Disabled: disabling EmptyDir volume support
+    kubernetes.podspec-volumes-emptydir: "disabled"
diff --git a/hack/boilerplate/boilerplate.go.txt b/hack/boilerplate/boilerplate.go.txt
index 6f818683b..4b6f5853d 100644
--- a/hack/boilerplate/boilerplate.go.txt
+++ b/hack/boilerplate/boilerplate.go.txt
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/hack/boilerplate/boilerplate.sh.txt b/hack/boilerplate/boilerplate.sh.txt
index f2b4c078a..8381f8a12 100755
--- a/hack/boilerplate/boilerplate.sh.txt
+++ b/hack/boilerplate/boilerplate.sh.txt
@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 
-# Copyright 2020 The Knative Authors
+# Copyright 2021 The Knative Authors
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
diff --git a/hack/schemapatch-config.yaml b/hack/schemapatch-config.yaml
index 4174c1192..e6f8feafd 100644
--- a/hack/schemapatch-config.yaml
+++ b/hack/schemapatch-config.yaml
@@ -5,6 +5,7 @@ k8s.io/api/core/v1.Volume:
     - Name
     - VolumeSource
 k8s.io/api/core/v1.VolumeSource:
+  preserveUnknownFields: true # for feature flagged fields
   allowedFields:
     - Secret
     - ConfigMap
diff --git a/pkg/apis/autoscaling/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/autoscaling/v1alpha1/zz_generated.deepcopy.go
index a4a822dfa..90a378c20 100644
--- a/pkg/apis/autoscaling/v1alpha1/zz_generated.deepcopy.go
+++ b/pkg/apis/autoscaling/v1alpha1/zz_generated.deepcopy.go
@@ -1,7 +1,7 @@
 // +build !ignore_autogenerated
 
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/apis/config/features.go b/pkg/apis/config/features.go
index 9a6023d80..bcc15d9e1 100644
--- a/pkg/apis/config/features.go
+++ b/pkg/apis/config/features.go
@@ -51,6 +51,7 @@ func defaultFeaturesConfig() *Features {
 		PodSpecSecurityContext:       Disabled,
 		ContainerSpecAddCapabilities: Disabled,
 		PodSpecTolerations:           Disabled,
+		PodSpecVolumesEmptyDir:       Disabled,
 		TagHeaderBasedRouting:        Disabled,
 		AutoDetectHTTP2:              Disabled,
 	}
@@ -71,6 +72,7 @@ func NewFeaturesConfigFromMap(data map[string]string) (*Features, error) {
 		asFlag("kubernetes.podspec-securitycontext", &nc.PodSpecSecurityContext),
 		asFlag("kubernetes.containerspec-addcapabilities", &nc.ContainerSpecAddCapabilities),
 		asFlag("kubernetes.podspec-tolerations", &nc.PodSpecTolerations),
+		asFlag("kubernetes.podspec-volumes-emptydir", &nc.PodSpecVolumesEmptyDir),
 		asFlag("tag-header-based-routing", &nc.TagHeaderBasedRouting),
 		asFlag("autodetect-http2", &nc.AutoDetectHTTP2)); err != nil {
 		return nil, err
@@ -95,6 +97,7 @@ type Features struct {
 	PodSpecSecurityContext       Flag
 	ContainerSpecAddCapabilities Flag
 	PodSpecTolerations           Flag
+	PodSpecVolumesEmptyDir       Flag
 	TagHeaderBasedRouting        Flag
 	AutoDetectHTTP2              Flag
 }
diff --git a/pkg/apis/config/zz_generated.deepcopy.go b/pkg/apis/config/zz_generated.deepcopy.go
index 87391bcf1..bd739725e 100644
--- a/pkg/apis/config/zz_generated.deepcopy.go
+++ b/pkg/apis/config/zz_generated.deepcopy.go
@@ -1,7 +1,7 @@
 // +build !ignore_autogenerated
 
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/apis/serving/fieldmask.go b/pkg/apis/serving/fieldmask.go
index d0729f6d0..29de1eec5 100644
--- a/pkg/apis/serving/fieldmask.go
+++ b/pkg/apis/serving/fieldmask.go
@@ -29,10 +29,11 @@ import (
 // VolumeMask performs a _shallow_ copy of the Kubernetes Volume object to a new
 // Kubernetes Volume object bringing over only the fields allowed in the Knative API. This
 // does not validate the contents or the bounds of the provided fields.
-func VolumeMask(in *corev1.Volume) *corev1.Volume {
+func VolumeMask(ctx context.Context, in *corev1.Volume) *corev1.Volume {
 	if in == nil {
 		return nil
 	}
+	cfg := config.FromContextOrDefaults(ctx)
 
 	out := new(corev1.Volume)
 
@@ -40,17 +41,21 @@ func VolumeMask(in *corev1.Volume) *corev1.Volume {
 	out.Name = in.Name
 	out.VolumeSource = in.VolumeSource
 
+	if cfg.Features.PodSpecVolumesEmptyDir != config.Disabled {
+		out.EmptyDir = in.EmptyDir
+	}
+
 	return out
 }
 
 // VolumeSourceMask performs a _shallow_ copy of the Kubernetes VolumeSource object to a new
 // Kubernetes VolumeSource object bringing over only the fields allowed in the Knative API. This
 // does not validate the contents or the bounds of the provided fields.
-func VolumeSourceMask(in *corev1.VolumeSource) *corev1.VolumeSource {
+func VolumeSourceMask(ctx context.Context, in *corev1.VolumeSource) *corev1.VolumeSource {
 	if in == nil {
 		return nil
 	}
-
+	cfg := config.FromContextOrDefaults(ctx)
 	out := new(corev1.VolumeSource)
 
 	// Allowed fields
@@ -58,6 +63,10 @@ func VolumeSourceMask(in *corev1.VolumeSource) *corev1.VolumeSource {
 	out.ConfigMap = in.ConfigMap
 	out.Projected = in.Projected
 
+	if cfg.Features.PodSpecVolumesEmptyDir != config.Disabled {
+		out.EmptyDir = in.EmptyDir
+	}
+
 	// Too many disallowed fields to list
 
 	return out
diff --git a/pkg/apis/serving/k8s_validation.go b/pkg/apis/serving/k8s_validation.go
index 652b61334..679661348 100644
--- a/pkg/apis/serving/k8s_validation.go
+++ b/pkg/apis/serving/k8s_validation.go
@@ -82,10 +82,15 @@ var (
 )
 
 // ValidateVolumes validates the Volumes of a PodSpec.
-func ValidateVolumes(vs []corev1.Volume, mountedVolumes sets.String) (sets.String, *apis.FieldError) {
+func ValidateVolumes(ctx context.Context, vs []corev1.Volume, mountedVolumes sets.String) (sets.String, *apis.FieldError) {
 	volumes := make(sets.String, len(vs))
 	var errs *apis.FieldError
+	features := config.FromContextOrDefaults(ctx).Features
 	for i, volume := range vs {
+		if volume.EmptyDir != nil && features.PodSpecVolumesEmptyDir != config.Enabled {
+			errs = errs.Also((&apis.FieldError{Message: fmt.Sprintf("EmptyDir volume support is off, "+
+				"but found EmptyDir volume %s", volume.Name)}).ViaIndex(i))
+		}
 		if volumes.Has(volume.Name) {
 			errs = errs.Also((&apis.FieldError{
 				Message: fmt.Sprintf("duplicate volume name %q", volume.Name),
@@ -98,14 +103,14 @@ func ValidateVolumes(vs []corev1.Volume, mountedVolumes sets.String) (sets.Strin
 				Paths:   []string{"name"},
 			}).ViaIndex(i))
 		}
-		errs = errs.Also(validateVolume(volume).ViaIndex(i))
+		errs = errs.Also(validateVolume(ctx, volume).ViaIndex(i))
 		volumes.Insert(volume.Name)
 	}
 	return volumes, errs
 }
 
-func validateVolume(volume corev1.Volume) *apis.FieldError {
-	errs := apis.CheckDisallowedFields(volume, *VolumeMask(&volume))
+func validateVolume(ctx context.Context, volume corev1.Volume) *apis.FieldError {
+	errs := apis.CheckDisallowedFields(volume, *VolumeMask(ctx, &volume))
 	if volume.Name == "" {
 		errs = apis.ErrMissingField("name")
 	} else if len(validation.IsDNS1123Label(volume.Name)) != 0 {
@@ -113,7 +118,7 @@ func validateVolume(volume corev1.Volume) *apis.FieldError {
 	}
 
 	vs := volume.VolumeSource
-	errs = errs.Also(apis.CheckDisallowedFields(vs, *VolumeSourceMask(&vs)))
+	errs = errs.Also(apis.CheckDisallowedFields(vs, *VolumeSourceMask(ctx, &vs)))
 	var specified []string
 	if vs.Secret != nil {
 		specified = append(specified, "secret")
@@ -133,8 +138,17 @@ func validateVolume(volume corev1.Volume) *apis.FieldError {
 			errs = errs.Also(validateProjectedVolumeSource(proj).ViaFieldIndex("projected", i))
 		}
 	}
+	if vs.EmptyDir != nil {
+		specified = append(specified, "emptyDir")
+		errs = errs.Also(validateEmptyDirFields(vs.EmptyDir).ViaField("emptyDir"))
+	}
 	if len(specified) == 0 {
-		errs = errs.Also(apis.ErrMissingOneOf("secret", "configMap", "projected"))
+		fieldPaths := []string{"secret", "configMap", "projected"}
+		cfg := config.FromContextOrDefaults(ctx)
+		if cfg.Features.PodSpecVolumesEmptyDir == config.Enabled {
+			fieldPaths = append(fieldPaths, "emptyDir")
+		}
+		errs = errs.Also(apis.ErrMissingOneOf(fieldPaths...))
 	} else if len(specified) > 1 {
 		errs = errs.Also(apis.ErrMultipleOneOf(specified...))
 	}
@@ -211,6 +225,19 @@ func validateKeyToPath(k2p corev1.KeyToPath) *apis.FieldError {
 	return errs
 }
 
+func validateEmptyDirFields(dir *corev1.EmptyDirVolumeSource) *apis.FieldError {
+	var errs *apis.FieldError
+	if dir.Medium != "" && dir.Medium != "Memory" {
+		errs = errs.Also(apis.ErrInvalidValue(dir.Medium, "medium"))
+	}
+	if dir.SizeLimit != nil {
+		if dir.SizeLimit.Value() < 0 {
+			errs = errs.Also(apis.ErrInvalidValue(dir.SizeLimit, "sizeLimit"))
+		}
+	}
+	return errs
+}
+
 func validateEnvValueFrom(ctx context.Context, source *corev1.EnvVarSource) *apis.FieldError {
 	if source == nil {
 		return nil
@@ -289,7 +316,7 @@ func ValidatePodSpec(ctx context.Context, ps corev1.PodSpec) *apis.FieldError {
 
 	errs = errs.Also(ValidatePodSecurityContext(ctx, ps.SecurityContext).ViaField("securityContext"))
 
-	volumes, err := ValidateVolumes(ps.Volumes, AllMountedVolumes(ps.Containers))
+	volumes, err := ValidateVolumes(ctx, ps.Volumes, AllMountedVolumes(ps.Containers))
 	if err != nil {
 		errs = errs.Also(err.ViaField("volumes"))
 	}
diff --git a/pkg/apis/serving/v1/zz_generated.deepcopy.go b/pkg/apis/serving/v1/zz_generated.deepcopy.go
index 98ae8bdaa..05508067d 100644
--- a/pkg/apis/serving/v1/zz_generated.deepcopy.go
+++ b/pkg/apis/serving/v1/zz_generated.deepcopy.go
@@ -1,7 +1,7 @@
 // +build !ignore_autogenerated
 
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/apis/serving/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/serving/v1alpha1/zz_generated.deepcopy.go
index 8565d4ef3..3ca9cf38b 100644
--- a/pkg/apis/serving/v1alpha1/zz_generated.deepcopy.go
+++ b/pkg/apis/serving/v1alpha1/zz_generated.deepcopy.go
@@ -1,7 +1,7 @@
 // +build !ignore_autogenerated
 
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/autoscaler/config/autoscalerconfig/zz_generated.deepcopy.go b/pkg/autoscaler/config/autoscalerconfig/zz_generated.deepcopy.go
index a6725329a..90cda5782 100644
--- a/pkg/autoscaler/config/autoscalerconfig/zz_generated.deepcopy.go
+++ b/pkg/autoscaler/config/autoscalerconfig/zz_generated.deepcopy.go
@@ -1,7 +1,7 @@
 // +build !ignore_autogenerated
 
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/autoscaler/metrics/stat.pb.go b/pkg/autoscaler/metrics/stat.pb.go
index 29ce11075..7c38b8dbf 100644
--- a/pkg/autoscaler/metrics/stat.pb.go
+++ b/pkg/autoscaler/metrics/stat.pb.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/autoscaler/scaling/zz_generated.deepcopy.go b/pkg/autoscaler/scaling/zz_generated.deepcopy.go
index 868800a74..316ca6d29 100644
--- a/pkg/autoscaler/scaling/zz_generated.deepcopy.go
+++ b/pkg/autoscaler/scaling/zz_generated.deepcopy.go
@@ -1,7 +1,7 @@
 // +build !ignore_autogenerated
 
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/clientset.go b/pkg/client/clientset/versioned/clientset.go
index 305681ad7..5a9fff82c 100644
--- a/pkg/client/clientset/versioned/clientset.go
+++ b/pkg/client/clientset/versioned/clientset.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/doc.go b/pkg/client/clientset/versioned/doc.go
index e48c2aa44..20dbc6ffb 100644
--- a/pkg/client/clientset/versioned/doc.go
+++ b/pkg/client/clientset/versioned/doc.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/fake/clientset_generated.go b/pkg/client/clientset/versioned/fake/clientset_generated.go
index 519e7ff0e..f762902d3 100644
--- a/pkg/client/clientset/versioned/fake/clientset_generated.go
+++ b/pkg/client/clientset/versioned/fake/clientset_generated.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/fake/doc.go b/pkg/client/clientset/versioned/fake/doc.go
index 2c4903250..3b00d536c 100644
--- a/pkg/client/clientset/versioned/fake/doc.go
+++ b/pkg/client/clientset/versioned/fake/doc.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/fake/register.go b/pkg/client/clientset/versioned/fake/register.go
index 6dc0ac498..d2fb2372d 100644
--- a/pkg/client/clientset/versioned/fake/register.go
+++ b/pkg/client/clientset/versioned/fake/register.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/scheme/doc.go b/pkg/client/clientset/versioned/scheme/doc.go
index 7acc2dcf2..5597166be 100644
--- a/pkg/client/clientset/versioned/scheme/doc.go
+++ b/pkg/client/clientset/versioned/scheme/doc.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/scheme/register.go b/pkg/client/clientset/versioned/scheme/register.go
index 28f853465..e9cd57bd1 100644
--- a/pkg/client/clientset/versioned/scheme/register.go
+++ b/pkg/client/clientset/versioned/scheme/register.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/autoscaling_client.go b/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/autoscaling_client.go
index 03344f58c..779374ff0 100644
--- a/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/autoscaling_client.go
+++ b/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/autoscaling_client.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/doc.go b/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/doc.go
index 41e872fe9..f905d3a21 100644
--- a/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/doc.go
+++ b/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/doc.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/fake/doc.go b/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/fake/doc.go
index c7f6e65ca..d5a46ef55 100644
--- a/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/fake/doc.go
+++ b/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/fake/doc.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/fake/fake_autoscaling_client.go b/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/fake/fake_autoscaling_client.go
index 1a172fd0c..e4969eb79 100644
--- a/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/fake/fake_autoscaling_client.go
+++ b/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/fake/fake_autoscaling_client.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/fake/fake_metric.go b/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/fake/fake_metric.go
index ee7ad98ef..1f43b1513 100644
--- a/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/fake/fake_metric.go
+++ b/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/fake/fake_metric.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/fake/fake_podautoscaler.go b/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/fake/fake_podautoscaler.go
index 44bd8baa9..3d1709e79 100644
--- a/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/fake/fake_podautoscaler.go
+++ b/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/fake/fake_podautoscaler.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/generated_expansion.go b/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/generated_expansion.go
index a9b63f8e0..f41ec07cb 100644
--- a/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/generated_expansion.go
+++ b/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/generated_expansion.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/metric.go b/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/metric.go
index 5848fdedb..da606b614 100644
--- a/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/metric.go
+++ b/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/metric.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/podautoscaler.go b/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/podautoscaler.go
index 0c08fd7d4..493a17f56 100644
--- a/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/podautoscaler.go
+++ b/pkg/client/clientset/versioned/typed/autoscaling/v1alpha1/podautoscaler.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/serving/v1/configuration.go b/pkg/client/clientset/versioned/typed/serving/v1/configuration.go
index 0caac939f..842680885 100644
--- a/pkg/client/clientset/versioned/typed/serving/v1/configuration.go
+++ b/pkg/client/clientset/versioned/typed/serving/v1/configuration.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/serving/v1/doc.go b/pkg/client/clientset/versioned/typed/serving/v1/doc.go
index 5b83bd1f4..8c88ffc0b 100644
--- a/pkg/client/clientset/versioned/typed/serving/v1/doc.go
+++ b/pkg/client/clientset/versioned/typed/serving/v1/doc.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/serving/v1/fake/doc.go b/pkg/client/clientset/versioned/typed/serving/v1/fake/doc.go
index c7f6e65ca..d5a46ef55 100644
--- a/pkg/client/clientset/versioned/typed/serving/v1/fake/doc.go
+++ b/pkg/client/clientset/versioned/typed/serving/v1/fake/doc.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/serving/v1/fake/fake_configuration.go b/pkg/client/clientset/versioned/typed/serving/v1/fake/fake_configuration.go
index f61d774e2..c605621af 100644
--- a/pkg/client/clientset/versioned/typed/serving/v1/fake/fake_configuration.go
+++ b/pkg/client/clientset/versioned/typed/serving/v1/fake/fake_configuration.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/serving/v1/fake/fake_revision.go b/pkg/client/clientset/versioned/typed/serving/v1/fake/fake_revision.go
index a197cfcfe..a8a7a11a7 100644
--- a/pkg/client/clientset/versioned/typed/serving/v1/fake/fake_revision.go
+++ b/pkg/client/clientset/versioned/typed/serving/v1/fake/fake_revision.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/serving/v1/fake/fake_route.go b/pkg/client/clientset/versioned/typed/serving/v1/fake/fake_route.go
index 4fa156dd2..533b61c71 100644
--- a/pkg/client/clientset/versioned/typed/serving/v1/fake/fake_route.go
+++ b/pkg/client/clientset/versioned/typed/serving/v1/fake/fake_route.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/serving/v1/fake/fake_service.go b/pkg/client/clientset/versioned/typed/serving/v1/fake/fake_service.go
index 1c7601e98..f5dcb1eb1 100644
--- a/pkg/client/clientset/versioned/typed/serving/v1/fake/fake_service.go
+++ b/pkg/client/clientset/versioned/typed/serving/v1/fake/fake_service.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/serving/v1/fake/fake_serving_client.go b/pkg/client/clientset/versioned/typed/serving/v1/fake/fake_serving_client.go
index 617587c4c..36d7831a4 100644
--- a/pkg/client/clientset/versioned/typed/serving/v1/fake/fake_serving_client.go
+++ b/pkg/client/clientset/versioned/typed/serving/v1/fake/fake_serving_client.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/serving/v1/generated_expansion.go b/pkg/client/clientset/versioned/typed/serving/v1/generated_expansion.go
index 4c0460b13..e9fb41509 100644
--- a/pkg/client/clientset/versioned/typed/serving/v1/generated_expansion.go
+++ b/pkg/client/clientset/versioned/typed/serving/v1/generated_expansion.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/serving/v1/revision.go b/pkg/client/clientset/versioned/typed/serving/v1/revision.go
index f0d7e92ed..ea57aa2a5 100644
--- a/pkg/client/clientset/versioned/typed/serving/v1/revision.go
+++ b/pkg/client/clientset/versioned/typed/serving/v1/revision.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/serving/v1/route.go b/pkg/client/clientset/versioned/typed/serving/v1/route.go
index e2e7b446c..87bd27869 100644
--- a/pkg/client/clientset/versioned/typed/serving/v1/route.go
+++ b/pkg/client/clientset/versioned/typed/serving/v1/route.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/serving/v1/service.go b/pkg/client/clientset/versioned/typed/serving/v1/service.go
index 5411fb7f6..ff25abea2 100644
--- a/pkg/client/clientset/versioned/typed/serving/v1/service.go
+++ b/pkg/client/clientset/versioned/typed/serving/v1/service.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/serving/v1/serving_client.go b/pkg/client/clientset/versioned/typed/serving/v1/serving_client.go
index 25925ba2d..c5d873588 100644
--- a/pkg/client/clientset/versioned/typed/serving/v1/serving_client.go
+++ b/pkg/client/clientset/versioned/typed/serving/v1/serving_client.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/serving/v1alpha1/doc.go b/pkg/client/clientset/versioned/typed/serving/v1alpha1/doc.go
index 41e872fe9..f905d3a21 100644
--- a/pkg/client/clientset/versioned/typed/serving/v1alpha1/doc.go
+++ b/pkg/client/clientset/versioned/typed/serving/v1alpha1/doc.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/serving/v1alpha1/domainmapping.go b/pkg/client/clientset/versioned/typed/serving/v1alpha1/domainmapping.go
index 606935b69..87eab554c 100644
--- a/pkg/client/clientset/versioned/typed/serving/v1alpha1/domainmapping.go
+++ b/pkg/client/clientset/versioned/typed/serving/v1alpha1/domainmapping.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/serving/v1alpha1/fake/doc.go b/pkg/client/clientset/versioned/typed/serving/v1alpha1/fake/doc.go
index c7f6e65ca..d5a46ef55 100644
--- a/pkg/client/clientset/versioned/typed/serving/v1alpha1/fake/doc.go
+++ b/pkg/client/clientset/versioned/typed/serving/v1alpha1/fake/doc.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/serving/v1alpha1/fake/fake_domainmapping.go b/pkg/client/clientset/versioned/typed/serving/v1alpha1/fake/fake_domainmapping.go
index f224fe836..0e7a60d0b 100644
--- a/pkg/client/clientset/versioned/typed/serving/v1alpha1/fake/fake_domainmapping.go
+++ b/pkg/client/clientset/versioned/typed/serving/v1alpha1/fake/fake_domainmapping.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/serving/v1alpha1/fake/fake_serving_client.go b/pkg/client/clientset/versioned/typed/serving/v1alpha1/fake/fake_serving_client.go
index 3dde006e6..a4a433c45 100644
--- a/pkg/client/clientset/versioned/typed/serving/v1alpha1/fake/fake_serving_client.go
+++ b/pkg/client/clientset/versioned/typed/serving/v1alpha1/fake/fake_serving_client.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/serving/v1alpha1/generated_expansion.go b/pkg/client/clientset/versioned/typed/serving/v1alpha1/generated_expansion.go
index ce84dcec6..718498c9f 100644
--- a/pkg/client/clientset/versioned/typed/serving/v1alpha1/generated_expansion.go
+++ b/pkg/client/clientset/versioned/typed/serving/v1alpha1/generated_expansion.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/clientset/versioned/typed/serving/v1alpha1/serving_client.go b/pkg/client/clientset/versioned/typed/serving/v1alpha1/serving_client.go
index 1a4aa0ff9..6ccc82c20 100644
--- a/pkg/client/clientset/versioned/typed/serving/v1alpha1/serving_client.go
+++ b/pkg/client/clientset/versioned/typed/serving/v1alpha1/serving_client.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/informers/externalversions/autoscaling/interface.go b/pkg/client/informers/externalversions/autoscaling/interface.go
index a21a2a0bd..525ea01f8 100644
--- a/pkg/client/informers/externalversions/autoscaling/interface.go
+++ b/pkg/client/informers/externalversions/autoscaling/interface.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/informers/externalversions/autoscaling/v1alpha1/interface.go b/pkg/client/informers/externalversions/autoscaling/v1alpha1/interface.go
index fa410aa8d..949a3c50e 100644
--- a/pkg/client/informers/externalversions/autoscaling/v1alpha1/interface.go
+++ b/pkg/client/informers/externalversions/autoscaling/v1alpha1/interface.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/informers/externalversions/autoscaling/v1alpha1/metric.go b/pkg/client/informers/externalversions/autoscaling/v1alpha1/metric.go
index 4ae981da2..01d1ff2bd 100644
--- a/pkg/client/informers/externalversions/autoscaling/v1alpha1/metric.go
+++ b/pkg/client/informers/externalversions/autoscaling/v1alpha1/metric.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/informers/externalversions/autoscaling/v1alpha1/podautoscaler.go b/pkg/client/informers/externalversions/autoscaling/v1alpha1/podautoscaler.go
index d7da12087..264e27f21 100644
--- a/pkg/client/informers/externalversions/autoscaling/v1alpha1/podautoscaler.go
+++ b/pkg/client/informers/externalversions/autoscaling/v1alpha1/podautoscaler.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/informers/externalversions/factory.go b/pkg/client/informers/externalversions/factory.go
index 812bda5ae..bb28fb3cd 100644
--- a/pkg/client/informers/externalversions/factory.go
+++ b/pkg/client/informers/externalversions/factory.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/informers/externalversions/generic.go b/pkg/client/informers/externalversions/generic.go
index 6addf44e4..b53cac5de 100644
--- a/pkg/client/informers/externalversions/generic.go
+++ b/pkg/client/informers/externalversions/generic.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go b/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go
index 94e406ae7..9197d4589 100644
--- a/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go
+++ b/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/informers/externalversions/serving/interface.go b/pkg/client/informers/externalversions/serving/interface.go
index 99b8785d8..ceddabb0e 100644
--- a/pkg/client/informers/externalversions/serving/interface.go
+++ b/pkg/client/informers/externalversions/serving/interface.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/informers/externalversions/serving/v1/configuration.go b/pkg/client/informers/externalversions/serving/v1/configuration.go
index 3056d742f..eafe51901 100644
--- a/pkg/client/informers/externalversions/serving/v1/configuration.go
+++ b/pkg/client/informers/externalversions/serving/v1/configuration.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/informers/externalversions/serving/v1/interface.go b/pkg/client/informers/externalversions/serving/v1/interface.go
index d1a44d318..f466a2565 100644
--- a/pkg/client/informers/externalversions/serving/v1/interface.go
+++ b/pkg/client/informers/externalversions/serving/v1/interface.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/informers/externalversions/serving/v1/revision.go b/pkg/client/informers/externalversions/serving/v1/revision.go
index de376c591..3c5cf9874 100644
--- a/pkg/client/informers/externalversions/serving/v1/revision.go
+++ b/pkg/client/informers/externalversions/serving/v1/revision.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/informers/externalversions/serving/v1/route.go b/pkg/client/informers/externalversions/serving/v1/route.go
index edf0bbc2f..ef7602b1a 100644
--- a/pkg/client/informers/externalversions/serving/v1/route.go
+++ b/pkg/client/informers/externalversions/serving/v1/route.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/informers/externalversions/serving/v1/service.go b/pkg/client/informers/externalversions/serving/v1/service.go
index ecc3d6a7e..d678c306b 100644
--- a/pkg/client/informers/externalversions/serving/v1/service.go
+++ b/pkg/client/informers/externalversions/serving/v1/service.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/informers/externalversions/serving/v1alpha1/domainmapping.go b/pkg/client/informers/externalversions/serving/v1alpha1/domainmapping.go
index 8ca15b535..de1b884fe 100644
--- a/pkg/client/informers/externalversions/serving/v1alpha1/domainmapping.go
+++ b/pkg/client/informers/externalversions/serving/v1alpha1/domainmapping.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/informers/externalversions/serving/v1alpha1/interface.go b/pkg/client/informers/externalversions/serving/v1alpha1/interface.go
index d8c5fa17e..94dea22e1 100644
--- a/pkg/client/informers/externalversions/serving/v1alpha1/interface.go
+++ b/pkg/client/informers/externalversions/serving/v1alpha1/interface.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/client/client.go b/pkg/client/injection/client/client.go
index 381791491..21c8fd06e 100644
--- a/pkg/client/injection/client/client.go
+++ b/pkg/client/injection/client/client.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/client/fake/fake.go b/pkg/client/injection/client/fake/fake.go
index 85d05f5df..f8d39c3b4 100644
--- a/pkg/client/injection/client/fake/fake.go
+++ b/pkg/client/injection/client/fake/fake.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/ducks/autoscaling/v1alpha1/podscalable/fake/fake.go b/pkg/client/injection/ducks/autoscaling/v1alpha1/podscalable/fake/fake.go
index dd70a7f11..5511a12c6 100644
--- a/pkg/client/injection/ducks/autoscaling/v1alpha1/podscalable/fake/fake.go
+++ b/pkg/client/injection/ducks/autoscaling/v1alpha1/podscalable/fake/fake.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/ducks/autoscaling/v1alpha1/podscalable/podscalable.go b/pkg/client/injection/ducks/autoscaling/v1alpha1/podscalable/podscalable.go
index 2c12a21bc..0079960da 100644
--- a/pkg/client/injection/ducks/autoscaling/v1alpha1/podscalable/podscalable.go
+++ b/pkg/client/injection/ducks/autoscaling/v1alpha1/podscalable/podscalable.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/autoscaling/v1alpha1/metric/fake/fake.go b/pkg/client/injection/informers/autoscaling/v1alpha1/metric/fake/fake.go
index c25d54b23..7bf67f7de 100644
--- a/pkg/client/injection/informers/autoscaling/v1alpha1/metric/fake/fake.go
+++ b/pkg/client/injection/informers/autoscaling/v1alpha1/metric/fake/fake.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/autoscaling/v1alpha1/metric/filtered/fake/fake.go b/pkg/client/injection/informers/autoscaling/v1alpha1/metric/filtered/fake/fake.go
index ffcbdd7ab..ba6b2b1c2 100644
--- a/pkg/client/injection/informers/autoscaling/v1alpha1/metric/filtered/fake/fake.go
+++ b/pkg/client/injection/informers/autoscaling/v1alpha1/metric/filtered/fake/fake.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/autoscaling/v1alpha1/metric/filtered/metric.go b/pkg/client/injection/informers/autoscaling/v1alpha1/metric/filtered/metric.go
index a239c99b5..9f046fe17 100644
--- a/pkg/client/injection/informers/autoscaling/v1alpha1/metric/filtered/metric.go
+++ b/pkg/client/injection/informers/autoscaling/v1alpha1/metric/filtered/metric.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/autoscaling/v1alpha1/metric/metric.go b/pkg/client/injection/informers/autoscaling/v1alpha1/metric/metric.go
index 2f744bfc7..077e67aaa 100644
--- a/pkg/client/injection/informers/autoscaling/v1alpha1/metric/metric.go
+++ b/pkg/client/injection/informers/autoscaling/v1alpha1/metric/metric.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/autoscaling/v1alpha1/podautoscaler/fake/fake.go b/pkg/client/injection/informers/autoscaling/v1alpha1/podautoscaler/fake/fake.go
index 3298a3a28..b0bb96e36 100644
--- a/pkg/client/injection/informers/autoscaling/v1alpha1/podautoscaler/fake/fake.go
+++ b/pkg/client/injection/informers/autoscaling/v1alpha1/podautoscaler/fake/fake.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/autoscaling/v1alpha1/podautoscaler/filtered/fake/fake.go b/pkg/client/injection/informers/autoscaling/v1alpha1/podautoscaler/filtered/fake/fake.go
index 01c311213..0267a462c 100644
--- a/pkg/client/injection/informers/autoscaling/v1alpha1/podautoscaler/filtered/fake/fake.go
+++ b/pkg/client/injection/informers/autoscaling/v1alpha1/podautoscaler/filtered/fake/fake.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/autoscaling/v1alpha1/podautoscaler/filtered/podautoscaler.go b/pkg/client/injection/informers/autoscaling/v1alpha1/podautoscaler/filtered/podautoscaler.go
index 06decbadc..c38ba2055 100644
--- a/pkg/client/injection/informers/autoscaling/v1alpha1/podautoscaler/filtered/podautoscaler.go
+++ b/pkg/client/injection/informers/autoscaling/v1alpha1/podautoscaler/filtered/podautoscaler.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/autoscaling/v1alpha1/podautoscaler/podautoscaler.go b/pkg/client/injection/informers/autoscaling/v1alpha1/podautoscaler/podautoscaler.go
index 3cd1e5fc3..09d15405c 100644
--- a/pkg/client/injection/informers/autoscaling/v1alpha1/podautoscaler/podautoscaler.go
+++ b/pkg/client/injection/informers/autoscaling/v1alpha1/podautoscaler/podautoscaler.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/factory/factory.go b/pkg/client/injection/informers/factory/factory.go
index d705ff870..25480f827 100644
--- a/pkg/client/injection/informers/factory/factory.go
+++ b/pkg/client/injection/informers/factory/factory.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/factory/fake/fake.go b/pkg/client/injection/informers/factory/fake/fake.go
index 131731f87..dd9fb9262 100644
--- a/pkg/client/injection/informers/factory/fake/fake.go
+++ b/pkg/client/injection/informers/factory/fake/fake.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/factory/filtered/fake/fake_filtered_factory.go b/pkg/client/injection/informers/factory/filtered/fake/fake_filtered_factory.go
index c472f14c4..60ef2ecbe 100644
--- a/pkg/client/injection/informers/factory/filtered/fake/fake_filtered_factory.go
+++ b/pkg/client/injection/informers/factory/filtered/fake/fake_filtered_factory.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/factory/filtered/filtered_factory.go b/pkg/client/injection/informers/factory/filtered/filtered_factory.go
index c0f6e9b9f..90e7187ee 100644
--- a/pkg/client/injection/informers/factory/filtered/filtered_factory.go
+++ b/pkg/client/injection/informers/factory/filtered/filtered_factory.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/serving/v1/configuration/configuration.go b/pkg/client/injection/informers/serving/v1/configuration/configuration.go
index b05458a9a..ab0b5b7f7 100644
--- a/pkg/client/injection/informers/serving/v1/configuration/configuration.go
+++ b/pkg/client/injection/informers/serving/v1/configuration/configuration.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/serving/v1/configuration/fake/fake.go b/pkg/client/injection/informers/serving/v1/configuration/fake/fake.go
index 41b91f080..f2d6dcd1f 100644
--- a/pkg/client/injection/informers/serving/v1/configuration/fake/fake.go
+++ b/pkg/client/injection/informers/serving/v1/configuration/fake/fake.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/serving/v1/configuration/filtered/configuration.go b/pkg/client/injection/informers/serving/v1/configuration/filtered/configuration.go
index d99119ca4..735601e03 100644
--- a/pkg/client/injection/informers/serving/v1/configuration/filtered/configuration.go
+++ b/pkg/client/injection/informers/serving/v1/configuration/filtered/configuration.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/serving/v1/configuration/filtered/fake/fake.go b/pkg/client/injection/informers/serving/v1/configuration/filtered/fake/fake.go
index 5de08f0a9..b1c4498b8 100644
--- a/pkg/client/injection/informers/serving/v1/configuration/filtered/fake/fake.go
+++ b/pkg/client/injection/informers/serving/v1/configuration/filtered/fake/fake.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/serving/v1/revision/fake/fake.go b/pkg/client/injection/informers/serving/v1/revision/fake/fake.go
index 034c4b90c..d02f84b2c 100644
--- a/pkg/client/injection/informers/serving/v1/revision/fake/fake.go
+++ b/pkg/client/injection/informers/serving/v1/revision/fake/fake.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/serving/v1/revision/filtered/fake/fake.go b/pkg/client/injection/informers/serving/v1/revision/filtered/fake/fake.go
index 972cabe09..d63d94261 100644
--- a/pkg/client/injection/informers/serving/v1/revision/filtered/fake/fake.go
+++ b/pkg/client/injection/informers/serving/v1/revision/filtered/fake/fake.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/serving/v1/revision/filtered/revision.go b/pkg/client/injection/informers/serving/v1/revision/filtered/revision.go
index 5865edc3a..6637b9761 100644
--- a/pkg/client/injection/informers/serving/v1/revision/filtered/revision.go
+++ b/pkg/client/injection/informers/serving/v1/revision/filtered/revision.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/serving/v1/revision/revision.go b/pkg/client/injection/informers/serving/v1/revision/revision.go
index 2278e8e86..bda1c9c52 100644
--- a/pkg/client/injection/informers/serving/v1/revision/revision.go
+++ b/pkg/client/injection/informers/serving/v1/revision/revision.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/serving/v1/route/fake/fake.go b/pkg/client/injection/informers/serving/v1/route/fake/fake.go
index 21ab38fec..eb529b28e 100644
--- a/pkg/client/injection/informers/serving/v1/route/fake/fake.go
+++ b/pkg/client/injection/informers/serving/v1/route/fake/fake.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/serving/v1/route/filtered/fake/fake.go b/pkg/client/injection/informers/serving/v1/route/filtered/fake/fake.go
index 1ae107c86..799a916cb 100644
--- a/pkg/client/injection/informers/serving/v1/route/filtered/fake/fake.go
+++ b/pkg/client/injection/informers/serving/v1/route/filtered/fake/fake.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/serving/v1/route/filtered/route.go b/pkg/client/injection/informers/serving/v1/route/filtered/route.go
index 9815efd20..1c6705bd9 100644
--- a/pkg/client/injection/informers/serving/v1/route/filtered/route.go
+++ b/pkg/client/injection/informers/serving/v1/route/filtered/route.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/serving/v1/route/route.go b/pkg/client/injection/informers/serving/v1/route/route.go
index de1e0faaa..319d1cb5c 100644
--- a/pkg/client/injection/informers/serving/v1/route/route.go
+++ b/pkg/client/injection/informers/serving/v1/route/route.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/serving/v1/service/fake/fake.go b/pkg/client/injection/informers/serving/v1/service/fake/fake.go
index a777b56d7..e70dc6f3a 100644
--- a/pkg/client/injection/informers/serving/v1/service/fake/fake.go
+++ b/pkg/client/injection/informers/serving/v1/service/fake/fake.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/serving/v1/service/filtered/fake/fake.go b/pkg/client/injection/informers/serving/v1/service/filtered/fake/fake.go
index bb53dddb0..131f9537e 100644
--- a/pkg/client/injection/informers/serving/v1/service/filtered/fake/fake.go
+++ b/pkg/client/injection/informers/serving/v1/service/filtered/fake/fake.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/serving/v1/service/filtered/service.go b/pkg/client/injection/informers/serving/v1/service/filtered/service.go
index e38446261..2b6a4b7a5 100644
--- a/pkg/client/injection/informers/serving/v1/service/filtered/service.go
+++ b/pkg/client/injection/informers/serving/v1/service/filtered/service.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/serving/v1/service/service.go b/pkg/client/injection/informers/serving/v1/service/service.go
index 4729e3358..39dbb7028 100644
--- a/pkg/client/injection/informers/serving/v1/service/service.go
+++ b/pkg/client/injection/informers/serving/v1/service/service.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/serving/v1alpha1/domainmapping/domainmapping.go b/pkg/client/injection/informers/serving/v1alpha1/domainmapping/domainmapping.go
index 294ec37c5..f8e11f477 100644
--- a/pkg/client/injection/informers/serving/v1alpha1/domainmapping/domainmapping.go
+++ b/pkg/client/injection/informers/serving/v1alpha1/domainmapping/domainmapping.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/serving/v1alpha1/domainmapping/fake/fake.go b/pkg/client/injection/informers/serving/v1alpha1/domainmapping/fake/fake.go
index 9ff838d93..1426ea833 100644
--- a/pkg/client/injection/informers/serving/v1alpha1/domainmapping/fake/fake.go
+++ b/pkg/client/injection/informers/serving/v1alpha1/domainmapping/fake/fake.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/serving/v1alpha1/domainmapping/filtered/domainmapping.go b/pkg/client/injection/informers/serving/v1alpha1/domainmapping/filtered/domainmapping.go
index a5e15f7e2..101121392 100644
--- a/pkg/client/injection/informers/serving/v1alpha1/domainmapping/filtered/domainmapping.go
+++ b/pkg/client/injection/informers/serving/v1alpha1/domainmapping/filtered/domainmapping.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/informers/serving/v1alpha1/domainmapping/filtered/fake/fake.go b/pkg/client/injection/informers/serving/v1alpha1/domainmapping/filtered/fake/fake.go
index e5a00fe4a..7f59b9d49 100644
--- a/pkg/client/injection/informers/serving/v1alpha1/domainmapping/filtered/fake/fake.go
+++ b/pkg/client/injection/informers/serving/v1alpha1/domainmapping/filtered/fake/fake.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/autoscaling/v1alpha1/metric/controller.go b/pkg/client/injection/reconciler/autoscaling/v1alpha1/metric/controller.go
index cd793575f..7f079f5a3 100644
--- a/pkg/client/injection/reconciler/autoscaling/v1alpha1/metric/controller.go
+++ b/pkg/client/injection/reconciler/autoscaling/v1alpha1/metric/controller.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/autoscaling/v1alpha1/metric/reconciler.go b/pkg/client/injection/reconciler/autoscaling/v1alpha1/metric/reconciler.go
index 6818e7b57..4f753b851 100644
--- a/pkg/client/injection/reconciler/autoscaling/v1alpha1/metric/reconciler.go
+++ b/pkg/client/injection/reconciler/autoscaling/v1alpha1/metric/reconciler.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/autoscaling/v1alpha1/metric/state.go b/pkg/client/injection/reconciler/autoscaling/v1alpha1/metric/state.go
index ae2cc377b..593626728 100644
--- a/pkg/client/injection/reconciler/autoscaling/v1alpha1/metric/state.go
+++ b/pkg/client/injection/reconciler/autoscaling/v1alpha1/metric/state.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/autoscaling/v1alpha1/podautoscaler/controller.go b/pkg/client/injection/reconciler/autoscaling/v1alpha1/podautoscaler/controller.go
index 4ee906e05..f86bc0515 100644
--- a/pkg/client/injection/reconciler/autoscaling/v1alpha1/podautoscaler/controller.go
+++ b/pkg/client/injection/reconciler/autoscaling/v1alpha1/podautoscaler/controller.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/autoscaling/v1alpha1/podautoscaler/reconciler.go b/pkg/client/injection/reconciler/autoscaling/v1alpha1/podautoscaler/reconciler.go
index a82ae6d5b..d421e8f6d 100644
--- a/pkg/client/injection/reconciler/autoscaling/v1alpha1/podautoscaler/reconciler.go
+++ b/pkg/client/injection/reconciler/autoscaling/v1alpha1/podautoscaler/reconciler.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/autoscaling/v1alpha1/podautoscaler/state.go b/pkg/client/injection/reconciler/autoscaling/v1alpha1/podautoscaler/state.go
index 493241146..1f99366c3 100644
--- a/pkg/client/injection/reconciler/autoscaling/v1alpha1/podautoscaler/state.go
+++ b/pkg/client/injection/reconciler/autoscaling/v1alpha1/podautoscaler/state.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/serving/v1/configuration/controller.go b/pkg/client/injection/reconciler/serving/v1/configuration/controller.go
index 4330452c0..8334f96a5 100644
--- a/pkg/client/injection/reconciler/serving/v1/configuration/controller.go
+++ b/pkg/client/injection/reconciler/serving/v1/configuration/controller.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/serving/v1/configuration/reconciler.go b/pkg/client/injection/reconciler/serving/v1/configuration/reconciler.go
index e99337de5..2f8c0205c 100644
--- a/pkg/client/injection/reconciler/serving/v1/configuration/reconciler.go
+++ b/pkg/client/injection/reconciler/serving/v1/configuration/reconciler.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/serving/v1/configuration/state.go b/pkg/client/injection/reconciler/serving/v1/configuration/state.go
index 0591dd42e..74077b7ba 100644
--- a/pkg/client/injection/reconciler/serving/v1/configuration/state.go
+++ b/pkg/client/injection/reconciler/serving/v1/configuration/state.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/serving/v1/revision/controller.go b/pkg/client/injection/reconciler/serving/v1/revision/controller.go
index e648fd31f..6a6817234 100644
--- a/pkg/client/injection/reconciler/serving/v1/revision/controller.go
+++ b/pkg/client/injection/reconciler/serving/v1/revision/controller.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/serving/v1/revision/reconciler.go b/pkg/client/injection/reconciler/serving/v1/revision/reconciler.go
index 6193fa42e..66838ac96 100644
--- a/pkg/client/injection/reconciler/serving/v1/revision/reconciler.go
+++ b/pkg/client/injection/reconciler/serving/v1/revision/reconciler.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/serving/v1/revision/state.go b/pkg/client/injection/reconciler/serving/v1/revision/state.go
index a7a938549..cc55f1089 100644
--- a/pkg/client/injection/reconciler/serving/v1/revision/state.go
+++ b/pkg/client/injection/reconciler/serving/v1/revision/state.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/serving/v1/route/controller.go b/pkg/client/injection/reconciler/serving/v1/route/controller.go
index 38878a940..c2e9d1e4a 100644
--- a/pkg/client/injection/reconciler/serving/v1/route/controller.go
+++ b/pkg/client/injection/reconciler/serving/v1/route/controller.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/serving/v1/route/reconciler.go b/pkg/client/injection/reconciler/serving/v1/route/reconciler.go
index 620513cf9..63ff6c31e 100644
--- a/pkg/client/injection/reconciler/serving/v1/route/reconciler.go
+++ b/pkg/client/injection/reconciler/serving/v1/route/reconciler.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/serving/v1/route/state.go b/pkg/client/injection/reconciler/serving/v1/route/state.go
index 15b91dc60..902225ab9 100644
--- a/pkg/client/injection/reconciler/serving/v1/route/state.go
+++ b/pkg/client/injection/reconciler/serving/v1/route/state.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/serving/v1/service/controller.go b/pkg/client/injection/reconciler/serving/v1/service/controller.go
index cf24d2ce4..cb8689e40 100644
--- a/pkg/client/injection/reconciler/serving/v1/service/controller.go
+++ b/pkg/client/injection/reconciler/serving/v1/service/controller.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/serving/v1/service/reconciler.go b/pkg/client/injection/reconciler/serving/v1/service/reconciler.go
index 5187474d1..7819fecdd 100644
--- a/pkg/client/injection/reconciler/serving/v1/service/reconciler.go
+++ b/pkg/client/injection/reconciler/serving/v1/service/reconciler.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/serving/v1/service/state.go b/pkg/client/injection/reconciler/serving/v1/service/state.go
index ebe704102..f6b2c0084 100644
--- a/pkg/client/injection/reconciler/serving/v1/service/state.go
+++ b/pkg/client/injection/reconciler/serving/v1/service/state.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/serving/v1alpha1/domainmapping/controller.go b/pkg/client/injection/reconciler/serving/v1alpha1/domainmapping/controller.go
index b2f64a94b..0f99c6c3e 100644
--- a/pkg/client/injection/reconciler/serving/v1alpha1/domainmapping/controller.go
+++ b/pkg/client/injection/reconciler/serving/v1alpha1/domainmapping/controller.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/serving/v1alpha1/domainmapping/reconciler.go b/pkg/client/injection/reconciler/serving/v1alpha1/domainmapping/reconciler.go
index eabe269dd..0f6a863d3 100644
--- a/pkg/client/injection/reconciler/serving/v1alpha1/domainmapping/reconciler.go
+++ b/pkg/client/injection/reconciler/serving/v1alpha1/domainmapping/reconciler.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/injection/reconciler/serving/v1alpha1/domainmapping/state.go b/pkg/client/injection/reconciler/serving/v1alpha1/domainmapping/state.go
index dd5c6ebec..d7e90187c 100644
--- a/pkg/client/injection/reconciler/serving/v1alpha1/domainmapping/state.go
+++ b/pkg/client/injection/reconciler/serving/v1alpha1/domainmapping/state.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/listers/autoscaling/v1alpha1/expansion_generated.go b/pkg/client/listers/autoscaling/v1alpha1/expansion_generated.go
index 58fd37c07..36f1c98d4 100644
--- a/pkg/client/listers/autoscaling/v1alpha1/expansion_generated.go
+++ b/pkg/client/listers/autoscaling/v1alpha1/expansion_generated.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/listers/autoscaling/v1alpha1/metric.go b/pkg/client/listers/autoscaling/v1alpha1/metric.go
index 5ce8b725f..91b233b62 100644
--- a/pkg/client/listers/autoscaling/v1alpha1/metric.go
+++ b/pkg/client/listers/autoscaling/v1alpha1/metric.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/listers/autoscaling/v1alpha1/podautoscaler.go b/pkg/client/listers/autoscaling/v1alpha1/podautoscaler.go
index 9db31b0b2..af7e0f171 100644
--- a/pkg/client/listers/autoscaling/v1alpha1/podautoscaler.go
+++ b/pkg/client/listers/autoscaling/v1alpha1/podautoscaler.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/listers/serving/v1/configuration.go b/pkg/client/listers/serving/v1/configuration.go
index 4779a7cb0..1aa311d97 100644
--- a/pkg/client/listers/serving/v1/configuration.go
+++ b/pkg/client/listers/serving/v1/configuration.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/listers/serving/v1/expansion_generated.go b/pkg/client/listers/serving/v1/expansion_generated.go
index 091768b12..625b823d8 100644
--- a/pkg/client/listers/serving/v1/expansion_generated.go
+++ b/pkg/client/listers/serving/v1/expansion_generated.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/listers/serving/v1/revision.go b/pkg/client/listers/serving/v1/revision.go
index e860af2e0..c77fae236 100644
--- a/pkg/client/listers/serving/v1/revision.go
+++ b/pkg/client/listers/serving/v1/revision.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/listers/serving/v1/route.go b/pkg/client/listers/serving/v1/route.go
index 50ceeca11..9d307dce0 100644
--- a/pkg/client/listers/serving/v1/route.go
+++ b/pkg/client/listers/serving/v1/route.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/listers/serving/v1/service.go b/pkg/client/listers/serving/v1/service.go
index 7b7b568a2..af1076650 100644
--- a/pkg/client/listers/serving/v1/service.go
+++ b/pkg/client/listers/serving/v1/service.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/listers/serving/v1alpha1/domainmapping.go b/pkg/client/listers/serving/v1alpha1/domainmapping.go
index 888d3b11a..fe23c1be7 100644
--- a/pkg/client/listers/serving/v1alpha1/domainmapping.go
+++ b/pkg/client/listers/serving/v1alpha1/domainmapping.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/client/listers/serving/v1alpha1/expansion_generated.go b/pkg/client/listers/serving/v1alpha1/expansion_generated.go
index 7a75e5ce2..d34d35912 100644
--- a/pkg/client/listers/serving/v1alpha1/expansion_generated.go
+++ b/pkg/client/listers/serving/v1alpha1/expansion_generated.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/deployment/zz_generated.deepcopy.go b/pkg/deployment/zz_generated.deepcopy.go
index 7a8b446b3..afb6fd2a5 100644
--- a/pkg/deployment/zz_generated.deepcopy.go
+++ b/pkg/deployment/zz_generated.deepcopy.go
@@ -1,7 +1,7 @@
 // +build !ignore_autogenerated
 
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/gc/zz_generated.deepcopy.go b/pkg/gc/zz_generated.deepcopy.go
index 9a3151e12..fa92e497c 100644
--- a/pkg/gc/zz_generated.deepcopy.go
+++ b/pkg/gc/zz_generated.deepcopy.go
@@ -1,7 +1,7 @@
 // +build !ignore_autogenerated
 
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/reconciler/route/config/zz_generated.deepcopy.go b/pkg/reconciler/route/config/zz_generated.deepcopy.go
index 86b30c499..f22e205b1 100644
--- a/pkg/reconciler/route/config/zz_generated.deepcopy.go
+++ b/pkg/reconciler/route/config/zz_generated.deepcopy.go
@@ -1,7 +1,7 @@
 // +build !ignore_autogenerated
 
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.


Test patch:
diff --git a/pkg/apis/config/features_test.go b/pkg/apis/config/features_test.go
index fa5390622..8fb45cb58 100644
--- a/pkg/apis/config/features_test.go
+++ b/pkg/apis/config/features_test.go
@@ -305,6 +305,24 @@ func TestFeaturesConfiguration(t *testing.T) {
 		data: map[string]string{
 			"tag-header-based-routing": "Enabled",
 		},
+	}, {
+		name:    "kubernetes.podspec-volumes-emptyDir Disabled",
+		wantErr: false,
+		wantFeatures: defaultWith(&Features{
+			PodSpecVolumesEmptyDir: Disabled,
+		}),
+		data: map[string]string{
+			"kubernetes.podspec-volumes-emptydir": "Disabled",
+		},
+	}, {
+		name:    "kubernetes.podspec-volumes-emptyDir Enabled",
+		wantErr: false,
+		wantFeatures: defaultWith(&Features{
+			PodSpecVolumesEmptyDir: Enabled,
+		}),
+		data: map[string]string{
+			"kubernetes.podspec-volumes-emptydir": "Enabled",
+		},
 	}}
 
 	for _, tt := range configTests {
diff --git a/pkg/apis/serving/fieldmask_test.go b/pkg/apis/serving/fieldmask_test.go
index 5b36493e3..84891cdbf 100644
--- a/pkg/apis/serving/fieldmask_test.go
+++ b/pkg/apis/serving/fieldmask_test.go
@@ -34,7 +34,7 @@ func TestVolumeMask(t *testing.T) {
 	}
 	in := want
 
-	got := VolumeMask(in)
+	got := VolumeMask(context.Background(), in)
 
 	if &want == &got {
 		t.Error("Input and output share addresses. Want different addresses")
@@ -46,7 +46,7 @@ func TestVolumeMask(t *testing.T) {
 		t.Error("VolumeMask (-want, +got):", diff)
 	}
 
-	if got = VolumeMask(nil); got != nil {
+	if got = VolumeMask(context.Background(), nil); got != nil {
 		t.Errorf("VolumeMask(nil) = %v, want: nil", got)
 	}
 }
@@ -62,7 +62,7 @@ func TestVolumeSourceMask(t *testing.T) {
 		NFS:       &corev1.NFSVolumeSource{},
 	}
 
-	got := VolumeSourceMask(in)
+	got := VolumeSourceMask(context.Background(), in)
 
 	if &want == &got {
 		t.Error("Input and output share addresses. Want different addresses")
@@ -74,7 +74,7 @@ func TestVolumeSourceMask(t *testing.T) {
 		t.Error("VolumeSourceMask (-want, +got):", diff)
 	}
 
-	if got = VolumeSourceMask(nil); got != nil {
+	if got = VolumeSourceMask(context.Background(), nil); got != nil {
 		t.Errorf("VolumeSourceMask(nil) = %v, want: nil", got)
 	}
 }
diff --git a/pkg/apis/serving/k8s_validation_test.go b/pkg/apis/serving/k8s_validation_test.go
index 0986b71a9..ad396efd2 100644
--- a/pkg/apis/serving/k8s_validation_test.go
+++ b/pkg/apis/serving/k8s_validation_test.go
@@ -97,6 +97,13 @@ func withContainerSpecAddCapabilitiesEnabled() configOption {
 	}
 }
 
+func withPodSpecVolumesEmptyDirEnabled() configOption {
+	return func(cfg *config.Config) *config.Config {
+		cfg.Features.PodSpecVolumesEmptyDir = config.Enabled
+		return cfg
+	}
+}
+
 func TestPodSpecValidation(t *testing.T) {
 	tests := []struct {
 		name    string
@@ -1512,9 +1519,10 @@ func TestContainerValidation(t *testing.T) {
 
 func TestVolumeValidation(t *testing.T) {
 	tests := []struct {
-		name string
-		v    corev1.Volume
-		want *apis.FieldError
+		name    string
+		v       corev1.Volume
+		want    *apis.FieldError
+		cfgOpts []configOption
 	}{{
 		name: "just name",
 		v: corev1.Volume{
@@ -1546,11 +1554,26 @@ func TestVolumeValidation(t *testing.T) {
 		v: corev1.Volume{
 			Name: "foo",
 			VolumeSource: corev1.VolumeSource{
-				EmptyDir: &corev1.EmptyDirVolumeSource{},
+				EmptyDir: &corev1.EmptyDirVolumeSource{
+					Medium:    "Memory",
+					SizeLimit: resource.NewQuantity(400, "G"),
+				},
+			},
+		},
+		cfgOpts: []configOption{withPodSpecVolumesEmptyDirEnabled()},
+	}, {
+		name: "invalid emptyDir volume",
+		v: corev1.Volume{
+			Name: "foo",
+			VolumeSource: corev1.VolumeSource{
+				EmptyDir: &corev1.EmptyDirVolumeSource{
+					Medium:    "Memory",
+					SizeLimit: resource.NewQuantity(-1, "G"),
+				},
 			},
 		},
-		want: apis.ErrMissingOneOf("secret", "configMap", "projected").Also(
-			apis.ErrDisallowedFields("emptyDir")),
+		want:    apis.ErrInvalidValue(-1, "emptyDir.sizeLimit"),
+		cfgOpts: []configOption{withPodSpecVolumesEmptyDirEnabled()},
 	}, {
 		name: "no volume source",
 		v: corev1.Volume{
@@ -1767,7 +1790,15 @@ func TestVolumeValidation(t *testing.T) {
 
 	for _, test := range tests {
 		t.Run(test.name, func(t *testing.T) {
-			got := validateVolume(test.v)
+			ctx := context.Background()
+			if test.cfgOpts != nil {
+				cfg := config.FromContextOrDefaults(ctx)
+				for _, opt := range test.cfgOpts {
+					cfg = opt(cfg)
+				}
+				ctx = config.ToContext(ctx, cfg)
+			}
+			got := validateVolume(ctx, test.v)
 			if diff := cmp.Diff(test.want.Error(), got.Error()); diff != "" {
 				t.Errorf("validateVolume (-want, +got): \n%s", diff)
 			}
diff --git a/pkg/reconciler/route/resources/service_test.go b/pkg/reconciler/route/resources/service_test.go
index df4a5699e..ca7c5c2da 100644
--- a/pkg/reconciler/route/resources/service_test.go
+++ b/pkg/reconciler/route/resources/service_test.go
@@ -370,14 +370,15 @@ func testConfig() *config.Config {
 			TagTemplate:         network.DefaultTagTemplate,
 		},
 		Features: &apiConfig.Features{
-			MultiContainer:        apiConfig.Disabled,
-			PodSpecAffinity:       apiConfig.Disabled,
-			PodSpecFieldRef:       apiConfig.Disabled,
-			PodSpecDryRun:         apiConfig.Enabled,
-			PodSpecHostAliases:    apiConfig.Disabled,
-			PodSpecNodeSelector:   apiConfig.Disabled,
-			PodSpecTolerations:    apiConfig.Disabled,
-			TagHeaderBasedRouting: apiConfig.Disabled,
+			MultiContainer:         apiConfig.Disabled,
+			PodSpecAffinity:        apiConfig.Disabled,
+			PodSpecFieldRef:        apiConfig.Disabled,
+			PodSpecDryRun:          apiConfig.Enabled,
+			PodSpecHostAliases:     apiConfig.Disabled,
+			PodSpecNodeSelector:    apiConfig.Disabled,
+			PodSpecTolerations:     apiConfig.Disabled,
+			PodSpecVolumesEmptyDir: apiConfig.Disabled,
+			TagHeaderBasedRouting:  apiConfig.Disabled,
 		},
 	}
 }
diff --git a/test/test_images/grpc-ping/proto/ping.pb.go b/test/test_images/grpc-ping/proto/ping.pb.go
index 4982efba6..4c0c43374 100644
--- a/test/test_images/grpc-ping/proto/ping.pb.go
+++ b/test/test_images/grpc-ping/proto/ping.pb.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors
+Copyright 2021 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.