Repository: openshift-knative/serverless-operator
Pull request #3689: Bump serving to 1.17
Author: login: creydr
Labels: name: approved
name: lgtm
Created: 2025-05-14T14:11:53Z | Merged: 2025-05-19T12:32:29Z

Bumping serving and friends to 1.17


Diff:
diff --git a/hack/lib/images.bash b/hack/lib/images.bash
index 39359ad948..522facb991 100755
--- a/hack/lib/images.bash
+++ b/hack/lib/images.bash
@@ -123,6 +123,13 @@ function knative_serving_images() {
   export KNATIVE_SERVING_STORAGE_VERSION_MIGRATION=${KNATIVE_SERVING_STORAGE_VERSION_MIGRATION:-$(latest_registry_redhat_io_image_sha "${serving}-storage-version-migration:${tag}")}
 
   export KNATIVE_SERVING_IMAGE_PREFIX="${serving}"
+
+  # Test images
+  local serving_test="${serving}-test"
+
+  export KNATIVE_SERVING_TEST_HTTPPROXY=${KNATIVE_SERVING_TEST_HTTPPROXY:-$(latest_konflux_image_sha "${serving_test}-httpproxy:${tag}")}
+  export KNATIVE_SERVING_TEST_AUTOSCALE=${KNATIVE_SERVING_TEST_AUTOSCALE:-$(latest_konflux_image_sha "${serving_test}-autoscale:${tag}")}
+  export KNATIVE_SERVING_TEST_HELLOWORLD=${KNATIVE_SERVING_TEST_HELLOWORLD:-$(latest_konflux_image_sha "${serving_test}-helloworld:${tag}")}
 }
 
 function knative_eventing_images_release() {
diff --git a/hack/lib/vars.bash b/hack/lib/vars.bash
index d015fb471e..fe9930c091 100644
--- a/hack/lib/vars.bash
+++ b/hack/lib/vars.bash
@@ -10,6 +10,7 @@ fi
 
 # shellcheck disable=SC1091,SC1090
 source "$(dirname "${BASH_SOURCE[0]}")/../../vendor/knative.dev/hack/e2e-tests.sh"
+source "$(dirname "${BASH_SOURCE[0]}")/images.bash"
 
 export STRIMZI_VERSION=0.45.0
 
@@ -90,15 +91,20 @@ export ENABLE_KEDA="${ENABLE_KEDA:-false}"
 export SAMPLE_RATE="${SAMPLE_RATE:-"1.0"}"
 export ZIPKIN_DEDICATED_NODE="${ZIPKIN_DEDICATED_NODE:-false}"
 export QUAY_REGISTRY=quay.io/openshift-knative
+
+default_knative_serving_images
+default_knative_eventing_images
+
 DEFAULT_IMAGE_TEMPLATE=$(
   cat <<-EOF
 {{- with .Name }}
-{{- if eq . "httpproxy" }}${QUAY_REGISTRY}/serving/{{.}}:${KNATIVE_SERVING_VERSION#knative-}
-{{- else if eq . "autoscale" }}${QUAY_REGISTRY}/serving/{{.}}:${KNATIVE_SERVING_VERSION#knative-}
-{{- else if eq . "recordevents" }}${QUAY_REGISTRY}/eventing/{{.}}:${KNATIVE_EVENTING_VERSION#knative-}
-{{- else if eq . "wathola-forwarder" }}${QUAY_REGISTRY}/eventing/{{.}}:${KNATIVE_EVENTING_VERSION#knative-}
+{{- if eq . "httpproxy" }}${KNATIVE_SERVING_TEST_HTTPPROXY}
+{{- else if eq . "autoscale" }}${KNATIVE_SERVING_TEST_AUTOSCALE}
+{{- else if eq . "helloworld-go" }}${KNATIVE_SERVING_TEST_HELLOWORLD}
+{{- else if eq . "recordevents" }}${KNATIVE_EVENTING_TEST_RECORDEVENTS}
+{{- else if eq . "wathola-forwarder" }}${KNATIVE_EVENTING_TEST_WATHOLA_FORWARDER}
 {{- else if eq . "kafka" }}quay.io/strimzi/kafka:latest-kafka-3.4.0
-{{- else }}${QUAY_REGISTRY}/{{.}}:multiarch{{end -}}
+{{- else }}${KNATIVE_SERVING_IMAGE_PREFIX}-test-{{.}}:latest{{end -}}
 {{end -}}
 EOF
 )
diff --git a/knative-operator/deploy/resources/knativekafka/controller/eventing-kafka-post-install.yaml b/knative-operator/deploy/resources/knativekafka/controller/eventing-kafka-post-install.yaml
index f0c0c2df20..de8dccd6a1 100644
--- a/knative-operator/deploy/resources/knativekafka/controller/eventing-kafka-post-install.yaml
+++ b/knative-operator/deploy/resources/knativekafka/controller/eventing-kafka-post-install.yaml
@@ -21,7 +21,7 @@ metadata:
   name: knative-kafka-controller-post-install
   labels:
     app.kubernetes.io/version: v1.17
-rules: []
+rules: null
 ---
 ---
 
diff --git a/olm-catalog/serverless-operator-index/Dockerfile b/olm-catalog/serverless-operator-index/Dockerfile
index b17a8d86d5..a976466c2d 100644
--- a/olm-catalog/serverless-operator-index/Dockerfile
+++ b/olm-catalog/serverless-operator-index/Dockerfile
@@ -11,7 +11,7 @@ RUN /bin/opm init serverless-operator --default-channel=stable --output yaml >>
 RUN /bin/opm render --skip-tls-verify -o yaml \
 registry.ci.openshift.org/knative/release-1.35.0:serverless-bundle \
 registry.ci.openshift.org/knative/release-1.36.0:serverless-bundle \
-      quay.io/redhat-user-workloads/ocp-serverless-tenant/serverless-operator-137/serverless-bundle@sha256:2259f52839337c88f7876b0ff8a20415ef03d34efeefacfef5eb67f1b8e2177a >> /configs/index.yaml
+      quay.io/redhat-user-workloads/ocp-serverless-tenant/serverless-operator-137/serverless-bundle@sha256:4e14e9207fa6b0203dc996af590a72766022f997001cf6b8adbecb0528156fce >> /configs/index.yaml
 
 # The base image is expected to contain
 # /bin/opm (with a serve subcommand) and /bin/grpc_health_probe
diff --git a/olm-catalog/serverless-operator/manifests/serverless-operator.clusterserviceversion.yaml b/olm-catalog/serverless-operator/manifests/serverless-operator.clusterserviceversion.yaml
index 2b81da2d1c..c3f8f8b438 100644
--- a/olm-catalog/serverless-operator/manifests/serverless-operator.clusterserviceversion.yaml
+++ b/olm-catalog/serverless-operator/manifests/serverless-operator.clusterserviceversion.yaml
@@ -889,53 +889,53 @@ spec:
                       - name: KUBERNETES_MIN_VERSION
                         value: "v1.0.0"
                       - name: "IMAGE_queue-proxy"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-queue-rhel8@sha256:94cecd0fc33a24c9750ad8db015b2c993d721c7ea4f5102fc1c265a2d51bc9aa"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-queue-rhel8@sha256:3d038db4b6f96782176d7f45acf149fe9c7491bdb0716d9ee7b0b995e060cf39"
                       - name: "IMAGE_activator"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-activator-rhel8@sha256:7600428918b4c99efd7b93b8ad86129a969ee8ce57a688a269d7445335a6aca9"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-activator-rhel8@sha256:1afac13c8aee90937705344b0ce8bd9eb10c5dd56bb3e098c920ecddc524dd16"
                       - name: "IMAGE_autoscaler"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-rhel8@sha256:d77bd610b17819b6e8b1dc4ade2de004f94c128175ebd6f953d1e9cfc97c56ee"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-rhel8@sha256:844db060e23dbee9c14365ec82fbe2d54d52b4df3763c1c1f58e5906e5a42d37"
                       - name: "IMAGE_autoscaler-hpa"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-hpa-rhel8@sha256:6d2a7cbd0d662b9e4ddf9f6f21c063bf3cab7d4b88418b5e6a00ee33de2252ff"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-hpa-rhel8@sha256:bbb1120a1d8d663217207a3d50bc7f398ea67e76d1001e25cf45a0ea57558ab9"
                       - name: "IMAGE_controller__controller"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-controller-rhel8@sha256:018015800d25f2cef7374c7360102188e5cb34e2815218965158a851657058e2"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-controller-rhel8@sha256:1a5528a41bdd4dd60974c403c43183e2fff9748d0f70e36afbeed10d05f3d665"
                       - name: "IMAGE_webhook__webhook"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-webhook-rhel8@sha256:83358df3a547d95e0937fdbaa5182ebee08a9e25f1a19ea1a7e0cfd5655a1a36"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-webhook-rhel8@sha256:ac8857a53a9157143833fc37b1717b308a70e7909b6b2a4299f8fd19fb926a81"
                       - name: "IMAGE_storage-version-migration-serving-__migrate"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-storage-version-migration-rhel8@sha256:1dd7639170b26472ebf63fab0bf360437b60794360283ae0443cc1eb4ee94585"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-storage-version-migration-rhel8@sha256:a9701a5229398803f2ef8d0d192736070e9fbcb58414d3ee950f6a21ae8e4fd2"
                       - name: "IMAGE_kourier-gateway"
                         value: "registry.redhat.io/openshift-service-mesh/proxyv2-rhel8@sha256:8ee57a44b1fc799fd8565eb339955773bd9beedcbf46f68628ee0bd4abf26515"
                       - name: "IMAGE_net-kourier-controller__controller"
-                        value: "registry.redhat.io/openshift-serverless-1/net-kourier-kourier-rhel8@sha256:18ceb5e88a8c90398a49c3e0fefbfe02cea21bd12dca6e353e0f1b98959b156e"
+                        value: "registry.redhat.io/openshift-serverless-1/net-kourier-kourier-rhel8@sha256:c4c76830c49d245e1afeaa52bd7dd468a5b6c63d4a5d23fa02e6c9ff76d99153"
                       - name: "IMAGE_net-istio-controller__controller"
-                        value: "registry.redhat.io/openshift-serverless-1/net-istio-controller-rhel8@sha256:bca03a7dfceb1ca67e5a28f53fb75b56a2d4a2bcad9179a491f780f95c3ccd53"
+                        value: "registry.redhat.io/openshift-serverless-1/net-istio-controller-rhel8@sha256:300b7e5b31e551eb68657edfd8f3d39caa48cc6d0de1492358f795b595f1f367"
                       - name: "IMAGE_net-istio-webhook__webhook"
-                        value: "registry.redhat.io/openshift-serverless-1/net-istio-webhook-rhel8@sha256:1a470b154854c4c46ac869ef2cbbe376bd96ea6a9af20d610344a2ed6cdb4670"
+                        value: "registry.redhat.io/openshift-serverless-1/net-istio-webhook-rhel8@sha256:39f1210235a6fe22e045c0ffdf3cab11af7f53277acf4ba2b75a19518f9901c3"
                       - name: "IMAGE_eventing-controller__eventing-controller"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-controller-rhel8@sha256:0762b855efef1d819c40ebd0f9ae6fe9791e96e65ab6f9247b45971e0958fa3e"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-controller-rhel8@sha256:6be0939f9521c7ac17183d361503034eef29e253e10d7c3a66978394b4eb147f"
                       - name: "IMAGE_eventing-istio-controller__eventing-istio-controller"
                         value: "registry.redhat.io/openshift-serverless-1/kn-eventing-istio-controller-rhel8@sha256:5683ae2c6fbf35b9927ffa2e77b31389a27ca9c7f4a32a1c1c8ca9dba9d2a495"
                       - name: "IMAGE_eventing-webhook__eventing-webhook"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-webhook-rhel8@sha256:6601900a32656fd17606bf3588ab35990b9c0917169c84604aa4db1237488327"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-webhook-rhel8@sha256:4eef9e05af46096c303c354e05d940edf120fc52553da2d76453b5dad3ae2e31"
                       - name: "IMAGE_storage-version-migration-eventing-__migrate"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-migrate-rhel8@sha256:1eddfca2f917ec95fc8cb384c601e6b649d5cd730083174be2ddfda0e7855faf"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-migrate-rhel8@sha256:41c3e327560778968e187075b5adbf6b90fc64003c6f3bf69ff80bf0def8356e"
                       - name: "IMAGE_mt-broker-controller__mt-broker-controller"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtchannel-broker-rhel8@sha256:38fc225b5d68553872fd34d1a37581d860925ff95fcb218d5d59ba23bac07bd9"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtchannel-broker-rhel8@sha256:44e1af62ba0639da16aa7d0e667b189c4ffa49b2d6f8a1a31e96ae4ffb939dfb"
                       - name: "IMAGE_mt-broker-filter__filter"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-filter-rhel8@sha256:08931746e81e2f7088095c756bbc46bf73bd9820931dc762dbe9e27889311298"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-filter-rhel8@sha256:747d1b4d5e5615b3fd42cffb14a844f827bd7d87e4397bf2d521f0ba424eda34"
                       - name: "IMAGE_mt-broker-ingress__ingress"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-ingress-rhel8@sha256:fc852ef2694f37af488e007564696f38ad0cca26bf87fcc690d8498c5015a5f5"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-ingress-rhel8@sha256:93c507b7ebfa8bcde90a87b310421488b7db93125fc63a40a729a787a9e3cf27"
                       - name: "IMAGE_imc-controller__controller"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-controller-rhel8@sha256:cf67a699d7a9afbcd23019e431df722fa55c2548429979062f0ee2a7bd50657b"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-controller-rhel8@sha256:294c5f169c5d4f1d3e4fa675625a2588760cb507181170a70afd5f5d54ec0f95"
                       - name: "IMAGE_imc-dispatcher__dispatcher"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:e9fabe0334acbe65925d2c1320a52ae004ba1eaa700262350cbec4d46821a0b0"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:4e6e0d6281a3336bf7fd0ae08bc10e7362dff4de4f2e07cc81cb3c28ccbb4707"
                       - name: "IMAGE_pingsource-mt-adapter__dispatcher"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtping-rhel8@sha256:fd6f84758bc36083654e6eacd3931ba92b6190b03fc9f2b3806aa8b4c4fd8724"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtping-rhel8@sha256:0f6b70fb8b0f8f9deffec53ba5175f32c21410ad80795ed30ef1959730faf1c8"
                       - name: "IMAGE_job-sink__job-sink"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-jobsink-rhel8@sha256:8cb8f04e79bcf6a582fe67bbabfd599a465e3e8677bfae245fbb0d7ff3953926"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-jobsink-rhel8@sha256:60c825bd0515b1af254e5e5b13b73fa94078ae6595dc2642afa2a9aefda54137"
                       - name: "IMAGE_APISERVER_RA_IMAGE"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-apiserver-receive-adapter-rhel8@sha256:8a2a835772894925b15d44d36a7d2c1f116dc9737c3e69b6403e79e4b12c3020"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-apiserver-receive-adapter-rhel8@sha256:daf4df273538e6aae2dfcfc91dc246ffba7f7bf51ef88656c7fb4cccd3784017"
                       - name: "IMAGE_DISPATCHER_IMAGE"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:e9fabe0334acbe65925d2c1320a52ae004ba1eaa700262350cbec4d46821a0b0"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:4e6e0d6281a3336bf7fd0ae08bc10e7362dff4de4f2e07cc81cb3c28ccbb4707"
                       - name: "IMAGE_EVENT_TRANSFORM_JSONATA_IMAGE"
                         value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-transform-jsonata-rhel8@sha256:17f2ad5b91e6086a213cb6e050ffd32c28a80973f8e3b7c4fceaa56f70781da3"
                       - name: "IMAGE_INTEGRATION_SOURCE_TIMER_IMAGE"
@@ -975,7 +975,7 @@ spec:
                       - name: "CURRENT_VERSION"
                         value: "1.37.0"
                       - name: "KNATIVE_SERVING_VERSION"
-                        value: "1.16"
+                        value: "1.17"
                       - name: "KNATIVE_EVENTING_VERSION"
                         value: "1.17"
                       - name: "KNATIVE_EVENTING_KAFKA_BROKER_VERSION"
@@ -1079,53 +1079,53 @@ spec:
                       - name: KUBERNETES_MIN_VERSION
                         value: "v1.0.0"
                       - name: "IMAGE_queue-proxy"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-queue-rhel8@sha256:94cecd0fc33a24c9750ad8db015b2c993d721c7ea4f5102fc1c265a2d51bc9aa"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-queue-rhel8@sha256:3d038db4b6f96782176d7f45acf149fe9c7491bdb0716d9ee7b0b995e060cf39"
                       - name: "IMAGE_activator"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-activator-rhel8@sha256:7600428918b4c99efd7b93b8ad86129a969ee8ce57a688a269d7445335a6aca9"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-activator-rhel8@sha256:1afac13c8aee90937705344b0ce8bd9eb10c5dd56bb3e098c920ecddc524dd16"
                       - name: "IMAGE_autoscaler"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-rhel8@sha256:d77bd610b17819b6e8b1dc4ade2de004f94c128175ebd6f953d1e9cfc97c56ee"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-rhel8@sha256:844db060e23dbee9c14365ec82fbe2d54d52b4df3763c1c1f58e5906e5a42d37"
                       - name: "IMAGE_autoscaler-hpa"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-hpa-rhel8@sha256:6d2a7cbd0d662b9e4ddf9f6f21c063bf3cab7d4b88418b5e6a00ee33de2252ff"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-hpa-rhel8@sha256:bbb1120a1d8d663217207a3d50bc7f398ea67e76d1001e25cf45a0ea57558ab9"
                       - name: "IMAGE_controller__controller"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-controller-rhel8@sha256:018015800d25f2cef7374c7360102188e5cb34e2815218965158a851657058e2"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-controller-rhel8@sha256:1a5528a41bdd4dd60974c403c43183e2fff9748d0f70e36afbeed10d05f3d665"
                       - name: "IMAGE_webhook__webhook"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-webhook-rhel8@sha256:83358df3a547d95e0937fdbaa5182ebee08a9e25f1a19ea1a7e0cfd5655a1a36"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-webhook-rhel8@sha256:ac8857a53a9157143833fc37b1717b308a70e7909b6b2a4299f8fd19fb926a81"
                       - name: "IMAGE_storage-version-migration-serving-__migrate"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-storage-version-migration-rhel8@sha256:1dd7639170b26472ebf63fab0bf360437b60794360283ae0443cc1eb4ee94585"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-serving-storage-version-migration-rhel8@sha256:a9701a5229398803f2ef8d0d192736070e9fbcb58414d3ee950f6a21ae8e4fd2"
                       - name: "IMAGE_kourier-gateway"
                         value: "registry.redhat.io/openshift-service-mesh/proxyv2-rhel8@sha256:8ee57a44b1fc799fd8565eb339955773bd9beedcbf46f68628ee0bd4abf26515"
                       - name: "IMAGE_net-kourier-controller__controller"
-                        value: "registry.redhat.io/openshift-serverless-1/net-kourier-kourier-rhel8@sha256:18ceb5e88a8c90398a49c3e0fefbfe02cea21bd12dca6e353e0f1b98959b156e"
+                        value: "registry.redhat.io/openshift-serverless-1/net-kourier-kourier-rhel8@sha256:c4c76830c49d245e1afeaa52bd7dd468a5b6c63d4a5d23fa02e6c9ff76d99153"
                       - name: "IMAGE_net-istio-controller__controller"
-                        value: "registry.redhat.io/openshift-serverless-1/net-istio-controller-rhel8@sha256:bca03a7dfceb1ca67e5a28f53fb75b56a2d4a2bcad9179a491f780f95c3ccd53"
+                        value: "registry.redhat.io/openshift-serverless-1/net-istio-controller-rhel8@sha256:300b7e5b31e551eb68657edfd8f3d39caa48cc6d0de1492358f795b595f1f367"
                       - name: "IMAGE_net-istio-webhook__webhook"
-                        value: "registry.redhat.io/openshift-serverless-1/net-istio-webhook-rhel8@sha256:1a470b154854c4c46ac869ef2cbbe376bd96ea6a9af20d610344a2ed6cdb4670"
+                        value: "registry.redhat.io/openshift-serverless-1/net-istio-webhook-rhel8@sha256:39f1210235a6fe22e045c0ffdf3cab11af7f53277acf4ba2b75a19518f9901c3"
                       - name: "IMAGE_eventing-controller__eventing-controller"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-controller-rhel8@sha256:0762b855efef1d819c40ebd0f9ae6fe9791e96e65ab6f9247b45971e0958fa3e"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-controller-rhel8@sha256:6be0939f9521c7ac17183d361503034eef29e253e10d7c3a66978394b4eb147f"
                       - name: "IMAGE_eventing-istio-controller__eventing-istio-controller"
                         value: "registry.redhat.io/openshift-serverless-1/kn-eventing-istio-controller-rhel8@sha256:5683ae2c6fbf35b9927ffa2e77b31389a27ca9c7f4a32a1c1c8ca9dba9d2a495"
                       - name: "IMAGE_eventing-webhook__eventing-webhook"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-webhook-rhel8@sha256:6601900a32656fd17606bf3588ab35990b9c0917169c84604aa4db1237488327"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-webhook-rhel8@sha256:4eef9e05af46096c303c354e05d940edf120fc52553da2d76453b5dad3ae2e31"
                       - name: "IMAGE_storage-version-migration-eventing-__migrate"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-migrate-rhel8@sha256:1eddfca2f917ec95fc8cb384c601e6b649d5cd730083174be2ddfda0e7855faf"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-migrate-rhel8@sha256:41c3e327560778968e187075b5adbf6b90fc64003c6f3bf69ff80bf0def8356e"
                       - name: "IMAGE_mt-broker-controller__mt-broker-controller"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtchannel-broker-rhel8@sha256:38fc225b5d68553872fd34d1a37581d860925ff95fcb218d5d59ba23bac07bd9"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtchannel-broker-rhel8@sha256:44e1af62ba0639da16aa7d0e667b189c4ffa49b2d6f8a1a31e96ae4ffb939dfb"
                       - name: "IMAGE_mt-broker-filter__filter"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-filter-rhel8@sha256:08931746e81e2f7088095c756bbc46bf73bd9820931dc762dbe9e27889311298"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-filter-rhel8@sha256:747d1b4d5e5615b3fd42cffb14a844f827bd7d87e4397bf2d521f0ba424eda34"
                       - name: "IMAGE_mt-broker-ingress__ingress"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-ingress-rhel8@sha256:fc852ef2694f37af488e007564696f38ad0cca26bf87fcc690d8498c5015a5f5"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-ingress-rhel8@sha256:93c507b7ebfa8bcde90a87b310421488b7db93125fc63a40a729a787a9e3cf27"
                       - name: "IMAGE_imc-controller__controller"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-controller-rhel8@sha256:cf67a699d7a9afbcd23019e431df722fa55c2548429979062f0ee2a7bd50657b"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-controller-rhel8@sha256:294c5f169c5d4f1d3e4fa675625a2588760cb507181170a70afd5f5d54ec0f95"
                       - name: "IMAGE_imc-dispatcher__dispatcher"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:e9fabe0334acbe65925d2c1320a52ae004ba1eaa700262350cbec4d46821a0b0"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:4e6e0d6281a3336bf7fd0ae08bc10e7362dff4de4f2e07cc81cb3c28ccbb4707"
                       - name: "IMAGE_pingsource-mt-adapter__dispatcher"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtping-rhel8@sha256:fd6f84758bc36083654e6eacd3931ba92b6190b03fc9f2b3806aa8b4c4fd8724"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtping-rhel8@sha256:0f6b70fb8b0f8f9deffec53ba5175f32c21410ad80795ed30ef1959730faf1c8"
                       - name: "IMAGE_job-sink__job-sink"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-jobsink-rhel8@sha256:8cb8f04e79bcf6a582fe67bbabfd599a465e3e8677bfae245fbb0d7ff3953926"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-jobsink-rhel8@sha256:60c825bd0515b1af254e5e5b13b73fa94078ae6595dc2642afa2a9aefda54137"
                       - name: "IMAGE_APISERVER_RA_IMAGE"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-apiserver-receive-adapter-rhel8@sha256:8a2a835772894925b15d44d36a7d2c1f116dc9737c3e69b6403e79e4b12c3020"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-apiserver-receive-adapter-rhel8@sha256:daf4df273538e6aae2dfcfc91dc246ffba7f7bf51ef88656c7fb4cccd3784017"
                       - name: "IMAGE_DISPATCHER_IMAGE"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:e9fabe0334acbe65925d2c1320a52ae004ba1eaa700262350cbec4d46821a0b0"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:4e6e0d6281a3336bf7fd0ae08bc10e7362dff4de4f2e07cc81cb3c28ccbb4707"
                       - name: "IMAGE_EVENT_TRANSFORM_JSONATA_IMAGE"
                         value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-transform-jsonata-rhel8@sha256:17f2ad5b91e6086a213cb6e050ffd32c28a80973f8e3b7c4fceaa56f70781da3"
                       - name: "IMAGE_INTEGRATION_SOURCE_TIMER_IMAGE"
@@ -1181,11 +1181,11 @@ spec:
                       - name: "KAFKA_IMAGE_kafka-controller-post-install__post-install"
                         value: "registry.redhat.io/openshift-serverless-1/kn-ekb-post-install-rhel8@sha256:a759df52a8b931a2a6c3cee1428b6c70890abe6cf9c98e459e412b753ac8f359"
                       - name: "KAFKA_IMAGE_knative-kafka-storage-version-migrator__migrate"
-                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-migrate-rhel8@sha256:1eddfca2f917ec95fc8cb384c601e6b649d5cd730083174be2ddfda0e7855faf"
+                        value: "registry.redhat.io/openshift-serverless-1/kn-eventing-migrate-rhel8@sha256:41c3e327560778968e187075b5adbf6b90fc64003c6f3bf69ff80bf0def8356e"
                       - name: "CURRENT_VERSION"
                         value: "1.37.0"
                       - name: "KNATIVE_SERVING_VERSION"
-                        value: "1.16"
+                        value: "1.17"
                       - name: "KNATIVE_EVENTING_VERSION"
                         value: "1.17"
                       - name: "KNATIVE_EVENTING_KAFKA_BROKER_VERSION"
@@ -1372,53 +1372,53 @@ spec:
     - name: "knative-openshift-ingress"
       image: "registry.redhat.io/openshift-serverless-1/serverless-ingress-rhel8@sha256:442e7e44a1cfa64ee20be4ee84ace2555782d07f5d2d0a362a7326b2a0d1d9a2"
     - name: "IMAGE_queue-proxy"
-      image: "registry.redhat.io/openshift-serverless-1/kn-serving-queue-rhel8@sha256:94cecd0fc33a24c9750ad8db015b2c993d721c7ea4f5102fc1c265a2d51bc9aa"
+      image: "registry.redhat.io/openshift-serverless-1/kn-serving-queue-rhel8@sha256:3d038db4b6f96782176d7f45acf149fe9c7491bdb0716d9ee7b0b995e060cf39"
     - name: "IMAGE_activator"
-      image: "registry.redhat.io/openshift-serverless-1/kn-serving-activator-rhel8@sha256:7600428918b4c99efd7b93b8ad86129a969ee8ce57a688a269d7445335a6aca9"
+      image: "registry.redhat.io/openshift-serverless-1/kn-serving-activator-rhel8@sha256:1afac13c8aee90937705344b0ce8bd9eb10c5dd56bb3e098c920ecddc524dd16"
     - name: "IMAGE_autoscaler"
-      image: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-rhel8@sha256:d77bd610b17819b6e8b1dc4ade2de004f94c128175ebd6f953d1e9cfc97c56ee"
+      image: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-rhel8@sha256:844db060e23dbee9c14365ec82fbe2d54d52b4df3763c1c1f58e5906e5a42d37"
     - name: "IMAGE_autoscaler-hpa"
-      image: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-hpa-rhel8@sha256:6d2a7cbd0d662b9e4ddf9f6f21c063bf3cab7d4b88418b5e6a00ee33de2252ff"
+      image: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-hpa-rhel8@sha256:bbb1120a1d8d663217207a3d50bc7f398ea67e76d1001e25cf45a0ea57558ab9"
     - name: "IMAGE_controller__controller"
-      image: "registry.redhat.io/openshift-serverless-1/kn-serving-controller-rhel8@sha256:018015800d25f2cef7374c7360102188e5cb34e2815218965158a851657058e2"
+      image: "registry.redhat.io/openshift-serverless-1/kn-serving-controller-rhel8@sha256:1a5528a41bdd4dd60974c403c43183e2fff9748d0f70e36afbeed10d05f3d665"
     - name: "IMAGE_webhook__webhook"
-      image: "registry.redhat.io/openshift-serverless-1/kn-serving-webhook-rhel8@sha256:83358df3a547d95e0937fdbaa5182ebee08a9e25f1a19ea1a7e0cfd5655a1a36"
+      image: "registry.redhat.io/openshift-serverless-1/kn-serving-webhook-rhel8@sha256:ac8857a53a9157143833fc37b1717b308a70e7909b6b2a4299f8fd19fb926a81"
     - name: "IMAGE_storage-version-migration-serving-__migrate"
-      image: "registry.redhat.io/openshift-serverless-1/kn-serving-storage-version-migration-rhel8@sha256:1dd7639170b26472ebf63fab0bf360437b60794360283ae0443cc1eb4ee94585"
+      image: "registry.redhat.io/openshift-serverless-1/kn-serving-storage-version-migration-rhel8@sha256:a9701a5229398803f2ef8d0d192736070e9fbcb58414d3ee950f6a21ae8e4fd2"
     - name: "IMAGE_kourier-gateway"
       image: "registry.redhat.io/openshift-service-mesh/proxyv2-rhel8@sha256:8ee57a44b1fc799fd8565eb339955773bd9beedcbf46f68628ee0bd4abf26515"
     - name: "IMAGE_net-kourier-controller__controller"
-      image: "registry.redhat.io/openshift-serverless-1/net-kourier-kourier-rhel8@sha256:18ceb5e88a8c90398a49c3e0fefbfe02cea21bd12dca6e353e0f1b98959b156e"
+      image: "registry.redhat.io/openshift-serverless-1/net-kourier-kourier-rhel8@sha256:c4c76830c49d245e1afeaa52bd7dd468a5b6c63d4a5d23fa02e6c9ff76d99153"
     - name: "IMAGE_net-istio-controller__controller"
-      image: "registry.redhat.io/openshift-serverless-1/net-istio-controller-rhel8@sha256:bca03a7dfceb1ca67e5a28f53fb75b56a2d4a2bcad9179a491f780f95c3ccd53"
+      image: "registry.redhat.io/openshift-serverless-1/net-istio-controller-rhel8@sha256:300b7e5b31e551eb68657edfd8f3d39caa48cc6d0de1492358f795b595f1f367"
     - name: "IMAGE_net-istio-webhook__webhook"
-      image: "registry.redhat.io/openshift-serverless-1/net-istio-webhook-rhel8@sha256:1a470b154854c4c46ac869ef2cbbe376bd96ea6a9af20d610344a2ed6cdb4670"
+      image: "registry.redhat.io/openshift-serverless-1/net-istio-webhook-rhel8@sha256:39f1210235a6fe22e045c0ffdf3cab11af7f53277acf4ba2b75a19518f9901c3"
     - name: "IMAGE_eventing-controller__eventing-controller"
-      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-controller-rhel8@sha256:0762b855efef1d819c40ebd0f9ae6fe9791e96e65ab6f9247b45971e0958fa3e"
+      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-controller-rhel8@sha256:6be0939f9521c7ac17183d361503034eef29e253e10d7c3a66978394b4eb147f"
     - name: "IMAGE_eventing-istio-controller__eventing-istio-controller"
       image: "registry.redhat.io/openshift-serverless-1/kn-eventing-istio-controller-rhel8@sha256:5683ae2c6fbf35b9927ffa2e77b31389a27ca9c7f4a32a1c1c8ca9dba9d2a495"
     - name: "IMAGE_eventing-webhook__eventing-webhook"
-      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-webhook-rhel8@sha256:6601900a32656fd17606bf3588ab35990b9c0917169c84604aa4db1237488327"
+      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-webhook-rhel8@sha256:4eef9e05af46096c303c354e05d940edf120fc52553da2d76453b5dad3ae2e31"
     - name: "IMAGE_storage-version-migration-eventing-__migrate"
-      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-migrate-rhel8@sha256:1eddfca2f917ec95fc8cb384c601e6b649d5cd730083174be2ddfda0e7855faf"
+      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-migrate-rhel8@sha256:41c3e327560778968e187075b5adbf6b90fc64003c6f3bf69ff80bf0def8356e"
     - name: "IMAGE_mt-broker-controller__mt-broker-controller"
-      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtchannel-broker-rhel8@sha256:38fc225b5d68553872fd34d1a37581d860925ff95fcb218d5d59ba23bac07bd9"
+      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtchannel-broker-rhel8@sha256:44e1af62ba0639da16aa7d0e667b189c4ffa49b2d6f8a1a31e96ae4ffb939dfb"
     - name: "IMAGE_mt-broker-filter__filter"
-      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-filter-rhel8@sha256:08931746e81e2f7088095c756bbc46bf73bd9820931dc762dbe9e27889311298"
+      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-filter-rhel8@sha256:747d1b4d5e5615b3fd42cffb14a844f827bd7d87e4397bf2d521f0ba424eda34"
     - name: "IMAGE_mt-broker-ingress__ingress"
-      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-ingress-rhel8@sha256:fc852ef2694f37af488e007564696f38ad0cca26bf87fcc690d8498c5015a5f5"
+      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-ingress-rhel8@sha256:93c507b7ebfa8bcde90a87b310421488b7db93125fc63a40a729a787a9e3cf27"
     - name: "IMAGE_imc-controller__controller"
-      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-controller-rhel8@sha256:cf67a699d7a9afbcd23019e431df722fa55c2548429979062f0ee2a7bd50657b"
+      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-controller-rhel8@sha256:294c5f169c5d4f1d3e4fa675625a2588760cb507181170a70afd5f5d54ec0f95"
     - name: "IMAGE_imc-dispatcher__dispatcher"
-      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:e9fabe0334acbe65925d2c1320a52ae004ba1eaa700262350cbec4d46821a0b0"
+      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:4e6e0d6281a3336bf7fd0ae08bc10e7362dff4de4f2e07cc81cb3c28ccbb4707"
     - name: "IMAGE_pingsource-mt-adapter__dispatcher"
-      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtping-rhel8@sha256:fd6f84758bc36083654e6eacd3931ba92b6190b03fc9f2b3806aa8b4c4fd8724"
+      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtping-rhel8@sha256:0f6b70fb8b0f8f9deffec53ba5175f32c21410ad80795ed30ef1959730faf1c8"
     - name: "IMAGE_job-sink__job-sink"
-      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-jobsink-rhel8@sha256:8cb8f04e79bcf6a582fe67bbabfd599a465e3e8677bfae245fbb0d7ff3953926"
+      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-jobsink-rhel8@sha256:60c825bd0515b1af254e5e5b13b73fa94078ae6595dc2642afa2a9aefda54137"
     - name: "IMAGE_APISERVER_RA_IMAGE"
-      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-apiserver-receive-adapter-rhel8@sha256:8a2a835772894925b15d44d36a7d2c1f116dc9737c3e69b6403e79e4b12c3020"
+      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-apiserver-receive-adapter-rhel8@sha256:daf4df273538e6aae2dfcfc91dc246ffba7f7bf51ef88656c7fb4cccd3784017"
     - name: "IMAGE_DISPATCHER_IMAGE"
-      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:e9fabe0334acbe65925d2c1320a52ae004ba1eaa700262350cbec4d46821a0b0"
+      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:4e6e0d6281a3336bf7fd0ae08bc10e7362dff4de4f2e07cc81cb3c28ccbb4707"
     - name: "IMAGE_EVENT_TRANSFORM_JSONATA_IMAGE"
       image: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-transform-jsonata-rhel8@sha256:17f2ad5b91e6086a213cb6e050ffd32c28a80973f8e3b7c4fceaa56f70781da3"
     - name: "IMAGE_INTEGRATION_SOURCE_TIMER_IMAGE"
@@ -1474,7 +1474,7 @@ spec:
     - name: "KAFKA_IMAGE_kafka-controller-post-install__post-install"
       image: "registry.redhat.io/openshift-serverless-1/kn-ekb-post-install-rhel8@sha256:a759df52a8b931a2a6c3cee1428b6c70890abe6cf9c98e459e412b753ac8f359"
     - name: "KAFKA_IMAGE_knative-kafka-storage-version-migrator__migrate"
-      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-migrate-rhel8@sha256:1eddfca2f917ec95fc8cb384c601e6b649d5cd730083174be2ddfda0e7855faf"
+      image: "registry.redhat.io/openshift-serverless-1/kn-eventing-migrate-rhel8@sha256:41c3e327560778968e187075b5adbf6b90fc64003c6f3bf69ff80bf0def8356e"
     - name: "IMAGE_MUST_GATHER"
       image: "registry.redhat.io/openshift-serverless-1/serverless-must-gather-rhel8@sha256:2618167f4e10acd456892313ab15e1d4eb1dff68c3b9830fdc86b7ef8af57eae"
     - name: "IMAGE_KN_CLIENT_CLI_ARTIFACTS"
diff --git a/olm-catalog/serverless-operator/project.yaml b/olm-catalog/serverless-operator/project.yaml
index f65a2fbae5..cd9693a0b9 100644
--- a/olm-catalog/serverless-operator/project.yaml
+++ b/olm-catalog/serverless-operator/project.yaml
@@ -34,14 +34,14 @@ requirements:
     # OCP stream for kube-rbac-proxy image.
     kube-rbac-proxy: "4.17"
 dependencies:
-  serving: knative-v1.16
+  serving: knative-v1.17
   # serving midstream branch name
-  serving_artifacts_branch: release-v1.16
+  serving_artifacts_branch: release-v1.17
   # versions for networking components
-  kourier: knative-v1.16
-  net_kourier_artifacts_branch: release-v1.16
-  net_istio: knative-v1.16
-  net_istio_artifacts_branch: release-v1.16
+  kourier: knative-v1.17
+  net_kourier_artifacts_branch: release-v1.17
+  net_istio: knative-v1.17
+  net_istio_artifacts_branch: release-v1.17
   redhat-knative-istio-authz-chart: 1.37.0
   service_mesh_proxy: registry.redhat.io/openshift-service-mesh/proxyv2-rhel8@sha256:8ee57a44b1fc799fd8565eb339955773bd9beedcbf46f68628ee0bd4abf26515
   eventing: knative-v1.17
diff --git a/openshift-knative-operator/cmd/openshift-knative-operator/kodata/ingress/latest/istio/1-net-istio-core.yaml b/openshift-knative-operator/cmd/openshift-knative-operator/kodata/ingress/latest/istio/1-net-istio-core.yaml
index acd25da1a6..843ef3fcf7 100644
--- a/openshift-knative-operator/cmd/openshift-knative-operator/kodata/ingress/latest/istio/1-net-istio-core.yaml
+++ b/openshift-knative-operator/cmd/openshift-knative-operator/kodata/ingress/latest/istio/1-net-istio-core.yaml
@@ -21,7 +21,7 @@ metadata:
   labels:
     app.kubernetes.io/component: net-istio
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
     serving.knative.dev/controller: "true"
     networking.knative.dev/ingress-provider: istio
 rules:
@@ -51,7 +51,7 @@ metadata:
   labels:
     app.kubernetes.io/component: net-istio
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
     networking.knative.dev/ingress-provider: istio
 data:
   # TODO(nghia): Extract the .svc.cluster.local suffix into its own config.
@@ -173,7 +173,7 @@ metadata:
   labels:
     app.kubernetes.io/component: net-istio
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
     networking.knative.dev/ingress-provider: istio
 spec:
   selector:
@@ -189,7 +189,7 @@ spec:
         app: net-istio-controller
         app.kubernetes.io/component: net-istio
         app.kubernetes.io/name: knative-serving
-        app.kubernetes.io/version: "release-v1.16"
+        app.kubernetes.io/version: "release-v1.17"
     spec:
       serviceAccountName: controller
       containers:
@@ -280,7 +280,7 @@ metadata:
   labels:
     app.kubernetes.io/component: net-istio
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
     networking.knative.dev/ingress-provider: istio
 spec:
   selector:
@@ -294,7 +294,7 @@ spec:
         role: net-istio-webhook
         app.kubernetes.io/component: net-istio
         app.kubernetes.io/name: knative-serving
-        app.kubernetes.io/version: "release-v1.16"
+        app.kubernetes.io/version: "release-v1.17"
     spec:
       serviceAccountName: controller
       containers:
@@ -384,7 +384,7 @@ metadata:
   labels:
     app.kubernetes.io/component: net-istio
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
     networking.knative.dev/ingress-provider: istio
 ---
 # Copyright 2020 The Knative Authors
@@ -410,7 +410,7 @@ metadata:
     role: net-istio-webhook
     app.kubernetes.io/component: net-istio
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
     networking.knative.dev/ingress-provider: istio
 spec:
   ports:
@@ -448,7 +448,7 @@ metadata:
   labels:
     app.kubernetes.io/component: net-istio
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
     networking.knative.dev/ingress-provider: istio
 webhooks:
 - admissionReviewVersions:
@@ -486,7 +486,7 @@ metadata:
   labels:
     app.kubernetes.io/component: net-istio
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
     networking.knative.dev/ingress-provider: istio
 webhooks:
 - admissionReviewVersions:
diff --git a/openshift-knative-operator/cmd/openshift-knative-operator/kodata/ingress/latest/kourier/1-net-kourier.yaml b/openshift-knative-operator/cmd/openshift-knative-operator/kodata/ingress/latest/kourier/1-net-kourier.yaml
index 23adef2b51..705a3ce23b 100644
--- a/openshift-knative-operator/cmd/openshift-knative-operator/kodata/ingress/latest/kourier/1-net-kourier.yaml
+++ b/openshift-knative-operator/cmd/openshift-knative-operator/kodata/ingress/latest/kourier/1-net-kourier.yaml
@@ -21,7 +21,7 @@ metadata:
     networking.knative.dev/ingress-provider: kourier
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: net-kourier
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
 ---
 # Copyright 2020 The Knative Authors
 #
@@ -45,7 +45,7 @@ metadata:
   labels:
     networking.knative.dev/ingress-provider: kourier
     app.kubernetes.io/component: net-kourier
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
     app.kubernetes.io/name: knative-serving
 data:
   envoy-bootstrap.yaml: |
@@ -173,7 +173,7 @@ metadata:
   labels:
     networking.knative.dev/ingress-provider: kourier
     app.kubernetes.io/component: net-kourier
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
     app.kubernetes.io/name: knative-serving
 data:
   _example: |
@@ -233,6 +233,9 @@ data:
     # Use ',' separated values like "ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-ECDSA-CHACHA20-POLY1305"
     # The default uses the default cipher suites of the envoy version.
     cipher-suites: ""
+
+    # Disable the Envoy server header injection in the response when response has no such header.
+    disable-envoy-server-header: "false"
 ---
 # Copyright 2020 The Knative Authors
 #
@@ -256,7 +259,7 @@ metadata:
   labels:
     networking.knative.dev/ingress-provider: kourier
     app.kubernetes.io/component: net-kourier
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
     app.kubernetes.io/name: knative-serving
 ---
 apiVersion: rbac.authorization.k8s.io/v1
@@ -266,7 +269,7 @@ metadata:
   labels:
     networking.knative.dev/ingress-provider: kourier
     app.kubernetes.io/component: net-kourier
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
     app.kubernetes.io/name: knative-serving
 rules:
   - apiGroups: [""]
@@ -295,7 +298,7 @@ metadata:
   labels:
     networking.knative.dev/ingress-provider: kourier
     app.kubernetes.io/component: net-kourier
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
     app.kubernetes.io/name: knative-serving
 roleRef:
   apiGroup: rbac.authorization.k8s.io
@@ -328,7 +331,7 @@ metadata:
   labels:
     networking.knative.dev/ingress-provider: kourier
     app.kubernetes.io/component: net-kourier
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
     app.kubernetes.io/name: knative-serving
 spec:
   strategy:
@@ -418,7 +421,7 @@ metadata:
   labels:
     networking.knative.dev/ingress-provider: kourier
     app.kubernetes.io/component: net-kourier
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
     app.kubernetes.io/name: knative-serving
 spec:
   ports:
@@ -456,7 +459,7 @@ metadata:
   labels:
     networking.knative.dev/ingress-provider: kourier
     app.kubernetes.io/component: net-kourier
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
     app.kubernetes.io/name: knative-serving
 spec:
   strategy:
@@ -573,7 +576,7 @@ metadata:
   labels:
     networking.knative.dev/ingress-provider: kourier
     app.kubernetes.io/component: net-kourier
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
     app.kubernetes.io/name: knative-serving
 spec:
   ports:
@@ -597,7 +600,7 @@ metadata:
   labels:
     networking.knative.dev/ingress-provider: kourier
     app.kubernetes.io/component: net-kourier
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
     app.kubernetes.io/name: knative-serving
 spec:
   ports:
@@ -621,7 +624,7 @@ metadata:
   labels:
     networking.knative.dev/ingress-provider: kourier
     app.kubernetes.io/component: net-kourier
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
     app.kubernetes.io/name: knative-serving
 spec:
   minReplicas: 1
@@ -647,7 +650,7 @@ metadata:
   labels:
     networking.knative.dev/ingress-provider: kourier
     app.kubernetes.io/component: net-kourier
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
     app.kubernetes.io/name: knative-serving
 spec:
   minAvailable: 1
@@ -666,7 +669,7 @@ metadata:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: net-kourier
     networking.knative.dev/ingress-provider: kourier
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
   name: routing-serving-certs
   namespace: knative-serving
 spec:
@@ -698,7 +701,7 @@ metadata:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: net-kourier
     networking.knative.dev/ingress-provider: kourier
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
 data:
   _example: ""
 ---
@@ -725,7 +728,7 @@ metadata:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: net-kourier
     networking.knative.dev/ingress-provider: kourier
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
 data:
   _example: ""
 ---
@@ -752,6 +755,6 @@ metadata:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: net-kourier
     networking.knative.dev/ingress-provider: kourier
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-v1.17"
 data:
   _example: ""
diff --git a/openshift-knative-operator/cmd/openshift-knative-operator/kodata/knative-serving/latest/1-serving-crds.yaml b/openshift-knative-operator/cmd/openshift-knative-operator/kodata/knative-serving/latest/1-serving-crds.yaml
index cdf3bf2fd1..1d0c490feb 100644
--- a/openshift-knative-operator/cmd/openshift-knative-operator/kodata/knative-serving/latest/1-serving-crds.yaml
+++ b/openshift-knative-operator/cmd/openshift-knative-operator/kodata/knative-serving/latest/1-serving-crds.yaml
@@ -19,7 +19,7 @@ metadata:
   name: images.caching.internal.knative.dev
   labels:
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
 spec:
   group: caching.internal.knative.dev
@@ -87,9 +87,7 @@ spec:
                           This field is effectively required, but due to backwards compatibility is
                           allowed to be empty. Instances of this type with an empty value here are
                           almost certainly wrong.
-                          TODO: Add other useful fields. apiVersion, kind, uid?
                           More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                          TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                         type: string
                         default: ""
                     x-kubernetes-map-type: atomic
@@ -180,7 +178,7 @@ metadata:
   labels:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: networking
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
 spec:
   group: networking.internal.knative.dev
@@ -365,7 +363,7 @@ metadata:
   name: configurations.serving.knative.dev
   labels:
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
     duck.knative.dev/podspecable: "true"
 spec:
@@ -561,9 +559,7 @@ spec:
                                                 This field is effectively required, but due to backwards compatibility is
                                                 allowed to be empty. Instances of this type with an empty value here are
                                                 almost certainly wrong.
-                                                TODO: Add other useful fields. apiVersion, kind, uid?
                                                 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                                TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                               type: string
                                               default: ""
                                             optional:
@@ -571,15 +567,17 @@ spec:
                                               type: boolean
                                           x-kubernetes-map-type: atomic
                                         fieldRef:
-                                          description: This is accessible behind a feature flag - kubernetes.podspec-fieldref
+                                          description: |-
+                                            This is accessible behind a feature flag - kubernetes.podspec-fieldref
                                           type: object
-                                          x-kubernetes-preserve-unknown-fields: true
                                           x-kubernetes-map-type: atomic
+                                          x-kubernetes-preserve-unknown-fields: true
                                         resourceFieldRef:
-                                          description: This is accessible behind a feature flag - kubernetes.podspec-fieldref
+                                          description: |-
+                                            This is accessible behind a feature flag - kubernetes.podspec-fieldref
                                           type: object
-                                          x-kubernetes-preserve-unknown-fields: true
                                           x-kubernetes-map-type: atomic
+                                          x-kubernetes-preserve-unknown-fields: true
                                         secretKeyRef:
                                           description: Selects a key of a secret in the pod's namespace
                                           type: object
@@ -595,9 +593,7 @@ spec:
                                                 This field is effectively required, but due to backwards compatibility is
                                                 allowed to be empty. Instances of this type with an empty value here are
                                                 almost certainly wrong.
-                                                TODO: Add other useful fields. apiVersion, kind, uid?
                                                 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                                TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                               type: string
                                               default: ""
                                             optional:
@@ -630,9 +626,7 @@ spec:
                                             This field is effectively required, but due to backwards compatibility is
                                             allowed to be empty. Instances of this type with an empty value here are
                                             almost certainly wrong.
-                                            TODO: Add other useful fields. apiVersion, kind, uid?
                                             More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                            TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                           type: string
                                           default: ""
                                         optional:
@@ -652,9 +646,7 @@ spec:
                                             This field is effectively required, but due to backwards compatibility is
                                             allowed to be empty. Instances of this type with an empty value here are
                                             almost certainly wrong.
-                                            TODO: Add other useful fields. apiVersion, kind, uid?
                                             More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                            TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                           type: string
                                           default: ""
                                         optional:
@@ -709,8 +701,6 @@ spec:
                                   grpc:
                                     description: GRPC specifies an action involving a GRPC port.
                                     type: object
-                                    required:
-                                      - port
                                     properties:
                                       port:
                                         description: Port number of the gRPC service. Number must be in the range 1 to 65535.
@@ -721,9 +711,9 @@ spec:
                                           Service is the name of the service to place in the gRPC HealthCheckRequest
                                           (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
 
-
                                           If this is not specified, the default behavior is defined by gRPC.
                                         type: string
+                                        default: ""
                                   httpGet:
                                     description: HTTPGet specifies the http request to perform.
                                     type: object
@@ -776,7 +766,8 @@ spec:
                                     type: integer
                                     format: int32
                                   periodSeconds:
-                                    description: How often (in seconds) to perform the probe.
+                                    description: |-
+                                      How often (in seconds) to perform the probe.
                                     type: integer
                                     format: int32
                                   successThreshold:
@@ -827,8 +818,6 @@ spec:
                                 items:
                                   description: ContainerPort represents a network port in a single container.
                                   type: object
-                                  required:
-                                    - containerPort
                                   properties:
                                     containerPort:
                                       description: |-
@@ -848,10 +837,6 @@ spec:
                                         Defaults to "TCP".
                                       type: string
                                       default: TCP
-                                x-kubernetes-list-map-keys:
-                                  - containerPort
-                                  - protocol
-                                x-kubernetes-list-type: map
                               readinessProbe:
                                 description: |-
                                   Periodic probe of container service readiness.
@@ -884,8 +869,6 @@ spec:
                                   grpc:
                                     description: GRPC specifies an action involving a GRPC port.
                                     type: object
-                                    required:
-                                      - port
                                     properties:
                                       port:
                                         description: Port number of the gRPC service. Number must be in the range 1 to 65535.
@@ -896,9 +879,9 @@ spec:
                                           Service is the name of the service to place in the gRPC HealthCheckRequest
                                           (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
 
-
                                           If this is not specified, the default behavior is defined by gRPC.
                                         type: string
+                                        default: ""
                                   httpGet:
                                     description: HTTPGet specifies the http request to perform.
                                     type: object
@@ -951,7 +934,8 @@ spec:
                                     type: integer
                                     format: int32
                                   periodSeconds:
-                                    description: How often (in seconds) to perform the probe.
+                                    description: |-
+                                      How often (in seconds) to perform the probe.
                                     type: integer
                                     format: int32
                                   successThreshold:
@@ -990,33 +974,6 @@ spec:
                                   More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                 type: object
                                 properties:
-                                  claims:
-                                    description: |-
-                                      Claims lists the names of resources, defined in spec.resourceClaims,
-                                      that are used by this container.
-
-
-                                      This is an alpha field and requires enabling the
-                                      DynamicResourceAllocation feature gate.
-
-
-                                      This field is immutable. It can only be set for containers.
-                                    type: array
-                                    items:
-                                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.
-                                      type: object
-                                      required:
-                                        - name
-                                      properties:
-                                        name:
-                                          description: |-
-                                            Name must match the name of one entry in pod.spec.resourceClaims of
-                                            the Pod where this field is used. It makes that resource available
-                                            inside a container.
-                                          type: string
-                                    x-kubernetes-list-map-keys:
-                                      - name
-                                    x-kubernetes-list-type: map
                                   limits:
                                     description: |-
                                       Limits describes the maximum amount of compute resources allowed.
@@ -1079,6 +1036,10 @@ spec:
                                           description: Capability represent POSIX capabilities type
                                           type: string
                                         x-kubernetes-list-type: atomic
+                                  privileged:
+                                    description: |-
+                                      Run container in privileged mode. This can only be set to explicitly to 'false'
+                                    type: boolean
                                   readOnlyRootFilesystem:
                                     description: |-
                                       Whether this container has a read-only root filesystem.
@@ -1134,7 +1095,6 @@ spec:
                                           type indicates which kind of seccomp profile will be applied.
                                           Valid options are:
 
-
                                           Localhost - a profile defined in a file on the node should be used.
                                           RuntimeDefault - the container runtime default profile should be used.
                                           Unconfined - no profile should be applied.
@@ -1174,8 +1134,6 @@ spec:
                                   grpc:
                                     description: GRPC specifies an action involving a GRPC port.
                                     type: object
-                                    required:
-                                      - port
                                     properties:
                                       port:
                                         description: Port number of the gRPC service. Number must be in the range 1 to 65535.
@@ -1186,9 +1144,9 @@ spec:
                                           Service is the name of the service to place in the gRPC HealthCheckRequest
                                           (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
 
-
                                           If this is not specified, the default behavior is defined by gRPC.
                                         type: string
+                                        default: ""
                                   httpGet:
                                     description: HTTPGet specifies the http request to perform.
                                     type: object
@@ -1241,7 +1199,8 @@ spec:
                                     type: integer
                                     format: int32
                                   periodSeconds:
-                                    description: How often (in seconds) to perform the probe.
+                                    description: |-
+                                      How often (in seconds) to perform the probe.
                                     type: integer
                                     format: int32
                                   successThreshold:
@@ -1334,34 +1293,39 @@ spec:
                                   Cannot be updated.
                                 type: string
                         dnsConfig:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-dnsconfig
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-dnsconfig
                           type: object
                           x-kubernetes-preserve-unknown-fields: true
                         dnsPolicy:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-dnspolicy
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-dnspolicy
                           type: string
                         enableServiceLinks:
-                          description: 'EnableServiceLinks indicates whether information about services should be injected into pod''s environment variables, matching the syntax of Docker links. Optional: Knative defaults this to false.'
+                          description: |-
+                            EnableServiceLinks indicates whether information aboutservices should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Knative defaults this to false.
                           type: boolean
                         hostAliases:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-hostaliases
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-hostaliases
                           type: array
                           items:
-                            description: This is accessible behind a feature flag - kubernetes.podspec-hostaliases
+                            description: |-
+                              This is accessible behind a feature flag - kubernetes.podspec-hostaliases
                             type: object
                             x-kubernetes-preserve-unknown-fields: true
                         hostIPC:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-hostipc
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-hostipc
                           type: boolean
-                          x-kubernetes-preserve-unknown-fields: true
                         hostNetwork:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-hostnetwork
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-hostnetwork
                           type: boolean
-                          x-kubernetes-preserve-unknown-fields: true
                         hostPID:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-hostpid
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-hostpid
                           type: boolean
-                          x-kubernetes-preserve-unknown-fields: true
                         idleTimeoutSeconds:
                           description: |-
                             IdleTimeoutSeconds is the maximum duration in seconds a request will be allowed
@@ -1387,9 +1351,7 @@ spec:
                                   This field is effectively required, but due to backwards compatibility is
                                   allowed to be empty. Instances of this type with an empty value here are
                                   almost certainly wrong.
-                                  TODO: Add other useful fields. apiVersion, kind, uid?
                                   More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                 type: string
                                 default: ""
                             x-kubernetes-map-type: atomic
@@ -1398,33 +1360,23 @@ spec:
                           x-kubernetes-list-type: map
                         initContainers:
                           description: |-
-                            List of initialization containers belonging to the pod.
-                            Init containers are executed in order prior to containers being started. If any
-                            init container fails, the pod is considered to have failed and is handled according
-                            to its restartPolicy. The name for an init container or normal container must be
-                            unique among all containers.
-                            Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
-                            The resourceRequirements of an init container are taken into account during scheduling
-                            by finding the highest request/limit for each resource type, and then using the max of
-                            of that value or the sum of the normal containers. Limits are applied to init containers
-                            in a similar fashion.
-                            Init containers cannot currently be added or removed.
-                            Cannot be updated.
-                            More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
+                            This is accessible behind a feature flag - kubernetes.podspec-init-containers
                           type: array
                           items:
                             description: This is accessible behind a feature flag - kubernetes.podspec-init-containers
                             type: object
                             x-kubernetes-preserve-unknown-fields: true
                         nodeSelector:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-nodeselector
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-nodeselector
                           type: object
-                          x-kubernetes-preserve-unknown-fields: true
+                          additionalProperties:
+                            type: string
                           x-kubernetes-map-type: atomic
                         priorityClassName:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-priorityclassname
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-priorityclassname
                           type: string
-                          x-kubernetes-preserve-unknown-fields: true
                         responseStartTimeoutSeconds:
                           description: |-
                             ResponseStartTimeoutSeconds is the maximum duration in seconds that the request
@@ -1433,15 +1385,16 @@ spec:
                           type: integer
                           format: int64
                         runtimeClassName:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-runtimeclassname
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-runtimeclassname
                           type: string
-                          x-kubernetes-preserve-unknown-fields: true
                         schedulerName:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-schedulername
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-schedulername
                           type: string
-                          x-kubernetes-preserve-unknown-fields: true
                         securityContext:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-securitycontext
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-securitycontext
                           type: object
                           x-kubernetes-preserve-unknown-fields: true
                         serviceAccountName:
@@ -1450,9 +1403,9 @@ spec:
                             More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
                           type: string
                         shareProcessNamespace:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-shareproccessnamespace
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-shareprocessnamespace
                           type: boolean
-                          x-kubernetes-preserve-unknown-fields: true
                         timeoutSeconds:
                           description: |-
                             TimeoutSeconds is the maximum duration in seconds that the request instance
@@ -1464,12 +1417,13 @@ spec:
                           description: This is accessible behind a feature flag - kubernetes.podspec-tolerations
                           type: array
                           items:
-                            description: This is accessible behind a feature flag - kubernetes.podspec-tolerations
+                            description: |-
+                              This is accessible behind a feature flag - kubernetes.podspec-tolerations
                             type: object
                             x-kubernetes-preserve-unknown-fields: true
-                          x-kubernetes-list-type: atomic
                         topologySpreadConstraints:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-topologyspreadconstraints
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-topologyspreadconstraints
                           type: array
                           items:
                             description: This is accessible behind a feature flag - kubernetes.podspec-topologyspreadconstraints
@@ -1545,9 +1499,7 @@ spec:
                                       This field is effectively required, but due to backwards compatibility is
                                       allowed to be empty. Instances of this type with an empty value here are
                                       almost certainly wrong.
-                                      TODO: Add other useful fields. apiVersion, kind, uid?
                                       More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                      TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                     type: string
                                     default: ""
                                   optional:
@@ -1555,7 +1507,13 @@ spec:
                                     type: boolean
                                 x-kubernetes-map-type: atomic
                               emptyDir:
-                                description: This is accessible behind a feature flag - kubernetes.podspec-emptydir
+                                description: |-
+                                  This is accessible behind a feature flag - kubernetes.podspec-volumes-emptydir
+                                type: object
+                                x-kubernetes-preserve-unknown-fields: true
+                              hostPath:
+                                description: |-
+                                  This is accessible behind a feature flag - kubernetes.podspec-volumes-hostpath
                                 type: object
                                 x-kubernetes-preserve-unknown-fields: true
                               name:
@@ -1565,7 +1523,8 @@ spec:
                                   More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                 type: string
                               persistentVolumeClaim:
-                                description: This is accessible behind a feature flag - kubernetes.podspec-persistent-volume-claim
+                                description: |-
+                                  This is accessible behind a feature flag - kubernetes.podspec-persistent-volume-claim
                                 type: object
                                 x-kubernetes-preserve-unknown-fields: true
                               projected:
@@ -1583,10 +1542,14 @@ spec:
                                     type: integer
                                     format: int32
                                   sources:
-                                    description: sources is the list of volume projections
+                                    description: |-
+                                      sources is the list of volume projections. Each entry in this list
+                                      handles one source.
                                     type: array
                                     items:
-                                      description: Projection that may be projected along with other supported volume types
+                                      description: |-
+                                        Projection that may be projected along with other supported volume types.
+                                        Exactly one of these fields must be set.
                                       type: object
                                       properties:
                                         configMap:
@@ -1637,9 +1600,7 @@ spec:
                                                 This field is effectively required, but due to backwards compatibility is
                                                 allowed to be empty. Instances of this type with an empty value here are
                                                 almost certainly wrong.
-                                                TODO: Add other useful fields. apiVersion, kind, uid?
                                                 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                                TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                               type: string
                                               default: ""
                                             optional:
@@ -1756,9 +1717,7 @@ spec:
                                                 This field is effectively required, but due to backwards compatibility is
                                                 allowed to be empty. Instances of this type with an empty value here are
                                                 almost certainly wrong.
-                                                TODO: Add other useful fields. apiVersion, kind, uid?
                                                 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                                TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                               type: string
                                               default: ""
                                             optional:
@@ -1946,7 +1905,7 @@ metadata:
   labels:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: networking
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
 spec:
   group: networking.internal.knative.dev
@@ -2022,7 +1981,7 @@ metadata:
   name: domainmappings.serving.knative.dev
   labels:
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
 spec:
   group: serving.knative.dev
@@ -2076,13 +2035,11 @@ spec:
                   description: |-
                     Ref specifies the target of the Domain Mapping.
 
-
                     The object identified by the Ref must be an Addressable with a URL of the
                     form `{name}.{namespace}.{domain}` where `{domain}` is the cluster domain,
                     and `{name}` and `{namespace}` are the name and namespace of a Kubernetes
                     Service.
 
-
                     This contract is satisfied by Knative types such as Knative Services and
                     Knative Routes, and by Kubernetes Services.
                   type: object
@@ -2235,7 +2192,7 @@ metadata:
   labels:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: networking
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
 spec:
   group: networking.internal.knative.dev
@@ -2252,7 +2209,6 @@ spec:
             by a backend. An Ingress can be configured to give services externally-reachable URLs, load
             balance traffic, offer name based virtual hosting, etc.
 
-
             This is heavily based on K8s Ingress https://godoc.org/k8s.io/api/networking/v1beta1#Ingress
             which some highlighted modifications.
           type: object
@@ -2324,7 +2280,6 @@ spec:
                             description: |-
                               A collection of paths that map requests to backends.
 
-
                               If they are multiple matching paths, the first match takes precedence.
                             type: array
                             items:
@@ -2340,7 +2295,6 @@ spec:
                                     AppendHeaders allow specifying additional HTTP headers to add
                                     before forwarding a request to the destination service.
 
-
                                     NOTE: This differs from K8s Ingress which doesn't allow header appending.
                                   type: object
                                   additionalProperties:
@@ -2375,7 +2329,6 @@ spec:
                                   description: |-
                                     RewriteHost rewrites the incoming request's host header.
 
-
                                     This field is currently experimental and not supported by all Ingress
                                     implementations.
                                   type: string
@@ -2397,7 +2350,6 @@ spec:
                                           AppendHeaders allow specifying additional HTTP headers to add
                                           before forwarding a request to the destination service.
 
-
                                           NOTE: This differs from K8s Ingress which doesn't allow header appending.
                                         type: object
                                         additionalProperties:
@@ -2407,7 +2359,6 @@ spec:
                                           Specifies the split percentage, a number between 0 and 100.  If
                                           only one split is specified, we default to 100.
 
-
                                           NOTE: This differs from K8s Ingress to allow percentage split.
                                         type: integer
                                       serviceName:
@@ -2417,7 +2368,6 @@ spec:
                                         description: |-
                                           Specifies the namespace of the referenced service.
 
-
                                           NOTE: This differs from K8s Ingress to allow routing to different namespaces.
                                         type: string
                                       servicePort:
@@ -2542,7 +2492,6 @@ spec:
                             description: |-
                               DomainInternal is set if there is a cluster-local DNS name to access the Ingress.
 
-
                               NOTE: This differs from K8s Ingress, since we also desire to have a cluster-local
                                     DNS name to allow routing in case of not having a mesh.
                             type: string
@@ -2578,7 +2527,6 @@ spec:
                             description: |-
                               DomainInternal is set if there is a cluster-local DNS name to access the Ingress.
 
-
                               NOTE: This differs from K8s Ingress, since we also desire to have a cluster-local
                                     DNS name to allow routing in case of not having a mesh.
                             type: string
@@ -2631,7 +2579,7 @@ metadata:
   name: metrics.autoscaling.internal.knative.dev
   labels:
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
 spec:
   group: autoscaling.internal.knative.dev
@@ -2774,7 +2722,7 @@ metadata:
   name: podautoscalers.autoscaling.internal.knative.dev
   labels:
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
 spec:
   group: autoscaling.internal.knative.dev
@@ -2974,7 +2922,7 @@ metadata:
   name: revisions.serving.knative.dev
   labels:
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
 spec:
   group: serving.knative.dev
@@ -3021,7 +2969,6 @@ spec:
             references a container image. Revisions are created by updates to a
             Configuration.
 
-
             See also: https://github.com/knative/serving/blob/main/docs/spec/overview.md#revision
           type: object
           properties:
@@ -3147,9 +3094,7 @@ spec:
                                         This field is effectively required, but due to backwards compatibility is
                                         allowed to be empty. Instances of this type with an empty value here are
                                         almost certainly wrong.
-                                        TODO: Add other useful fields. apiVersion, kind, uid?
                                         More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                        TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                       type: string
                                       default: ""
                                     optional:
@@ -3157,15 +3102,17 @@ spec:
                                       type: boolean
                                   x-kubernetes-map-type: atomic
                                 fieldRef:
-                                  description: This is accessible behind a feature flag - kubernetes.podspec-fieldref
+                                  description: |-
+                                    This is accessible behind a feature flag - kubernetes.podspec-fieldref
                                   type: object
-                                  x-kubernetes-preserve-unknown-fields: true
                                   x-kubernetes-map-type: atomic
+                                  x-kubernetes-preserve-unknown-fields: true
                                 resourceFieldRef:
-                                  description: This is accessible behind a feature flag - kubernetes.podspec-fieldref
+                                  description: |-
+                                    This is accessible behind a feature flag - kubernetes.podspec-fieldref
                                   type: object
-                                  x-kubernetes-preserve-unknown-fields: true
                                   x-kubernetes-map-type: atomic
+                                  x-kubernetes-preserve-unknown-fields: true
                                 secretKeyRef:
                                   description: Selects a key of a secret in the pod's namespace
                                   type: object
@@ -3181,9 +3128,7 @@ spec:
                                         This field is effectively required, but due to backwards compatibility is
                                         allowed to be empty. Instances of this type with an empty value here are
                                         almost certainly wrong.
-                                        TODO: Add other useful fields. apiVersion, kind, uid?
                                         More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                        TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                       type: string
                                       default: ""
                                     optional:
@@ -3216,9 +3161,7 @@ spec:
                                     This field is effectively required, but due to backwards compatibility is
                                     allowed to be empty. Instances of this type with an empty value here are
                                     almost certainly wrong.
-                                    TODO: Add other useful fields. apiVersion, kind, uid?
                                     More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                    TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                   type: string
                                   default: ""
                                 optional:
@@ -3238,9 +3181,7 @@ spec:
                                     This field is effectively required, but due to backwards compatibility is
                                     allowed to be empty. Instances of this type with an empty value here are
                                     almost certainly wrong.
-                                    TODO: Add other useful fields. apiVersion, kind, uid?
                                     More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                    TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                   type: string
                                   default: ""
                                 optional:
@@ -3295,8 +3236,6 @@ spec:
                           grpc:
                             description: GRPC specifies an action involving a GRPC port.
                             type: object
-                            required:
-                              - port
                             properties:
                               port:
                                 description: Port number of the gRPC service. Number must be in the range 1 to 65535.
@@ -3307,9 +3246,9 @@ spec:
                                   Service is the name of the service to place in the gRPC HealthCheckRequest
                                   (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
 
-
                                   If this is not specified, the default behavior is defined by gRPC.
                                 type: string
+                                default: ""
                           httpGet:
                             description: HTTPGet specifies the http request to perform.
                             type: object
@@ -3362,7 +3301,8 @@ spec:
                             type: integer
                             format: int32
                           periodSeconds:
-                            description: How often (in seconds) to perform the probe.
+                            description: |-
+                              How often (in seconds) to perform the probe.
                             type: integer
                             format: int32
                           successThreshold:
@@ -3413,8 +3353,6 @@ spec:
                         items:
                           description: ContainerPort represents a network port in a single container.
                           type: object
-                          required:
-                            - containerPort
                           properties:
                             containerPort:
                               description: |-
@@ -3434,10 +3372,6 @@ spec:
                                 Defaults to "TCP".
                               type: string
                               default: TCP
-                        x-kubernetes-list-map-keys:
-                          - containerPort
-                          - protocol
-                        x-kubernetes-list-type: map
                       readinessProbe:
                         description: |-
                           Periodic probe of container service readiness.
@@ -3470,8 +3404,6 @@ spec:
                           grpc:
                             description: GRPC specifies an action involving a GRPC port.
                             type: object
-                            required:
-                              - port
                             properties:
                               port:
                                 description: Port number of the gRPC service. Number must be in the range 1 to 65535.
@@ -3482,9 +3414,9 @@ spec:
                                   Service is the name of the service to place in the gRPC HealthCheckRequest
                                   (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
 
-
                                   If this is not specified, the default behavior is defined by gRPC.
                                 type: string
+                                default: ""
                           httpGet:
                             description: HTTPGet specifies the http request to perform.
                             type: object
@@ -3537,7 +3469,8 @@ spec:
                             type: integer
                             format: int32
                           periodSeconds:
-                            description: How often (in seconds) to perform the probe.
+                            description: |-
+                              How often (in seconds) to perform the probe.
                             type: integer
                             format: int32
                           successThreshold:
@@ -3576,33 +3509,6 @@ spec:
                           More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                         type: object
                         properties:
-                          claims:
-                            description: |-
-                              Claims lists the names of resources, defined in spec.resourceClaims,
-                              that are used by this container.
-
-
-                              This is an alpha field and requires enabling the
-                              DynamicResourceAllocation feature gate.
-
-
-                              This field is immutable. It can only be set for containers.
-                            type: array
-                            items:
-                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
-                              type: object
-                              required:
-                                - name
-                              properties:
-                                name:
-                                  description: |-
-                                    Name must match the name of one entry in pod.spec.resourceClaims of
-                                    the Pod where this field is used. It makes that resource available
-                                    inside a container.
-                                  type: string
-                            x-kubernetes-list-map-keys:
-                              - name
-                            x-kubernetes-list-type: map
                           limits:
                             description: |-
                               Limits describes the maximum amount of compute resources allowed.
@@ -3665,6 +3571,10 @@ spec:
                                   description: Capability represent POSIX capabilities type
                                   type: string
                                 x-kubernetes-list-type: atomic
+                          privileged:
+                            description: |-
+                              Run container in privileged mode. This can only be set to explicitly to 'false'
+                            type: boolean
                           readOnlyRootFilesystem:
                             description: |-
                               Whether this container has a read-only root filesystem.
@@ -3720,7 +3630,6 @@ spec:
                                   type indicates which kind of seccomp profile will be applied.
                                   Valid options are:
 
-
                                   Localhost - a profile defined in a file on the node should be used.
                                   RuntimeDefault - the container runtime default profile should be used.
                                   Unconfined - no profile should be applied.
@@ -3760,8 +3669,6 @@ spec:
                           grpc:
                             description: GRPC specifies an action involving a GRPC port.
                             type: object
-                            required:
-                              - port
                             properties:
                               port:
                                 description: Port number of the gRPC service. Number must be in the range 1 to 65535.
@@ -3772,9 +3679,9 @@ spec:
                                   Service is the name of the service to place in the gRPC HealthCheckRequest
                                   (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
 
-
                                   If this is not specified, the default behavior is defined by gRPC.
                                 type: string
+                                default: ""
                           httpGet:
                             description: HTTPGet specifies the http request to perform.
                             type: object
@@ -3827,7 +3734,8 @@ spec:
                             type: integer
                             format: int32
                           periodSeconds:
-                            description: How often (in seconds) to perform the probe.
+                            description: |-
+                              How often (in seconds) to perform the probe.
                             type: integer
                             format: int32
                           successThreshold:
@@ -3920,34 +3828,39 @@ spec:
                           Cannot be updated.
                         type: string
                 dnsConfig:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-dnsconfig
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-dnsconfig
                   type: object
                   x-kubernetes-preserve-unknown-fields: true
                 dnsPolicy:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-dnspolicy
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-dnspolicy
                   type: string
                 enableServiceLinks:
-                  description: 'EnableServiceLinks indicates whether information about services should be injected into pod''s environment variables, matching the syntax of Docker links. Optional: Knative defaults this to false.'
+                  description: |-
+                    EnableServiceLinks indicates whether information aboutservices should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Knative defaults this to false.
                   type: boolean
                 hostAliases:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-hostaliases
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-hostaliases
                   type: array
                   items:
-                    description: This is accessible behind a feature flag - kubernetes.podspec-hostaliases
+                    description: |-
+                      This is accessible behind a feature flag - kubernetes.podspec-hostaliases
                     type: object
                     x-kubernetes-preserve-unknown-fields: true
                 hostIPC:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-hostipc
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-hostipc
                   type: boolean
-                  x-kubernetes-preserve-unknown-fields: true
                 hostNetwork:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-hostnetwork
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-hostnetwork
                   type: boolean
-                  x-kubernetes-preserve-unknown-fields: true
                 hostPID:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-hostpid
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-hostpid
                   type: boolean
-                  x-kubernetes-preserve-unknown-fields: true
                 idleTimeoutSeconds:
                   description: |-
                     IdleTimeoutSeconds is the maximum duration in seconds a request will be allowed
@@ -3973,9 +3886,7 @@ spec:
                           This field is effectively required, but due to backwards compatibility is
                           allowed to be empty. Instances of this type with an empty value here are
                           almost certainly wrong.
-                          TODO: Add other useful fields. apiVersion, kind, uid?
                           More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                          TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                         type: string
                         default: ""
                     x-kubernetes-map-type: atomic
@@ -3984,33 +3895,23 @@ spec:
                   x-kubernetes-list-type: map
                 initContainers:
                   description: |-
-                    List of initialization containers belonging to the pod.
-                    Init containers are executed in order prior to containers being started. If any
-                    init container fails, the pod is considered to have failed and is handled according
-                    to its restartPolicy. The name for an init container or normal container must be
-                    unique among all containers.
-                    Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
-                    The resourceRequirements of an init container are taken into account during scheduling
-                    by finding the highest request/limit for each resource type, and then using the max of
-                    of that value or the sum of the normal containers. Limits are applied to init containers
-                    in a similar fashion.
-                    Init containers cannot currently be added or removed.
-                    Cannot be updated.
-                    More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
+                    This is accessible behind a feature flag - kubernetes.podspec-init-containers
                   type: array
                   items:
                     description: This is accessible behind a feature flag - kubernetes.podspec-init-containers
                     type: object
                     x-kubernetes-preserve-unknown-fields: true
                 nodeSelector:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-nodeselector
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-nodeselector
                   type: object
-                  x-kubernetes-preserve-unknown-fields: true
+                  additionalProperties:
+                    type: string
                   x-kubernetes-map-type: atomic
                 priorityClassName:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-priorityclassname
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-priorityclassname
                   type: string
-                  x-kubernetes-preserve-unknown-fields: true
                 responseStartTimeoutSeconds:
                   description: |-
                     ResponseStartTimeoutSeconds is the maximum duration in seconds that the request
@@ -4019,15 +3920,16 @@ spec:
                   type: integer
                   format: int64
                 runtimeClassName:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-runtimeclassname
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-runtimeclassname
                   type: string
-                  x-kubernetes-preserve-unknown-fields: true
                 schedulerName:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-schedulername
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-schedulername
                   type: string
-                  x-kubernetes-preserve-unknown-fields: true
                 securityContext:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-securitycontext
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-securitycontext
                   type: object
                   x-kubernetes-preserve-unknown-fields: true
                 serviceAccountName:
@@ -4036,9 +3938,9 @@ spec:
                     More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
                   type: string
                 shareProcessNamespace:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-shareproccessnamespace
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-shareprocessnamespace
                   type: boolean
-                  x-kubernetes-preserve-unknown-fields: true
                 timeoutSeconds:
                   description: |-
                     TimeoutSeconds is the maximum duration in seconds that the request instance
@@ -4050,12 +3952,13 @@ spec:
                   description: This is accessible behind a feature flag - kubernetes.podspec-tolerations
                   type: array
                   items:
-                    description: This is accessible behind a feature flag - kubernetes.podspec-tolerations
+                    description: |-
+                      This is accessible behind a feature flag - kubernetes.podspec-tolerations
                     type: object
                     x-kubernetes-preserve-unknown-fields: true
-                  x-kubernetes-list-type: atomic
                 topologySpreadConstraints:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-topologyspreadconstraints
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-topologyspreadconstraints
                   type: array
                   items:
                     description: This is accessible behind a feature flag - kubernetes.podspec-topologyspreadconstraints
@@ -4131,9 +4034,7 @@ spec:
                               This field is effectively required, but due to backwards compatibility is
                               allowed to be empty. Instances of this type with an empty value here are
                               almost certainly wrong.
-                              TODO: Add other useful fields. apiVersion, kind, uid?
                               More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                              TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                             type: string
                             default: ""
                           optional:
@@ -4141,7 +4042,13 @@ spec:
                             type: boolean
                         x-kubernetes-map-type: atomic
                       emptyDir:
-                        description: This is accessible behind a feature flag - kubernetes.podspec-emptydir
+                        description: |-
+                          This is accessible behind a feature flag - kubernetes.podspec-volumes-emptydir
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      hostPath:
+                        description: |-
+                          This is accessible behind a feature flag - kubernetes.podspec-volumes-hostpath
                         type: object
                         x-kubernetes-preserve-unknown-fields: true
                       name:
@@ -4151,7 +4058,8 @@ spec:
                           More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                         type: string
                       persistentVolumeClaim:
-                        description: This is accessible behind a feature flag - kubernetes.podspec-persistent-volume-claim
+                        description: |-
+                          This is accessible behind a feature flag - kubernetes.podspec-persistent-volume-claim
                         type: object
                         x-kubernetes-preserve-unknown-fields: true
                       projected:
@@ -4169,10 +4077,14 @@ spec:
                             type: integer
                             format: int32
                           sources:
-                            description: sources is the list of volume projections
+                            description: |-
+                              sources is the list of volume projections. Each entry in this list
+                              handles one source.
                             type: array
                             items:
-                              description: Projection that may be projected along with other supported volume types
+                              description: |-
+                                Projection that may be projected along with other supported volume types.
+                                Exactly one of these fields must be set.
                               type: object
                               properties:
                                 configMap:
@@ -4223,9 +4135,7 @@ spec:
                                         This field is effectively required, but due to backwards compatibility is
                                         allowed to be empty. Instances of this type with an empty value here are
                                         almost certainly wrong.
-                                        TODO: Add other useful fields. apiVersion, kind, uid?
                                         More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                        TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                       type: string
                                       default: ""
                                     optional:
@@ -4342,9 +4252,7 @@ spec:
                                         This field is effectively required, but due to backwards compatibility is
                                         allowed to be empty. Instances of this type with an empty value here are
                                         almost certainly wrong.
-                                        TODO: Add other useful fields. apiVersion, kind, uid?
                                         More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                        TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                       type: string
                                       default: ""
                                     optional:
@@ -4570,7 +4478,7 @@ metadata:
   name: routes.serving.knative.dev
   labels:
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
     duck.knative.dev/addressable: "true"
 spec:
@@ -4840,7 +4748,7 @@ metadata:
   labels:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: networking
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
 spec:
   group: networking.internal.knative.dev
@@ -4913,7 +4821,6 @@ spec:
                         the event) or if no container name is specified "spec.containers[2]" (container with
                         index 2 in this pod). This syntax is chosen only to have some well-defined way of
                         referencing a part of an object.
-                        TODO: this design is not final and this field is subject to change in the future.
                       type: string
                     kind:
                       description: |-
@@ -5064,7 +4971,7 @@ metadata:
   name: services.serving.knative.dev
   labels:
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
     duck.knative.dev/addressable: "true"
     duck.knative.dev/podspecable: "true"
@@ -5115,11 +5022,9 @@ spec:
             underlying Routes and Configurations (much as a kubernetes Deployment
             orchestrates ReplicaSets), and its usage is optional but recommended.
 
-
             The Service's controller will track the statuses of its owned Configuration
             and Route, reflecting their statuses and conditions as its own.
 
-
             See also: https://github.com/knative/serving/blob/main/docs/spec/overview.md#service
           type: object
           properties:
@@ -5280,9 +5185,7 @@ spec:
                                                 This field is effectively required, but due to backwards compatibility is
                                                 allowed to be empty. Instances of this type with an empty value here are
                                                 almost certainly wrong.
-                                                TODO: Add other useful fields. apiVersion, kind, uid?
                                                 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                                TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                               type: string
                                               default: ""
                                             optional:
@@ -5290,15 +5193,17 @@ spec:
                                               type: boolean
                                           x-kubernetes-map-type: atomic
                                         fieldRef:
-                                          description: This is accessible behind a feature flag - kubernetes.podspec-fieldref
+                                          description: |-
+                                            This is accessible behind a feature flag - kubernetes.podspec-fieldref
                                           type: object
-                                          x-kubernetes-preserve-unknown-fields: true
                                           x-kubernetes-map-type: atomic
+                                          x-kubernetes-preserve-unknown-fields: true
                                         resourceFieldRef:
-                                          description: This is accessible behind a feature flag - kubernetes.podspec-fieldref
+                                          description: |-
+                                            This is accessible behind a feature flag - kubernetes.podspec-fieldref
                                           type: object
-                                          x-kubernetes-preserve-unknown-fields: true
                                           x-kubernetes-map-type: atomic
+                                          x-kubernetes-preserve-unknown-fields: true
                                         secretKeyRef:
                                           description: Selects a key of a secret in the pod's namespace
                                           type: object
@@ -5314,9 +5219,7 @@ spec:
                                                 This field is effectively required, but due to backwards compatibility is
                                                 allowed to be empty. Instances of this type with an empty value here are
                                                 almost certainly wrong.
-                                                TODO: Add other useful fields. apiVersion, kind, uid?
                                                 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                                TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                               type: string
                                               default: ""
                                             optional:
@@ -5349,9 +5252,7 @@ spec:
                                             This field is effectively required, but due to backwards compatibility is
                                             allowed to be empty. Instances of this type with an empty value here are
                                             almost certainly wrong.
-                                            TODO: Add other useful fields. apiVersion, kind, uid?
                                             More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                            TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                           type: string
                                           default: ""
                                         optional:
@@ -5371,9 +5272,7 @@ spec:
                                             This field is effectively required, but due to backwards compatibility is
                                             allowed to be empty. Instances of this type with an empty value here are
                                             almost certainly wrong.
-                                            TODO: Add other useful fields. apiVersion, kind, uid?
                                             More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                            TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                           type: string
                                           default: ""
                                         optional:
@@ -5428,8 +5327,6 @@ spec:
                                   grpc:
                                     description: GRPC specifies an action involving a GRPC port.
                                     type: object
-                                    required:
-                                      - port
                                     properties:
                                       port:
                                         description: Port number of the gRPC service. Number must be in the range 1 to 65535.
@@ -5440,9 +5337,9 @@ spec:
                                           Service is the name of the service to place in the gRPC HealthCheckRequest
                                           (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
 
-
                                           If this is not specified, the default behavior is defined by gRPC.
                                         type: string
+                                        default: ""
                                   httpGet:
                                     description: HTTPGet specifies the http request to perform.
                                     type: object
@@ -5495,7 +5392,8 @@ spec:
                                     type: integer
                                     format: int32
                                   periodSeconds:
-                                    description: How often (in seconds) to perform the probe.
+                                    description: |-
+                                      How often (in seconds) to perform the probe.
                                     type: integer
                                     format: int32
                                   successThreshold:
@@ -5546,8 +5444,6 @@ spec:
                                 items:
                                   description: ContainerPort represents a network port in a single container.
                                   type: object
-                                  required:
-                                    - containerPort
                                   properties:
                                     containerPort:
                                       description: |-
@@ -5567,10 +5463,6 @@ spec:
                                         Defaults to "TCP".
                                       type: string
                                       default: TCP
-                                x-kubernetes-list-map-keys:
-                                  - containerPort
-                                  - protocol
-                                x-kubernetes-list-type: map
                               readinessProbe:
                                 description: |-
                                   Periodic probe of container service readiness.
@@ -5603,8 +5495,6 @@ spec:
                                   grpc:
                                     description: GRPC specifies an action involving a GRPC port.
                                     type: object
-                                    required:
-                                      - port
                                     properties:
                                       port:
                                         description: Port number of the gRPC service. Number must be in the range 1 to 65535.
@@ -5615,9 +5505,9 @@ spec:
                                           Service is the name of the service to place in the gRPC HealthCheckRequest
                                           (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
 
-
                                           If this is not specified, the default behavior is defined by gRPC.
                                         type: string
+                                        default: ""
                                   httpGet:
                                     description: HTTPGet specifies the http request to perform.
                                     type: object
@@ -5670,7 +5560,8 @@ spec:
                                     type: integer
                                     format: int32
                                   periodSeconds:
-                                    description: How often (in seconds) to perform the probe.
+                                    description: |-
+                                      How often (in seconds) to perform the probe.
                                     type: integer
                                     format: int32
                                   successThreshold:
@@ -5709,33 +5600,6 @@ spec:
                                   More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                 type: object
                                 properties:
-                                  claims:
-                                    description: |-
-                                      Claims lists the names of resources, defined in spec.resourceClaims,
-                                      that are used by this container.
-
-
-                                      This is an alpha field and requires enabling the
-                                      DynamicResourceAllocation feature gate.
-
-
-                                      This field is immutable. It can only be set for containers.
-                                    type: array
-                                    items:
-                                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.
-                                      type: object
-                                      required:
-                                        - name
-                                      properties:
-                                        name:
-                                          description: |-
-                                            Name must match the name of one entry in pod.spec.resourceClaims of
-                                            the Pod where this field is used. It makes that resource available
-                                            inside a container.
-                                          type: string
-                                    x-kubernetes-list-map-keys:
-                                      - name
-                                    x-kubernetes-list-type: map
                                   limits:
                                     description: |-
                                       Limits describes the maximum amount of compute resources allowed.
@@ -5798,6 +5662,10 @@ spec:
                                           description: Capability represent POSIX capabilities type
                                           type: string
                                         x-kubernetes-list-type: atomic
+                                  privileged:
+                                    description: |-
+                                      Run container in privileged mode. This can only be set to explicitly to 'false'
+                                    type: boolean
                                   readOnlyRootFilesystem:
                                     description: |-
                                       Whether this container has a read-only root filesystem.
@@ -5853,7 +5721,6 @@ spec:
                                           type indicates which kind of seccomp profile will be applied.
                                           Valid options are:
 
-
                                           Localhost - a profile defined in a file on the node should be used.
                                           RuntimeDefault - the container runtime default profile should be used.
                                           Unconfined - no profile should be applied.
@@ -5893,8 +5760,6 @@ spec:
                                   grpc:
                                     description: GRPC specifies an action involving a GRPC port.
                                     type: object
-                                    required:
-                                      - port
                                     properties:
                                       port:
                                         description: Port number of the gRPC service. Number must be in the range 1 to 65535.
@@ -5905,9 +5770,9 @@ spec:
                                           Service is the name of the service to place in the gRPC HealthCheckRequest
                                           (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
 
-
                                           If this is not specified, the default behavior is defined by gRPC.
                                         type: string
+                                        default: ""
                                   httpGet:
                                     description: HTTPGet specifies the http request to perform.
                                     type: object
@@ -5960,7 +5825,8 @@ spec:
                                     type: integer
                                     format: int32
                                   periodSeconds:
-                                    description: How often (in seconds) to perform the probe.
+                                    description: |-
+                                      How often (in seconds) to perform the probe.
                                     type: integer
                                     format: int32
                                   successThreshold:
@@ -6053,34 +5919,39 @@ spec:
                                   Cannot be updated.
                                 type: string
                         dnsConfig:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-dnsconfig
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-dnsconfig
                           type: object
                           x-kubernetes-preserve-unknown-fields: true
                         dnsPolicy:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-dnspolicy
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-dnspolicy
                           type: string
                         enableServiceLinks:
-                          description: 'EnableServiceLinks indicates whether information about services should be injected into pod''s environment variables, matching the syntax of Docker links. Optional: Knative defaults this to false.'
+                          description: |-
+                            EnableServiceLinks indicates whether information aboutservices should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Knative defaults this to false.
                           type: boolean
                         hostAliases:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-hostaliases
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-hostaliases
                           type: array
                           items:
-                            description: This is accessible behind a feature flag - kubernetes.podspec-hostaliases
+                            description: |-
+                              This is accessible behind a feature flag - kubernetes.podspec-hostaliases
                             type: object
                             x-kubernetes-preserve-unknown-fields: true
                         hostIPC:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-hostipc
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-hostipc
                           type: boolean
-                          x-kubernetes-preserve-unknown-fields: true
                         hostNetwork:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-hostnetwork
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-hostnetwork
                           type: boolean
-                          x-kubernetes-preserve-unknown-fields: true
                         hostPID:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-hostpid
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-hostpid
                           type: boolean
-                          x-kubernetes-preserve-unknown-fields: true
                         idleTimeoutSeconds:
                           description: |-
                             IdleTimeoutSeconds is the maximum duration in seconds a request will be allowed
@@ -6106,9 +5977,7 @@ spec:
                                   This field is effectively required, but due to backwards compatibility is
                                   allowed to be empty. Instances of this type with an empty value here are
                                   almost certainly wrong.
-                                  TODO: Add other useful fields. apiVersion, kind, uid?
                                   More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                 type: string
                                 default: ""
                             x-kubernetes-map-type: atomic
@@ -6117,33 +5986,23 @@ spec:
                           x-kubernetes-list-type: map
                         initContainers:
                           description: |-
-                            List of initialization containers belonging to the pod.
-                            Init containers are executed in order prior to containers being started. If any
-                            init container fails, the pod is considered to have failed and is handled according
-                            to its restartPolicy. The name for an init container or normal container must be
-                            unique among all containers.
-                            Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
-                            The resourceRequirements of an init container are taken into account during scheduling
-                            by finding the highest request/limit for each resource type, and then using the max of
-                            of that value or the sum of the normal containers. Limits are applied to init containers
-                            in a similar fashion.
-                            Init containers cannot currently be added or removed.
-                            Cannot be updated.
-                            More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
+                            This is accessible behind a feature flag - kubernetes.podspec-init-containers
                           type: array
                           items:
                             description: This is accessible behind a feature flag - kubernetes.podspec-init-containers
                             type: object
                             x-kubernetes-preserve-unknown-fields: true
                         nodeSelector:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-nodeselector
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-nodeselector
                           type: object
-                          x-kubernetes-preserve-unknown-fields: true
+                          additionalProperties:
+                            type: string
                           x-kubernetes-map-type: atomic
                         priorityClassName:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-priorityclassname
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-priorityclassname
                           type: string
-                          x-kubernetes-preserve-unknown-fields: true
                         responseStartTimeoutSeconds:
                           description: |-
                             ResponseStartTimeoutSeconds is the maximum duration in seconds that the request
@@ -6152,15 +6011,16 @@ spec:
                           type: integer
                           format: int64
                         runtimeClassName:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-runtimeclassname
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-runtimeclassname
                           type: string
-                          x-kubernetes-preserve-unknown-fields: true
                         schedulerName:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-schedulername
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-schedulername
                           type: string
-                          x-kubernetes-preserve-unknown-fields: true
                         securityContext:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-securitycontext
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-securitycontext
                           type: object
                           x-kubernetes-preserve-unknown-fields: true
                         serviceAccountName:
@@ -6169,9 +6029,9 @@ spec:
                             More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
                           type: string
                         shareProcessNamespace:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-shareproccessnamespace
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-shareprocessnamespace
                           type: boolean
-                          x-kubernetes-preserve-unknown-fields: true
                         timeoutSeconds:
                           description: |-
                             TimeoutSeconds is the maximum duration in seconds that the request instance
@@ -6183,12 +6043,13 @@ spec:
                           description: This is accessible behind a feature flag - kubernetes.podspec-tolerations
                           type: array
                           items:
-                            description: This is accessible behind a feature flag - kubernetes.podspec-tolerations
+                            description: |-
+                              This is accessible behind a feature flag - kubernetes.podspec-tolerations
                             type: object
                             x-kubernetes-preserve-unknown-fields: true
-                          x-kubernetes-list-type: atomic
                         topologySpreadConstraints:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-topologyspreadconstraints
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-topologyspreadconstraints
                           type: array
                           items:
                             description: This is accessible behind a feature flag - kubernetes.podspec-topologyspreadconstraints
@@ -6264,9 +6125,7 @@ spec:
                                       This field is effectively required, but due to backwards compatibility is
                                       allowed to be empty. Instances of this type with an empty value here are
                                       almost certainly wrong.
-                                      TODO: Add other useful fields. apiVersion, kind, uid?
                                       More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                      TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                     type: string
                                     default: ""
                                   optional:
@@ -6274,7 +6133,13 @@ spec:
                                     type: boolean
                                 x-kubernetes-map-type: atomic
                               emptyDir:
-                                description: This is accessible behind a feature flag - kubernetes.podspec-emptydir
+                                description: |-
+                                  This is accessible behind a feature flag - kubernetes.podspec-volumes-emptydir
+                                type: object
+                                x-kubernetes-preserve-unknown-fields: true
+                              hostPath:
+                                description: |-
+                                  This is accessible behind a feature flag - kubernetes.podspec-volumes-hostpath
                                 type: object
                                 x-kubernetes-preserve-unknown-fields: true
                               name:
@@ -6284,7 +6149,8 @@ spec:
                                   More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                 type: string
                               persistentVolumeClaim:
-                                description: This is accessible behind a feature flag - kubernetes.podspec-persistent-volume-claim
+                                description: |-
+                                  This is accessible behind a feature flag - kubernetes.podspec-persistent-volume-claim
                                 type: object
                                 x-kubernetes-preserve-unknown-fields: true
                               projected:
@@ -6302,10 +6168,14 @@ spec:
                                     type: integer
                                     format: int32
                                   sources:
-                                    description: sources is the list of volume projections
+                                    description: |-
+                                      sources is the list of volume projections. Each entry in this list
+                                      handles one source.
                                     type: array
                                     items:
-                                      description: Projection that may be projected along with other supported volume types
+                                      description: |-
+                                        Projection that may be projected along with other supported volume types.
+                                        Exactly one of these fields must be set.
                                       type: object
                                       properties:
                                         configMap:
@@ -6356,9 +6226,7 @@ spec:
                                                 This field is effectively required, but due to backwards compatibility is
                                                 allowed to be empty. Instances of this type with an empty value here are
                                                 almost certainly wrong.
-                                                TODO: Add other useful fields. apiVersion, kind, uid?
                                                 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                                TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                               type: string
                                               default: ""
                                             optional:
@@ -6475,9 +6343,7 @@ spec:
                                                 This field is effectively required, but due to backwards compatibility is
                                                 allowed to be empty. Instances of this type with an empty value here are
                                                 almost certainly wrong.
-                                                TODO: Add other useful fields. apiVersion, kind, uid?
                                                 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                                TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                               type: string
                                               default: ""
                                             optional:
diff --git a/openshift-knative-operator/cmd/openshift-knative-operator/kodata/knative-serving/latest/2-serving-core.yaml b/openshift-knative-operator/cmd/openshift-knative-operator/kodata/knative-serving/latest/2-serving-core.yaml
index 8c28cc9c13..0b72e10656 100644
--- a/openshift-knative-operator/cmd/openshift-knative-operator/kodata/knative-serving/latest/2-serving-core.yaml
+++ b/openshift-knative-operator/cmd/openshift-knative-operator/kodata/knative-serving/latest/2-serving-core.yaml
@@ -20,7 +20,7 @@ metadata:
   namespace: knative-serving
   labels:
     serving.knative.dev/controller: "true"
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     app.kubernetes.io/name: knative-serving
 rules:
   - apiGroups: [""]
@@ -37,7 +37,7 @@ metadata:
   name: knative-serving-activator-cluster
   labels:
     serving.knative.dev/controller: "true"
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     app.kubernetes.io/name: knative-serving
 rules:
   - apiGroups: [""]
@@ -69,7 +69,7 @@ metadata:
   # (which should be identical, but isn't guaranteed to be installed alongside serving).
   name: knative-serving-aggregated-addressable-resolver
   labels:
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     app.kubernetes.io/name: knative-serving
 aggregationRule:
   clusterRoleSelectors:
@@ -81,7 +81,7 @@ apiVersion: rbac.authorization.k8s.io/v1
 metadata:
   name: knative-serving-addressable-resolver
   labels:
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     app.kubernetes.io/name: knative-serving
     # Labeled to facilitate aggregated cluster roles that act on Addressables.
     duck.knative.dev/addressable: "true"
@@ -120,7 +120,7 @@ metadata:
   name: knative-serving-namespaced-admin
   labels:
     rbac.authorization.k8s.io/aggregate-to-admin: "true"
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     app.kubernetes.io/name: knative-serving
 rules:
   - apiGroups: ["serving.knative.dev"]
@@ -136,7 +136,7 @@ metadata:
   name: knative-serving-namespaced-edit
   labels:
     rbac.authorization.k8s.io/aggregate-to-edit: "true"
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     app.kubernetes.io/name: knative-serving
 rules:
   - apiGroups: ["serving.knative.dev"]
@@ -152,7 +152,7 @@ metadata:
   name: knative-serving-namespaced-view
   labels:
     rbac.authorization.k8s.io/aggregate-to-view: "true"
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     app.kubernetes.io/name: knative-serving
 rules:
   - apiGroups: ["serving.knative.dev", "networking.internal.knative.dev", "autoscaling.internal.knative.dev", "caching.internal.knative.dev"]
@@ -179,7 +179,7 @@ metadata:
   name: knative-serving-core
   labels:
     serving.knative.dev/controller: "true"
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     app.kubernetes.io/name: knative-serving
 rules:
   - apiGroups: [""]
@@ -268,7 +268,7 @@ apiVersion: rbac.authorization.k8s.io/v1
 metadata:
   name: knative-serving-podspecable-binding
   labels:
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     app.kubernetes.io/name: knative-serving
     # Labeled to facilitate aggregated cluster roles that act on PodSpecables.
     duck.knative.dev/podspecable: "true"
@@ -307,7 +307,7 @@ metadata:
   labels:
     app.kubernetes.io/component: controller
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
 ---
 kind: ClusterRole
 apiVersion: rbac.authorization.k8s.io/v1
@@ -315,7 +315,7 @@ metadata:
   name: knative-serving-admin
   labels:
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
 aggregationRule:
   clusterRoleSelectors:
   - matchLabels:
@@ -328,7 +328,7 @@ metadata:
   labels:
     app.kubernetes.io/component: controller
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
 subjects:
   - kind: ServiceAccount
     name: controller
@@ -345,7 +345,7 @@ metadata:
   labels:
     app.kubernetes.io/component: controller
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
 subjects:
   - kind: ServiceAccount
     name: controller
@@ -363,7 +363,7 @@ metadata:
   labels:
     app.kubernetes.io/component: activator
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
 ---
 apiVersion: rbac.authorization.k8s.io/v1
 kind: RoleBinding
@@ -373,7 +373,7 @@ metadata:
   labels:
     app.kubernetes.io/component: activator
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
 subjects:
   - kind: ServiceAccount
     name: activator
@@ -390,7 +390,7 @@ metadata:
   labels:
     app.kubernetes.io/component: activator
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
 subjects:
   - kind: ServiceAccount
     name: activator
@@ -420,7 +420,7 @@ metadata:
   name: images.caching.internal.knative.dev
   labels:
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
 spec:
   group: caching.internal.knative.dev
@@ -488,9 +488,7 @@ spec:
                           This field is effectively required, but due to backwards compatibility is
                           allowed to be empty. Instances of this type with an empty value here are
                           almost certainly wrong.
-                          TODO: Add other useful fields. apiVersion, kind, uid?
                           More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                          TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                         type: string
                         default: ""
                     x-kubernetes-map-type: atomic
@@ -596,7 +594,7 @@ metadata:
   labels:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: networking
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
 spec:
   group: networking.internal.knative.dev
@@ -781,7 +779,7 @@ metadata:
   name: configurations.serving.knative.dev
   labels:
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
     duck.knative.dev/podspecable: "true"
 spec:
@@ -977,9 +975,7 @@ spec:
                                                 This field is effectively required, but due to backwards compatibility is
                                                 allowed to be empty. Instances of this type with an empty value here are
                                                 almost certainly wrong.
-                                                TODO: Add other useful fields. apiVersion, kind, uid?
                                                 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                                TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                               type: string
                                               default: ""
                                             optional:
@@ -987,15 +983,17 @@ spec:
                                               type: boolean
                                           x-kubernetes-map-type: atomic
                                         fieldRef:
-                                          description: This is accessible behind a feature flag - kubernetes.podspec-fieldref
+                                          description: |-
+                                            This is accessible behind a feature flag - kubernetes.podspec-fieldref
                                           type: object
-                                          x-kubernetes-preserve-unknown-fields: true
                                           x-kubernetes-map-type: atomic
+                                          x-kubernetes-preserve-unknown-fields: true
                                         resourceFieldRef:
-                                          description: This is accessible behind a feature flag - kubernetes.podspec-fieldref
+                                          description: |-
+                                            This is accessible behind a feature flag - kubernetes.podspec-fieldref
                                           type: object
-                                          x-kubernetes-preserve-unknown-fields: true
                                           x-kubernetes-map-type: atomic
+                                          x-kubernetes-preserve-unknown-fields: true
                                         secretKeyRef:
                                           description: Selects a key of a secret in the pod's namespace
                                           type: object
@@ -1011,9 +1009,7 @@ spec:
                                                 This field is effectively required, but due to backwards compatibility is
                                                 allowed to be empty. Instances of this type with an empty value here are
                                                 almost certainly wrong.
-                                                TODO: Add other useful fields. apiVersion, kind, uid?
                                                 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                                TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                               type: string
                                               default: ""
                                             optional:
@@ -1046,9 +1042,7 @@ spec:
                                             This field is effectively required, but due to backwards compatibility is
                                             allowed to be empty. Instances of this type with an empty value here are
                                             almost certainly wrong.
-                                            TODO: Add other useful fields. apiVersion, kind, uid?
                                             More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                            TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                           type: string
                                           default: ""
                                         optional:
@@ -1068,9 +1062,7 @@ spec:
                                             This field is effectively required, but due to backwards compatibility is
                                             allowed to be empty. Instances of this type with an empty value here are
                                             almost certainly wrong.
-                                            TODO: Add other useful fields. apiVersion, kind, uid?
                                             More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                            TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                           type: string
                                           default: ""
                                         optional:
@@ -1125,8 +1117,6 @@ spec:
                                   grpc:
                                     description: GRPC specifies an action involving a GRPC port.
                                     type: object
-                                    required:
-                                      - port
                                     properties:
                                       port:
                                         description: Port number of the gRPC service. Number must be in the range 1 to 65535.
@@ -1137,9 +1127,9 @@ spec:
                                           Service is the name of the service to place in the gRPC HealthCheckRequest
                                           (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
 
-
                                           If this is not specified, the default behavior is defined by gRPC.
                                         type: string
+                                        default: ""
                                   httpGet:
                                     description: HTTPGet specifies the http request to perform.
                                     type: object
@@ -1192,7 +1182,8 @@ spec:
                                     type: integer
                                     format: int32
                                   periodSeconds:
-                                    description: How often (in seconds) to perform the probe.
+                                    description: |-
+                                      How often (in seconds) to perform the probe.
                                     type: integer
                                     format: int32
                                   successThreshold:
@@ -1243,8 +1234,6 @@ spec:
                                 items:
                                   description: ContainerPort represents a network port in a single container.
                                   type: object
-                                  required:
-                                    - containerPort
                                   properties:
                                     containerPort:
                                       description: |-
@@ -1264,10 +1253,6 @@ spec:
                                         Defaults to "TCP".
                                       type: string
                                       default: TCP
-                                x-kubernetes-list-map-keys:
-                                  - containerPort
-                                  - protocol
-                                x-kubernetes-list-type: map
                               readinessProbe:
                                 description: |-
                                   Periodic probe of container service readiness.
@@ -1300,8 +1285,6 @@ spec:
                                   grpc:
                                     description: GRPC specifies an action involving a GRPC port.
                                     type: object
-                                    required:
-                                      - port
                                     properties:
                                       port:
                                         description: Port number of the gRPC service. Number must be in the range 1 to 65535.
@@ -1312,9 +1295,9 @@ spec:
                                           Service is the name of the service to place in the gRPC HealthCheckRequest
                                           (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
 
-
                                           If this is not specified, the default behavior is defined by gRPC.
                                         type: string
+                                        default: ""
                                   httpGet:
                                     description: HTTPGet specifies the http request to perform.
                                     type: object
@@ -1367,7 +1350,8 @@ spec:
                                     type: integer
                                     format: int32
                                   periodSeconds:
-                                    description: How often (in seconds) to perform the probe.
+                                    description: |-
+                                      How often (in seconds) to perform the probe.
                                     type: integer
                                     format: int32
                                   successThreshold:
@@ -1406,33 +1390,6 @@ spec:
                                   More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                 type: object
                                 properties:
-                                  claims:
-                                    description: |-
-                                      Claims lists the names of resources, defined in spec.resourceClaims,
-                                      that are used by this container.
-
-
-                                      This is an alpha field and requires enabling the
-                                      DynamicResourceAllocation feature gate.
-
-
-                                      This field is immutable. It can only be set for containers.
-                                    type: array
-                                    items:
-                                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.
-                                      type: object
-                                      required:
-                                        - name
-                                      properties:
-                                        name:
-                                          description: |-
-                                            Name must match the name of one entry in pod.spec.resourceClaims of
-                                            the Pod where this field is used. It makes that resource available
-                                            inside a container.
-                                          type: string
-                                    x-kubernetes-list-map-keys:
-                                      - name
-                                    x-kubernetes-list-type: map
                                   limits:
                                     description: |-
                                       Limits describes the maximum amount of compute resources allowed.
@@ -1495,6 +1452,10 @@ spec:
                                           description: Capability represent POSIX capabilities type
                                           type: string
                                         x-kubernetes-list-type: atomic
+                                  privileged:
+                                    description: |-
+                                      Run container in privileged mode. This can only be set to explicitly to 'false'
+                                    type: boolean
                                   readOnlyRootFilesystem:
                                     description: |-
                                       Whether this container has a read-only root filesystem.
@@ -1550,7 +1511,6 @@ spec:
                                           type indicates which kind of seccomp profile will be applied.
                                           Valid options are:
 
-
                                           Localhost - a profile defined in a file on the node should be used.
                                           RuntimeDefault - the container runtime default profile should be used.
                                           Unconfined - no profile should be applied.
@@ -1590,8 +1550,6 @@ spec:
                                   grpc:
                                     description: GRPC specifies an action involving a GRPC port.
                                     type: object
-                                    required:
-                                      - port
                                     properties:
                                       port:
                                         description: Port number of the gRPC service. Number must be in the range 1 to 65535.
@@ -1602,9 +1560,9 @@ spec:
                                           Service is the name of the service to place in the gRPC HealthCheckRequest
                                           (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
 
-
                                           If this is not specified, the default behavior is defined by gRPC.
                                         type: string
+                                        default: ""
                                   httpGet:
                                     description: HTTPGet specifies the http request to perform.
                                     type: object
@@ -1657,7 +1615,8 @@ spec:
                                     type: integer
                                     format: int32
                                   periodSeconds:
-                                    description: How often (in seconds) to perform the probe.
+                                    description: |-
+                                      How often (in seconds) to perform the probe.
                                     type: integer
                                     format: int32
                                   successThreshold:
@@ -1750,34 +1709,39 @@ spec:
                                   Cannot be updated.
                                 type: string
                         dnsConfig:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-dnsconfig
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-dnsconfig
                           type: object
                           x-kubernetes-preserve-unknown-fields: true
                         dnsPolicy:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-dnspolicy
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-dnspolicy
                           type: string
                         enableServiceLinks:
-                          description: 'EnableServiceLinks indicates whether information about services should be injected into pod''s environment variables, matching the syntax of Docker links. Optional: Knative defaults this to false.'
+                          description: |-
+                            EnableServiceLinks indicates whether information aboutservices should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Knative defaults this to false.
                           type: boolean
                         hostAliases:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-hostaliases
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-hostaliases
                           type: array
                           items:
-                            description: This is accessible behind a feature flag - kubernetes.podspec-hostaliases
+                            description: |-
+                              This is accessible behind a feature flag - kubernetes.podspec-hostaliases
                             type: object
                             x-kubernetes-preserve-unknown-fields: true
                         hostIPC:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-hostipc
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-hostipc
                           type: boolean
-                          x-kubernetes-preserve-unknown-fields: true
                         hostNetwork:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-hostnetwork
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-hostnetwork
                           type: boolean
-                          x-kubernetes-preserve-unknown-fields: true
                         hostPID:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-hostpid
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-hostpid
                           type: boolean
-                          x-kubernetes-preserve-unknown-fields: true
                         idleTimeoutSeconds:
                           description: |-
                             IdleTimeoutSeconds is the maximum duration in seconds a request will be allowed
@@ -1803,9 +1767,7 @@ spec:
                                   This field is effectively required, but due to backwards compatibility is
                                   allowed to be empty. Instances of this type with an empty value here are
                                   almost certainly wrong.
-                                  TODO: Add other useful fields. apiVersion, kind, uid?
                                   More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                 type: string
                                 default: ""
                             x-kubernetes-map-type: atomic
@@ -1814,33 +1776,23 @@ spec:
                           x-kubernetes-list-type: map
                         initContainers:
                           description: |-
-                            List of initialization containers belonging to the pod.
-                            Init containers are executed in order prior to containers being started. If any
-                            init container fails, the pod is considered to have failed and is handled according
-                            to its restartPolicy. The name for an init container or normal container must be
-                            unique among all containers.
-                            Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
-                            The resourceRequirements of an init container are taken into account during scheduling
-                            by finding the highest request/limit for each resource type, and then using the max of
-                            of that value or the sum of the normal containers. Limits are applied to init containers
-                            in a similar fashion.
-                            Init containers cannot currently be added or removed.
-                            Cannot be updated.
-                            More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
+                            This is accessible behind a feature flag - kubernetes.podspec-init-containers
                           type: array
                           items:
                             description: This is accessible behind a feature flag - kubernetes.podspec-init-containers
                             type: object
                             x-kubernetes-preserve-unknown-fields: true
                         nodeSelector:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-nodeselector
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-nodeselector
                           type: object
-                          x-kubernetes-preserve-unknown-fields: true
+                          additionalProperties:
+                            type: string
                           x-kubernetes-map-type: atomic
                         priorityClassName:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-priorityclassname
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-priorityclassname
                           type: string
-                          x-kubernetes-preserve-unknown-fields: true
                         responseStartTimeoutSeconds:
                           description: |-
                             ResponseStartTimeoutSeconds is the maximum duration in seconds that the request
@@ -1849,15 +1801,16 @@ spec:
                           type: integer
                           format: int64
                         runtimeClassName:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-runtimeclassname
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-runtimeclassname
                           type: string
-                          x-kubernetes-preserve-unknown-fields: true
                         schedulerName:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-schedulername
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-schedulername
                           type: string
-                          x-kubernetes-preserve-unknown-fields: true
                         securityContext:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-securitycontext
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-securitycontext
                           type: object
                           x-kubernetes-preserve-unknown-fields: true
                         serviceAccountName:
@@ -1866,9 +1819,9 @@ spec:
                             More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
                           type: string
                         shareProcessNamespace:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-shareproccessnamespace
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-shareprocessnamespace
                           type: boolean
-                          x-kubernetes-preserve-unknown-fields: true
                         timeoutSeconds:
                           description: |-
                             TimeoutSeconds is the maximum duration in seconds that the request instance
@@ -1880,12 +1833,13 @@ spec:
                           description: This is accessible behind a feature flag - kubernetes.podspec-tolerations
                           type: array
                           items:
-                            description: This is accessible behind a feature flag - kubernetes.podspec-tolerations
+                            description: |-
+                              This is accessible behind a feature flag - kubernetes.podspec-tolerations
                             type: object
                             x-kubernetes-preserve-unknown-fields: true
-                          x-kubernetes-list-type: atomic
                         topologySpreadConstraints:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-topologyspreadconstraints
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-topologyspreadconstraints
                           type: array
                           items:
                             description: This is accessible behind a feature flag - kubernetes.podspec-topologyspreadconstraints
@@ -1961,9 +1915,7 @@ spec:
                                       This field is effectively required, but due to backwards compatibility is
                                       allowed to be empty. Instances of this type with an empty value here are
                                       almost certainly wrong.
-                                      TODO: Add other useful fields. apiVersion, kind, uid?
                                       More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                      TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                     type: string
                                     default: ""
                                   optional:
@@ -1971,7 +1923,13 @@ spec:
                                     type: boolean
                                 x-kubernetes-map-type: atomic
                               emptyDir:
-                                description: This is accessible behind a feature flag - kubernetes.podspec-emptydir
+                                description: |-
+                                  This is accessible behind a feature flag - kubernetes.podspec-volumes-emptydir
+                                type: object
+                                x-kubernetes-preserve-unknown-fields: true
+                              hostPath:
+                                description: |-
+                                  This is accessible behind a feature flag - kubernetes.podspec-volumes-hostpath
                                 type: object
                                 x-kubernetes-preserve-unknown-fields: true
                               name:
@@ -1981,7 +1939,8 @@ spec:
                                   More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                 type: string
                               persistentVolumeClaim:
-                                description: This is accessible behind a feature flag - kubernetes.podspec-persistent-volume-claim
+                                description: |-
+                                  This is accessible behind a feature flag - kubernetes.podspec-persistent-volume-claim
                                 type: object
                                 x-kubernetes-preserve-unknown-fields: true
                               projected:
@@ -1999,10 +1958,14 @@ spec:
                                     type: integer
                                     format: int32
                                   sources:
-                                    description: sources is the list of volume projections
+                                    description: |-
+                                      sources is the list of volume projections. Each entry in this list
+                                      handles one source.
                                     type: array
                                     items:
-                                      description: Projection that may be projected along with other supported volume types
+                                      description: |-
+                                        Projection that may be projected along with other supported volume types.
+                                        Exactly one of these fields must be set.
                                       type: object
                                       properties:
                                         configMap:
@@ -2053,9 +2016,7 @@ spec:
                                                 This field is effectively required, but due to backwards compatibility is
                                                 allowed to be empty. Instances of this type with an empty value here are
                                                 almost certainly wrong.
-                                                TODO: Add other useful fields. apiVersion, kind, uid?
                                                 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                                TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                               type: string
                                               default: ""
                                             optional:
@@ -2172,9 +2133,7 @@ spec:
                                                 This field is effectively required, but due to backwards compatibility is
                                                 allowed to be empty. Instances of this type with an empty value here are
                                                 almost certainly wrong.
-                                                TODO: Add other useful fields. apiVersion, kind, uid?
                                                 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                                TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                               type: string
                                               default: ""
                                             optional:
@@ -2362,7 +2321,7 @@ metadata:
   labels:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: networking
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
 spec:
   group: networking.internal.knative.dev
@@ -2438,7 +2397,7 @@ metadata:
   name: domainmappings.serving.knative.dev
   labels:
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
 spec:
   group: serving.knative.dev
@@ -2492,13 +2451,11 @@ spec:
                   description: |-
                     Ref specifies the target of the Domain Mapping.
 
-
                     The object identified by the Ref must be an Addressable with a URL of the
                     form `{name}.{namespace}.{domain}` where `{domain}` is the cluster domain,
                     and `{name}` and `{namespace}` are the name and namespace of a Kubernetes
                     Service.
 
-
                     This contract is satisfied by Knative types such as Knative Services and
                     Knative Routes, and by Kubernetes Services.
                   type: object
@@ -2651,7 +2608,7 @@ metadata:
   labels:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: networking
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
 spec:
   group: networking.internal.knative.dev
@@ -2668,7 +2625,6 @@ spec:
             by a backend. An Ingress can be configured to give services externally-reachable URLs, load
             balance traffic, offer name based virtual hosting, etc.
 
-
             This is heavily based on K8s Ingress https://godoc.org/k8s.io/api/networking/v1beta1#Ingress
             which some highlighted modifications.
           type: object
@@ -2740,7 +2696,6 @@ spec:
                             description: |-
                               A collection of paths that map requests to backends.
 
-
                               If they are multiple matching paths, the first match takes precedence.
                             type: array
                             items:
@@ -2756,7 +2711,6 @@ spec:
                                     AppendHeaders allow specifying additional HTTP headers to add
                                     before forwarding a request to the destination service.
 
-
                                     NOTE: This differs from K8s Ingress which doesn't allow header appending.
                                   type: object
                                   additionalProperties:
@@ -2791,7 +2745,6 @@ spec:
                                   description: |-
                                     RewriteHost rewrites the incoming request's host header.
 
-
                                     This field is currently experimental and not supported by all Ingress
                                     implementations.
                                   type: string
@@ -2813,7 +2766,6 @@ spec:
                                           AppendHeaders allow specifying additional HTTP headers to add
                                           before forwarding a request to the destination service.
 
-
                                           NOTE: This differs from K8s Ingress which doesn't allow header appending.
                                         type: object
                                         additionalProperties:
@@ -2823,7 +2775,6 @@ spec:
                                           Specifies the split percentage, a number between 0 and 100.  If
                                           only one split is specified, we default to 100.
 
-
                                           NOTE: This differs from K8s Ingress to allow percentage split.
                                         type: integer
                                       serviceName:
@@ -2833,7 +2784,6 @@ spec:
                                         description: |-
                                           Specifies the namespace of the referenced service.
 
-
                                           NOTE: This differs from K8s Ingress to allow routing to different namespaces.
                                         type: string
                                       servicePort:
@@ -2958,7 +2908,6 @@ spec:
                             description: |-
                               DomainInternal is set if there is a cluster-local DNS name to access the Ingress.
 
-
                               NOTE: This differs from K8s Ingress, since we also desire to have a cluster-local
                                     DNS name to allow routing in case of not having a mesh.
                             type: string
@@ -2994,7 +2943,6 @@ spec:
                             description: |-
                               DomainInternal is set if there is a cluster-local DNS name to access the Ingress.
 
-
                               NOTE: This differs from K8s Ingress, since we also desire to have a cluster-local
                                     DNS name to allow routing in case of not having a mesh.
                             type: string
@@ -3047,7 +2995,7 @@ metadata:
   name: metrics.autoscaling.internal.knative.dev
   labels:
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
 spec:
   group: autoscaling.internal.knative.dev
@@ -3190,7 +3138,7 @@ metadata:
   name: podautoscalers.autoscaling.internal.knative.dev
   labels:
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
 spec:
   group: autoscaling.internal.knative.dev
@@ -3390,7 +3338,7 @@ metadata:
   name: revisions.serving.knative.dev
   labels:
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
 spec:
   group: serving.knative.dev
@@ -3437,7 +3385,6 @@ spec:
             references a container image. Revisions are created by updates to a
             Configuration.
 
-
             See also: https://github.com/knative/serving/blob/main/docs/spec/overview.md#revision
           type: object
           properties:
@@ -3563,9 +3510,7 @@ spec:
                                         This field is effectively required, but due to backwards compatibility is
                                         allowed to be empty. Instances of this type with an empty value here are
                                         almost certainly wrong.
-                                        TODO: Add other useful fields. apiVersion, kind, uid?
                                         More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                        TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                       type: string
                                       default: ""
                                     optional:
@@ -3573,15 +3518,17 @@ spec:
                                       type: boolean
                                   x-kubernetes-map-type: atomic
                                 fieldRef:
-                                  description: This is accessible behind a feature flag - kubernetes.podspec-fieldref
+                                  description: |-
+                                    This is accessible behind a feature flag - kubernetes.podspec-fieldref
                                   type: object
-                                  x-kubernetes-preserve-unknown-fields: true
                                   x-kubernetes-map-type: atomic
+                                  x-kubernetes-preserve-unknown-fields: true
                                 resourceFieldRef:
-                                  description: This is accessible behind a feature flag - kubernetes.podspec-fieldref
+                                  description: |-
+                                    This is accessible behind a feature flag - kubernetes.podspec-fieldref
                                   type: object
-                                  x-kubernetes-preserve-unknown-fields: true
                                   x-kubernetes-map-type: atomic
+                                  x-kubernetes-preserve-unknown-fields: true
                                 secretKeyRef:
                                   description: Selects a key of a secret in the pod's namespace
                                   type: object
@@ -3597,9 +3544,7 @@ spec:
                                         This field is effectively required, but due to backwards compatibility is
                                         allowed to be empty. Instances of this type with an empty value here are
                                         almost certainly wrong.
-                                        TODO: Add other useful fields. apiVersion, kind, uid?
                                         More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                        TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                       type: string
                                       default: ""
                                     optional:
@@ -3632,9 +3577,7 @@ spec:
                                     This field is effectively required, but due to backwards compatibility is
                                     allowed to be empty. Instances of this type with an empty value here are
                                     almost certainly wrong.
-                                    TODO: Add other useful fields. apiVersion, kind, uid?
                                     More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                    TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                   type: string
                                   default: ""
                                 optional:
@@ -3654,9 +3597,7 @@ spec:
                                     This field is effectively required, but due to backwards compatibility is
                                     allowed to be empty. Instances of this type with an empty value here are
                                     almost certainly wrong.
-                                    TODO: Add other useful fields. apiVersion, kind, uid?
                                     More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                    TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                   type: string
                                   default: ""
                                 optional:
@@ -3711,8 +3652,6 @@ spec:
                           grpc:
                             description: GRPC specifies an action involving a GRPC port.
                             type: object
-                            required:
-                              - port
                             properties:
                               port:
                                 description: Port number of the gRPC service. Number must be in the range 1 to 65535.
@@ -3723,9 +3662,9 @@ spec:
                                   Service is the name of the service to place in the gRPC HealthCheckRequest
                                   (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
 
-
                                   If this is not specified, the default behavior is defined by gRPC.
                                 type: string
+                                default: ""
                           httpGet:
                             description: HTTPGet specifies the http request to perform.
                             type: object
@@ -3778,7 +3717,8 @@ spec:
                             type: integer
                             format: int32
                           periodSeconds:
-                            description: How often (in seconds) to perform the probe.
+                            description: |-
+                              How often (in seconds) to perform the probe.
                             type: integer
                             format: int32
                           successThreshold:
@@ -3829,8 +3769,6 @@ spec:
                         items:
                           description: ContainerPort represents a network port in a single container.
                           type: object
-                          required:
-                            - containerPort
                           properties:
                             containerPort:
                               description: |-
@@ -3850,10 +3788,6 @@ spec:
                                 Defaults to "TCP".
                               type: string
                               default: TCP
-                        x-kubernetes-list-map-keys:
-                          - containerPort
-                          - protocol
-                        x-kubernetes-list-type: map
                       readinessProbe:
                         description: |-
                           Periodic probe of container service readiness.
@@ -3886,8 +3820,6 @@ spec:
                           grpc:
                             description: GRPC specifies an action involving a GRPC port.
                             type: object
-                            required:
-                              - port
                             properties:
                               port:
                                 description: Port number of the gRPC service. Number must be in the range 1 to 65535.
@@ -3898,9 +3830,9 @@ spec:
                                   Service is the name of the service to place in the gRPC HealthCheckRequest
                                   (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
 
-
                                   If this is not specified, the default behavior is defined by gRPC.
                                 type: string
+                                default: ""
                           httpGet:
                             description: HTTPGet specifies the http request to perform.
                             type: object
@@ -3953,7 +3885,8 @@ spec:
                             type: integer
                             format: int32
                           periodSeconds:
-                            description: How often (in seconds) to perform the probe.
+                            description: |-
+                              How often (in seconds) to perform the probe.
                             type: integer
                             format: int32
                           successThreshold:
@@ -3992,33 +3925,6 @@ spec:
                           More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                         type: object
                         properties:
-                          claims:
-                            description: |-
-                              Claims lists the names of resources, defined in spec.resourceClaims,
-                              that are used by this container.
-
-
-                              This is an alpha field and requires enabling the
-                              DynamicResourceAllocation feature gate.
-
-
-                              This field is immutable. It can only be set for containers.
-                            type: array
-                            items:
-                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
-                              type: object
-                              required:
-                                - name
-                              properties:
-                                name:
-                                  description: |-
-                                    Name must match the name of one entry in pod.spec.resourceClaims of
-                                    the Pod where this field is used. It makes that resource available
-                                    inside a container.
-                                  type: string
-                            x-kubernetes-list-map-keys:
-                              - name
-                            x-kubernetes-list-type: map
                           limits:
                             description: |-
                               Limits describes the maximum amount of compute resources allowed.
@@ -4081,6 +3987,10 @@ spec:
                                   description: Capability represent POSIX capabilities type
                                   type: string
                                 x-kubernetes-list-type: atomic
+                          privileged:
+                            description: |-
+                              Run container in privileged mode. This can only be set to explicitly to 'false'
+                            type: boolean
                           readOnlyRootFilesystem:
                             description: |-
                               Whether this container has a read-only root filesystem.
@@ -4136,7 +4046,6 @@ spec:
                                   type indicates which kind of seccomp profile will be applied.
                                   Valid options are:
 
-
                                   Localhost - a profile defined in a file on the node should be used.
                                   RuntimeDefault - the container runtime default profile should be used.
                                   Unconfined - no profile should be applied.
@@ -4176,8 +4085,6 @@ spec:
                           grpc:
                             description: GRPC specifies an action involving a GRPC port.
                             type: object
-                            required:
-                              - port
                             properties:
                               port:
                                 description: Port number of the gRPC service. Number must be in the range 1 to 65535.
@@ -4188,9 +4095,9 @@ spec:
                                   Service is the name of the service to place in the gRPC HealthCheckRequest
                                   (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
 
-
                                   If this is not specified, the default behavior is defined by gRPC.
                                 type: string
+                                default: ""
                           httpGet:
                             description: HTTPGet specifies the http request to perform.
                             type: object
@@ -4243,7 +4150,8 @@ spec:
                             type: integer
                             format: int32
                           periodSeconds:
-                            description: How often (in seconds) to perform the probe.
+                            description: |-
+                              How often (in seconds) to perform the probe.
                             type: integer
                             format: int32
                           successThreshold:
@@ -4336,34 +4244,39 @@ spec:
                           Cannot be updated.
                         type: string
                 dnsConfig:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-dnsconfig
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-dnsconfig
                   type: object
                   x-kubernetes-preserve-unknown-fields: true
                 dnsPolicy:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-dnspolicy
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-dnspolicy
                   type: string
                 enableServiceLinks:
-                  description: 'EnableServiceLinks indicates whether information about services should be injected into pod''s environment variables, matching the syntax of Docker links. Optional: Knative defaults this to false.'
+                  description: |-
+                    EnableServiceLinks indicates whether information aboutservices should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Knative defaults this to false.
                   type: boolean
                 hostAliases:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-hostaliases
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-hostaliases
                   type: array
                   items:
-                    description: This is accessible behind a feature flag - kubernetes.podspec-hostaliases
+                    description: |-
+                      This is accessible behind a feature flag - kubernetes.podspec-hostaliases
                     type: object
                     x-kubernetes-preserve-unknown-fields: true
                 hostIPC:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-hostipc
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-hostipc
                   type: boolean
-                  x-kubernetes-preserve-unknown-fields: true
                 hostNetwork:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-hostnetwork
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-hostnetwork
                   type: boolean
-                  x-kubernetes-preserve-unknown-fields: true
                 hostPID:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-hostpid
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-hostpid
                   type: boolean
-                  x-kubernetes-preserve-unknown-fields: true
                 idleTimeoutSeconds:
                   description: |-
                     IdleTimeoutSeconds is the maximum duration in seconds a request will be allowed
@@ -4389,9 +4302,7 @@ spec:
                           This field is effectively required, but due to backwards compatibility is
                           allowed to be empty. Instances of this type with an empty value here are
                           almost certainly wrong.
-                          TODO: Add other useful fields. apiVersion, kind, uid?
                           More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                          TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                         type: string
                         default: ""
                     x-kubernetes-map-type: atomic
@@ -4400,33 +4311,23 @@ spec:
                   x-kubernetes-list-type: map
                 initContainers:
                   description: |-
-                    List of initialization containers belonging to the pod.
-                    Init containers are executed in order prior to containers being started. If any
-                    init container fails, the pod is considered to have failed and is handled according
-                    to its restartPolicy. The name for an init container or normal container must be
-                    unique among all containers.
-                    Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
-                    The resourceRequirements of an init container are taken into account during scheduling
-                    by finding the highest request/limit for each resource type, and then using the max of
-                    of that value or the sum of the normal containers. Limits are applied to init containers
-                    in a similar fashion.
-                    Init containers cannot currently be added or removed.
-                    Cannot be updated.
-                    More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
+                    This is accessible behind a feature flag - kubernetes.podspec-init-containers
                   type: array
                   items:
                     description: This is accessible behind a feature flag - kubernetes.podspec-init-containers
                     type: object
                     x-kubernetes-preserve-unknown-fields: true
                 nodeSelector:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-nodeselector
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-nodeselector
                   type: object
-                  x-kubernetes-preserve-unknown-fields: true
+                  additionalProperties:
+                    type: string
                   x-kubernetes-map-type: atomic
                 priorityClassName:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-priorityclassname
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-priorityclassname
                   type: string
-                  x-kubernetes-preserve-unknown-fields: true
                 responseStartTimeoutSeconds:
                   description: |-
                     ResponseStartTimeoutSeconds is the maximum duration in seconds that the request
@@ -4435,15 +4336,16 @@ spec:
                   type: integer
                   format: int64
                 runtimeClassName:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-runtimeclassname
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-runtimeclassname
                   type: string
-                  x-kubernetes-preserve-unknown-fields: true
                 schedulerName:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-schedulername
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-schedulername
                   type: string
-                  x-kubernetes-preserve-unknown-fields: true
                 securityContext:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-securitycontext
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-securitycontext
                   type: object
                   x-kubernetes-preserve-unknown-fields: true
                 serviceAccountName:
@@ -4452,9 +4354,9 @@ spec:
                     More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
                   type: string
                 shareProcessNamespace:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-shareproccessnamespace
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-shareprocessnamespace
                   type: boolean
-                  x-kubernetes-preserve-unknown-fields: true
                 timeoutSeconds:
                   description: |-
                     TimeoutSeconds is the maximum duration in seconds that the request instance
@@ -4466,12 +4368,13 @@ spec:
                   description: This is accessible behind a feature flag - kubernetes.podspec-tolerations
                   type: array
                   items:
-                    description: This is accessible behind a feature flag - kubernetes.podspec-tolerations
+                    description: |-
+                      This is accessible behind a feature flag - kubernetes.podspec-tolerations
                     type: object
                     x-kubernetes-preserve-unknown-fields: true
-                  x-kubernetes-list-type: atomic
                 topologySpreadConstraints:
-                  description: This is accessible behind a feature flag - kubernetes.podspec-topologyspreadconstraints
+                  description: |-
+                    This is accessible behind a feature flag - kubernetes.podspec-topologyspreadconstraints
                   type: array
                   items:
                     description: This is accessible behind a feature flag - kubernetes.podspec-topologyspreadconstraints
@@ -4547,9 +4450,7 @@ spec:
                               This field is effectively required, but due to backwards compatibility is
                               allowed to be empty. Instances of this type with an empty value here are
                               almost certainly wrong.
-                              TODO: Add other useful fields. apiVersion, kind, uid?
                               More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                              TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                             type: string
                             default: ""
                           optional:
@@ -4557,7 +4458,13 @@ spec:
                             type: boolean
                         x-kubernetes-map-type: atomic
                       emptyDir:
-                        description: This is accessible behind a feature flag - kubernetes.podspec-emptydir
+                        description: |-
+                          This is accessible behind a feature flag - kubernetes.podspec-volumes-emptydir
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      hostPath:
+                        description: |-
+                          This is accessible behind a feature flag - kubernetes.podspec-volumes-hostpath
                         type: object
                         x-kubernetes-preserve-unknown-fields: true
                       name:
@@ -4567,7 +4474,8 @@ spec:
                           More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                         type: string
                       persistentVolumeClaim:
-                        description: This is accessible behind a feature flag - kubernetes.podspec-persistent-volume-claim
+                        description: |-
+                          This is accessible behind a feature flag - kubernetes.podspec-persistent-volume-claim
                         type: object
                         x-kubernetes-preserve-unknown-fields: true
                       projected:
@@ -4585,10 +4493,14 @@ spec:
                             type: integer
                             format: int32
                           sources:
-                            description: sources is the list of volume projections
+                            description: |-
+                              sources is the list of volume projections. Each entry in this list
+                              handles one source.
                             type: array
                             items:
-                              description: Projection that may be projected along with other supported volume types
+                              description: |-
+                                Projection that may be projected along with other supported volume types.
+                                Exactly one of these fields must be set.
                               type: object
                               properties:
                                 configMap:
@@ -4639,9 +4551,7 @@ spec:
                                         This field is effectively required, but due to backwards compatibility is
                                         allowed to be empty. Instances of this type with an empty value here are
                                         almost certainly wrong.
-                                        TODO: Add other useful fields. apiVersion, kind, uid?
                                         More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                        TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                       type: string
                                       default: ""
                                     optional:
@@ -4758,9 +4668,7 @@ spec:
                                         This field is effectively required, but due to backwards compatibility is
                                         allowed to be empty. Instances of this type with an empty value here are
                                         almost certainly wrong.
-                                        TODO: Add other useful fields. apiVersion, kind, uid?
                                         More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                        TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                       type: string
                                       default: ""
                                     optional:
@@ -4986,7 +4894,7 @@ metadata:
   name: routes.serving.knative.dev
   labels:
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
     duck.knative.dev/addressable: "true"
 spec:
@@ -5256,7 +5164,7 @@ metadata:
   labels:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: networking
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
 spec:
   group: networking.internal.knative.dev
@@ -5329,7 +5237,6 @@ spec:
                         the event) or if no container name is specified "spec.containers[2]" (container with
                         index 2 in this pod). This syntax is chosen only to have some well-defined way of
                         referencing a part of an object.
-                        TODO: this design is not final and this field is subject to change in the future.
                       type: string
                     kind:
                       description: |-
@@ -5480,7 +5387,7 @@ metadata:
   name: services.serving.knative.dev
   labels:
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     knative.dev/crd-install: "true"
     duck.knative.dev/addressable: "true"
     duck.knative.dev/podspecable: "true"
@@ -5531,11 +5438,9 @@ spec:
             underlying Routes and Configurations (much as a kubernetes Deployment
             orchestrates ReplicaSets), and its usage is optional but recommended.
 
-
             The Service's controller will track the statuses of its owned Configuration
             and Route, reflecting their statuses and conditions as its own.
 
-
             See also: https://github.com/knative/serving/blob/main/docs/spec/overview.md#service
           type: object
           properties:
@@ -5696,9 +5601,7 @@ spec:
                                                 This field is effectively required, but due to backwards compatibility is
                                                 allowed to be empty. Instances of this type with an empty value here are
                                                 almost certainly wrong.
-                                                TODO: Add other useful fields. apiVersion, kind, uid?
                                                 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                                TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                               type: string
                                               default: ""
                                             optional:
@@ -5706,15 +5609,17 @@ spec:
                                               type: boolean
                                           x-kubernetes-map-type: atomic
                                         fieldRef:
-                                          description: This is accessible behind a feature flag - kubernetes.podspec-fieldref
+                                          description: |-
+                                            This is accessible behind a feature flag - kubernetes.podspec-fieldref
                                           type: object
-                                          x-kubernetes-preserve-unknown-fields: true
                                           x-kubernetes-map-type: atomic
+                                          x-kubernetes-preserve-unknown-fields: true
                                         resourceFieldRef:
-                                          description: This is accessible behind a feature flag - kubernetes.podspec-fieldref
+                                          description: |-
+                                            This is accessible behind a feature flag - kubernetes.podspec-fieldref
                                           type: object
-                                          x-kubernetes-preserve-unknown-fields: true
                                           x-kubernetes-map-type: atomic
+                                          x-kubernetes-preserve-unknown-fields: true
                                         secretKeyRef:
                                           description: Selects a key of a secret in the pod's namespace
                                           type: object
@@ -5730,9 +5635,7 @@ spec:
                                                 This field is effectively required, but due to backwards compatibility is
                                                 allowed to be empty. Instances of this type with an empty value here are
                                                 almost certainly wrong.
-                                                TODO: Add other useful fields. apiVersion, kind, uid?
                                                 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                                TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                               type: string
                                               default: ""
                                             optional:
@@ -5765,9 +5668,7 @@ spec:
                                             This field is effectively required, but due to backwards compatibility is
                                             allowed to be empty. Instances of this type with an empty value here are
                                             almost certainly wrong.
-                                            TODO: Add other useful fields. apiVersion, kind, uid?
                                             More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                            TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                           type: string
                                           default: ""
                                         optional:
@@ -5787,9 +5688,7 @@ spec:
                                             This field is effectively required, but due to backwards compatibility is
                                             allowed to be empty. Instances of this type with an empty value here are
                                             almost certainly wrong.
-                                            TODO: Add other useful fields. apiVersion, kind, uid?
                                             More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                            TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                           type: string
                                           default: ""
                                         optional:
@@ -5844,8 +5743,6 @@ spec:
                                   grpc:
                                     description: GRPC specifies an action involving a GRPC port.
                                     type: object
-                                    required:
-                                      - port
                                     properties:
                                       port:
                                         description: Port number of the gRPC service. Number must be in the range 1 to 65535.
@@ -5856,9 +5753,9 @@ spec:
                                           Service is the name of the service to place in the gRPC HealthCheckRequest
                                           (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
 
-
                                           If this is not specified, the default behavior is defined by gRPC.
                                         type: string
+                                        default: ""
                                   httpGet:
                                     description: HTTPGet specifies the http request to perform.
                                     type: object
@@ -5911,7 +5808,8 @@ spec:
                                     type: integer
                                     format: int32
                                   periodSeconds:
-                                    description: How often (in seconds) to perform the probe.
+                                    description: |-
+                                      How often (in seconds) to perform the probe.
                                     type: integer
                                     format: int32
                                   successThreshold:
@@ -5962,8 +5860,6 @@ spec:
                                 items:
                                   description: ContainerPort represents a network port in a single container.
                                   type: object
-                                  required:
-                                    - containerPort
                                   properties:
                                     containerPort:
                                       description: |-
@@ -5983,10 +5879,6 @@ spec:
                                         Defaults to "TCP".
                                       type: string
                                       default: TCP
-                                x-kubernetes-list-map-keys:
-                                  - containerPort
-                                  - protocol
-                                x-kubernetes-list-type: map
                               readinessProbe:
                                 description: |-
                                   Periodic probe of container service readiness.
@@ -6019,8 +5911,6 @@ spec:
                                   grpc:
                                     description: GRPC specifies an action involving a GRPC port.
                                     type: object
-                                    required:
-                                      - port
                                     properties:
                                       port:
                                         description: Port number of the gRPC service. Number must be in the range 1 to 65535.
@@ -6031,9 +5921,9 @@ spec:
                                           Service is the name of the service to place in the gRPC HealthCheckRequest
                                           (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
 
-
                                           If this is not specified, the default behavior is defined by gRPC.
                                         type: string
+                                        default: ""
                                   httpGet:
                                     description: HTTPGet specifies the http request to perform.
                                     type: object
@@ -6086,7 +5976,8 @@ spec:
                                     type: integer
                                     format: int32
                                   periodSeconds:
-                                    description: How often (in seconds) to perform the probe.
+                                    description: |-
+                                      How often (in seconds) to perform the probe.
                                     type: integer
                                     format: int32
                                   successThreshold:
@@ -6125,33 +6016,6 @@ spec:
                                   More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                 type: object
                                 properties:
-                                  claims:
-                                    description: |-
-                                      Claims lists the names of resources, defined in spec.resourceClaims,
-                                      that are used by this container.
-
-
-                                      This is an alpha field and requires enabling the
-                                      DynamicResourceAllocation feature gate.
-
-
-                                      This field is immutable. It can only be set for containers.
-                                    type: array
-                                    items:
-                                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.
-                                      type: object
-                                      required:
-                                        - name
-                                      properties:
-                                        name:
-                                          description: |-
-                                            Name must match the name of one entry in pod.spec.resourceClaims of
-                                            the Pod where this field is used. It makes that resource available
-                                            inside a container.
-                                          type: string
-                                    x-kubernetes-list-map-keys:
-                                      - name
-                                    x-kubernetes-list-type: map
                                   limits:
                                     description: |-
                                       Limits describes the maximum amount of compute resources allowed.
@@ -6214,6 +6078,10 @@ spec:
                                           description: Capability represent POSIX capabilities type
                                           type: string
                                         x-kubernetes-list-type: atomic
+                                  privileged:
+                                    description: |-
+                                      Run container in privileged mode. This can only be set to explicitly to 'false'
+                                    type: boolean
                                   readOnlyRootFilesystem:
                                     description: |-
                                       Whether this container has a read-only root filesystem.
@@ -6269,7 +6137,6 @@ spec:
                                           type indicates which kind of seccomp profile will be applied.
                                           Valid options are:
 
-
                                           Localhost - a profile defined in a file on the node should be used.
                                           RuntimeDefault - the container runtime default profile should be used.
                                           Unconfined - no profile should be applied.
@@ -6309,8 +6176,6 @@ spec:
                                   grpc:
                                     description: GRPC specifies an action involving a GRPC port.
                                     type: object
-                                    required:
-                                      - port
                                     properties:
                                       port:
                                         description: Port number of the gRPC service. Number must be in the range 1 to 65535.
@@ -6321,9 +6186,9 @@ spec:
                                           Service is the name of the service to place in the gRPC HealthCheckRequest
                                           (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
 
-
                                           If this is not specified, the default behavior is defined by gRPC.
                                         type: string
+                                        default: ""
                                   httpGet:
                                     description: HTTPGet specifies the http request to perform.
                                     type: object
@@ -6376,7 +6241,8 @@ spec:
                                     type: integer
                                     format: int32
                                   periodSeconds:
-                                    description: How often (in seconds) to perform the probe.
+                                    description: |-
+                                      How often (in seconds) to perform the probe.
                                     type: integer
                                     format: int32
                                   successThreshold:
@@ -6469,34 +6335,39 @@ spec:
                                   Cannot be updated.
                                 type: string
                         dnsConfig:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-dnsconfig
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-dnsconfig
                           type: object
                           x-kubernetes-preserve-unknown-fields: true
                         dnsPolicy:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-dnspolicy
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-dnspolicy
                           type: string
                         enableServiceLinks:
-                          description: 'EnableServiceLinks indicates whether information about services should be injected into pod''s environment variables, matching the syntax of Docker links. Optional: Knative defaults this to false.'
+                          description: |-
+                            EnableServiceLinks indicates whether information aboutservices should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Knative defaults this to false.
                           type: boolean
                         hostAliases:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-hostaliases
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-hostaliases
                           type: array
                           items:
-                            description: This is accessible behind a feature flag - kubernetes.podspec-hostaliases
+                            description: |-
+                              This is accessible behind a feature flag - kubernetes.podspec-hostaliases
                             type: object
                             x-kubernetes-preserve-unknown-fields: true
                         hostIPC:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-hostipc
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-hostipc
                           type: boolean
-                          x-kubernetes-preserve-unknown-fields: true
                         hostNetwork:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-hostnetwork
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-hostnetwork
                           type: boolean
-                          x-kubernetes-preserve-unknown-fields: true
                         hostPID:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-hostpid
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-hostpid
                           type: boolean
-                          x-kubernetes-preserve-unknown-fields: true
                         idleTimeoutSeconds:
                           description: |-
                             IdleTimeoutSeconds is the maximum duration in seconds a request will be allowed
@@ -6522,9 +6393,7 @@ spec:
                                   This field is effectively required, but due to backwards compatibility is
                                   allowed to be empty. Instances of this type with an empty value here are
                                   almost certainly wrong.
-                                  TODO: Add other useful fields. apiVersion, kind, uid?
                                   More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                 type: string
                                 default: ""
                             x-kubernetes-map-type: atomic
@@ -6533,33 +6402,23 @@ spec:
                           x-kubernetes-list-type: map
                         initContainers:
                           description: |-
-                            List of initialization containers belonging to the pod.
-                            Init containers are executed in order prior to containers being started. If any
-                            init container fails, the pod is considered to have failed and is handled according
-                            to its restartPolicy. The name for an init container or normal container must be
-                            unique among all containers.
-                            Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
-                            The resourceRequirements of an init container are taken into account during scheduling
-                            by finding the highest request/limit for each resource type, and then using the max of
-                            of that value or the sum of the normal containers. Limits are applied to init containers
-                            in a similar fashion.
-                            Init containers cannot currently be added or removed.
-                            Cannot be updated.
-                            More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
+                            This is accessible behind a feature flag - kubernetes.podspec-init-containers
                           type: array
                           items:
                             description: This is accessible behind a feature flag - kubernetes.podspec-init-containers
                             type: object
                             x-kubernetes-preserve-unknown-fields: true
                         nodeSelector:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-nodeselector
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-nodeselector
                           type: object
-                          x-kubernetes-preserve-unknown-fields: true
+                          additionalProperties:
+                            type: string
                           x-kubernetes-map-type: atomic
                         priorityClassName:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-priorityclassname
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-priorityclassname
                           type: string
-                          x-kubernetes-preserve-unknown-fields: true
                         responseStartTimeoutSeconds:
                           description: |-
                             ResponseStartTimeoutSeconds is the maximum duration in seconds that the request
@@ -6568,15 +6427,16 @@ spec:
                           type: integer
                           format: int64
                         runtimeClassName:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-runtimeclassname
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-runtimeclassname
                           type: string
-                          x-kubernetes-preserve-unknown-fields: true
                         schedulerName:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-schedulername
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-schedulername
                           type: string
-                          x-kubernetes-preserve-unknown-fields: true
                         securityContext:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-securitycontext
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-securitycontext
                           type: object
                           x-kubernetes-preserve-unknown-fields: true
                         serviceAccountName:
@@ -6585,9 +6445,9 @@ spec:
                             More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
                           type: string
                         shareProcessNamespace:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-shareproccessnamespace
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-shareprocessnamespace
                           type: boolean
-                          x-kubernetes-preserve-unknown-fields: true
                         timeoutSeconds:
                           description: |-
                             TimeoutSeconds is the maximum duration in seconds that the request instance
@@ -6599,12 +6459,13 @@ spec:
                           description: This is accessible behind a feature flag - kubernetes.podspec-tolerations
                           type: array
                           items:
-                            description: This is accessible behind a feature flag - kubernetes.podspec-tolerations
+                            description: |-
+                              This is accessible behind a feature flag - kubernetes.podspec-tolerations
                             type: object
                             x-kubernetes-preserve-unknown-fields: true
-                          x-kubernetes-list-type: atomic
                         topologySpreadConstraints:
-                          description: This is accessible behind a feature flag - kubernetes.podspec-topologyspreadconstraints
+                          description: |-
+                            This is accessible behind a feature flag - kubernetes.podspec-topologyspreadconstraints
                           type: array
                           items:
                             description: This is accessible behind a feature flag - kubernetes.podspec-topologyspreadconstraints
@@ -6680,9 +6541,7 @@ spec:
                                       This field is effectively required, but due to backwards compatibility is
                                       allowed to be empty. Instances of this type with an empty value here are
                                       almost certainly wrong.
-                                      TODO: Add other useful fields. apiVersion, kind, uid?
                                       More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                      TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                     type: string
                                     default: ""
                                   optional:
@@ -6690,7 +6549,13 @@ spec:
                                     type: boolean
                                 x-kubernetes-map-type: atomic
                               emptyDir:
-                                description: This is accessible behind a feature flag - kubernetes.podspec-emptydir
+                                description: |-
+                                  This is accessible behind a feature flag - kubernetes.podspec-volumes-emptydir
+                                type: object
+                                x-kubernetes-preserve-unknown-fields: true
+                              hostPath:
+                                description: |-
+                                  This is accessible behind a feature flag - kubernetes.podspec-volumes-hostpath
                                 type: object
                                 x-kubernetes-preserve-unknown-fields: true
                               name:
@@ -6700,7 +6565,8 @@ spec:
                                   More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                 type: string
                               persistentVolumeClaim:
-                                description: This is accessible behind a feature flag - kubernetes.podspec-persistent-volume-claim
+                                description: |-
+                                  This is accessible behind a feature flag - kubernetes.podspec-persistent-volume-claim
                                 type: object
                                 x-kubernetes-preserve-unknown-fields: true
                               projected:
@@ -6718,10 +6584,14 @@ spec:
                                     type: integer
                                     format: int32
                                   sources:
-                                    description: sources is the list of volume projections
+                                    description: |-
+                                      sources is the list of volume projections. Each entry in this list
+                                      handles one source.
                                     type: array
                                     items:
-                                      description: Projection that may be projected along with other supported volume types
+                                      description: |-
+                                        Projection that may be projected along with other supported volume types.
+                                        Exactly one of these fields must be set.
                                       type: object
                                       properties:
                                         configMap:
@@ -6772,9 +6642,7 @@ spec:
                                                 This field is effectively required, but due to backwards compatibility is
                                                 allowed to be empty. Instances of this type with an empty value here are
                                                 almost certainly wrong.
-                                                TODO: Add other useful fields. apiVersion, kind, uid?
                                                 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                                TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                               type: string
                                               default: ""
                                             optional:
@@ -6891,9 +6759,7 @@ spec:
                                                 This field is effectively required, but due to backwards compatibility is
                                                 allowed to be empty. Instances of this type with an empty value here are
                                                 almost certainly wrong.
-                                                TODO: Add other useful fields. apiVersion, kind, uid?
                                                 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                                TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                                               type: string
                                               default: ""
                                             optional:
@@ -7212,7 +7078,7 @@ metadata:
   labels:
     app.kubernetes.io/component: queue-proxy
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
 spec:
   # This is the Go import path for the binary that is containerized
   # and substituted here.
@@ -7240,7 +7106,7 @@ metadata:
   labels:
     app.kubernetes.io/component: autoscaler
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
   annotations:
     knative.dev/example-checksum: "47c2487f"
 data:
@@ -7450,7 +7316,7 @@ metadata:
   labels:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: controller
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     networking.knative.dev/certificate-provider: cert-manager
   annotations:
     knative.dev/example-checksum: "b7a9a602"
@@ -7519,7 +7385,7 @@ metadata:
   labels:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: controller
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
   annotations:
     knative.dev/example-checksum: "5b64ff5c"
 data:
@@ -7673,7 +7539,7 @@ metadata:
   labels:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: controller
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
   annotations:
     knative.dev/example-checksum: "720ddb97"
 data:
@@ -7799,7 +7665,7 @@ metadata:
   labels:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: controller
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
   annotations:
     knative.dev/example-checksum: "26c09de5"
 data:
@@ -7863,9 +7729,9 @@ metadata:
   labels:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: controller
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
   annotations:
-    knative.dev/example-checksum: "9ff569ad"
+    knative.dev/example-checksum: "63a13754"
 data:
   _example: |-
     ################################
@@ -8043,6 +7909,14 @@ data:
     # 2. Disabled: disabling EmptyDir volume support
     kubernetes.podspec-volumes-emptydir: "enabled"
 
+    # Controls whether volume support for HostPath is enabled or not.
+    # WARNING: Cannot safely be disabled once enabled.
+    # WARNING: If you can avoid using a hostPath volume, you should.
+    # Please read https://kubernetes.io/docs/concepts/storage/volumes/#hostpath before enabling this feature.
+    # 1. Enabled: enabling HostPath volume support
+    # 2. Disabled: disabling HostPath volume support
+    kubernetes.podspec-volumes-hostpath: "disabled"
+
     # Controls whether init containers support is enabled or not.
     # 1. Enabled: enabling init containers support
     # 2. Disabled: disabling init containers support
@@ -8100,7 +7974,7 @@ metadata:
   labels:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: controller
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
   annotations:
     knative.dev/example-checksum: "aa3813a8"
 data:
@@ -8199,7 +8073,7 @@ metadata:
   labels:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: controller
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
   annotations:
     knative.dev/example-checksum: "f4b71f57"
 data:
@@ -8258,7 +8132,7 @@ metadata:
   name: config-logging
   namespace: knative-serving
   labels:
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     app.kubernetes.io/component: logging
     app.kubernetes.io/name: knative-serving
   annotations:
@@ -8340,7 +8214,7 @@ metadata:
   labels:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: networking
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
   annotations:
     knative.dev/example-checksum: "0573e07d"
 data:
@@ -8544,7 +8418,7 @@ metadata:
   labels:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: observability
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
   annotations:
     knative.dev/example-checksum: "54abd711"
 data:
@@ -8663,7 +8537,7 @@ metadata:
   labels:
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: tracing
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
   annotations:
     knative.dev/example-checksum: "26614636"
 data:
@@ -8719,7 +8593,7 @@ metadata:
   labels:
     app.kubernetes.io/component: activator
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
 spec:
   minReplicas: 1
   maxReplicas: 20
@@ -8747,7 +8621,7 @@ metadata:
   labels:
     app.kubernetes.io/component: activator
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
 spec:
   minAvailable: 80%
   selector:
@@ -8775,7 +8649,7 @@ metadata:
   namespace: knative-serving
   labels:
     app.kubernetes.io/component: activator
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     app.kubernetes.io/name: knative-serving
 spec:
   selector:
@@ -8789,7 +8663,7 @@ spec:
         role: activator
         app.kubernetes.io/component: activator
         app.kubernetes.io/name: knative-serving
-        app.kubernetes.io/version: "v1.16"
+        app.kubernetes.io/version: "v1.17"
     spec:
       # To avoid node becoming SPOF, spread our replicas to different nodes.
       affinity:
@@ -8893,7 +8767,7 @@ metadata:
   labels:
     app: activator
     app.kubernetes.io/component: activator
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     app.kubernetes.io/name: knative-serving
 spec:
   selector:
@@ -8939,7 +8813,7 @@ metadata:
   labels:
     app.kubernetes.io/component: autoscaler
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
 spec:
   replicas: 1
   selector:
@@ -8955,7 +8829,7 @@ spec:
         app: autoscaler
         app.kubernetes.io/component: autoscaler
         app.kubernetes.io/name: knative-serving
-        app.kubernetes.io/version: "v1.16"
+        app.kubernetes.io/version: "v1.17"
     spec:
       # To avoid node becoming SPOF, spread our replicas to different nodes.
       affinity:
@@ -9038,7 +8912,7 @@ metadata:
     app: autoscaler
     app.kubernetes.io/component: autoscaler
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
   name: autoscaler
   namespace: knative-serving
 spec:
@@ -9078,7 +8952,7 @@ metadata:
   labels:
     app.kubernetes.io/component: controller
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
 spec:
   selector:
     matchLabels:
@@ -9089,7 +8963,7 @@ spec:
         app: controller
         app.kubernetes.io/component: controller
         app.kubernetes.io/name: knative-serving
-        app.kubernetes.io/version: "v1.16"
+        app.kubernetes.io/version: "v1.17"
     spec:
       # To avoid node becoming SPOF, spread our replicas to different nodes.
       affinity:
@@ -9176,7 +9050,7 @@ metadata:
     app: controller
     app.kubernetes.io/component: controller
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
   name: controller
   namespace: knative-serving
 spec:
@@ -9213,7 +9087,7 @@ metadata:
   labels:
     app.kubernetes.io/component: webhook
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
 spec:
   minReplicas: 1
   maxReplicas: 5
@@ -9239,7 +9113,7 @@ metadata:
   labels:
     app.kubernetes.io/component: webhook
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
 spec:
   minAvailable: 80%
   selector:
@@ -9267,7 +9141,7 @@ metadata:
   namespace: knative-serving
   labels:
     app.kubernetes.io/component: webhook
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     app.kubernetes.io/name: knative-serving
 spec:
   selector:
@@ -9280,7 +9154,7 @@ spec:
         app: webhook
         role: webhook
         app.kubernetes.io/component: webhook
-        app.kubernetes.io/version: "v1.16"
+        app.kubernetes.io/version: "v1.17"
         app.kubernetes.io/name: knative-serving
     spec:
       # To avoid node becoming SPOF, spread our replicas to different nodes.
@@ -9374,7 +9248,7 @@ metadata:
     app: webhook
     role: webhook
     app.kubernetes.io/component: webhook
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
     app.kubernetes.io/name: knative-serving
   name: webhook
   namespace: knative-serving
@@ -9415,7 +9289,7 @@ metadata:
   labels:
     app.kubernetes.io/component: webhook
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
 webhooks:
 - admissionReviewVersions: ["v1", "v1beta1"]
   clientConfig:
@@ -9456,7 +9330,7 @@ metadata:
   labels:
     app.kubernetes.io/component: webhook
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
 webhooks:
 - admissionReviewVersions: ["v1", "v1beta1"]
   clientConfig:
@@ -9512,7 +9386,7 @@ metadata:
   labels:
     app.kubernetes.io/component: webhook
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
 webhooks:
 - admissionReviewVersions: ["v1", "v1beta1"]
   clientConfig:
@@ -9569,5 +9443,5 @@ metadata:
   labels:
     app.kubernetes.io/component: webhook
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
 # The data is populated at install time.
diff --git a/openshift-knative-operator/cmd/openshift-knative-operator/kodata/knative-serving/latest/3-serving-hpa.yaml b/openshift-knative-operator/cmd/openshift-knative-operator/kodata/knative-serving/latest/3-serving-hpa.yaml
index f92652468f..63ee7e55a4 100644
--- a/openshift-knative-operator/cmd/openshift-knative-operator/kodata/knative-serving/latest/3-serving-hpa.yaml
+++ b/openshift-knative-operator/cmd/openshift-knative-operator/kodata/knative-serving/latest/3-serving-hpa.yaml
@@ -22,7 +22,7 @@ metadata:
     autoscaling.knative.dev/autoscaler-provider: hpa
     app.kubernetes.io/component: autoscaler-hpa
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
 spec:
   selector:
     matchLabels:
@@ -33,7 +33,7 @@ spec:
         app: autoscaler-hpa
         app.kubernetes.io/component: autoscaler-hpa
         app.kubernetes.io/name: knative-serving
-        app.kubernetes.io/version: "v1.16"
+        app.kubernetes.io/version: "v1.17"
     spec:
       # To avoid node becoming SPOF, spread our replicas to different nodes.
       affinity:
@@ -117,7 +117,7 @@ metadata:
     autoscaling.knative.dev/autoscaler-provider: hpa
     app.kubernetes.io/component: autoscaler-hpa
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
   name: autoscaler-hpa
   namespace: knative-serving
 spec:
diff --git a/openshift-knative-operator/cmd/openshift-knative-operator/kodata/knative-serving/latest/4-serving-post-install-jobs.yaml b/openshift-knative-operator/cmd/openshift-knative-operator/kodata/knative-serving/latest/4-serving-post-install-jobs.yaml
index 71b7b1cf0f..ba2f47ddec 100644
--- a/openshift-knative-operator/cmd/openshift-knative-operator/kodata/knative-serving/latest/4-serving-post-install-jobs.yaml
+++ b/openshift-knative-operator/cmd/openshift-knative-operator/kodata/knative-serving/latest/4-serving-post-install-jobs.yaml
@@ -22,7 +22,7 @@ metadata:
     app: storage-version-migration-serving
     app.kubernetes.io/name: knative-serving
     app.kubernetes.io/component: storage-version-migration-job
-    app.kubernetes.io/version: "v1.16"
+    app.kubernetes.io/version: "v1.17"
 spec:
   ttlSecondsAfterFinished: 600
   backoffLimit: 10
@@ -32,7 +32,7 @@ spec:
         app: storage-version-migration-serving
         app.kubernetes.io/name: knative-serving
         app.kubernetes.io/component: storage-version-migration-job
-        app.kubernetes.io/version: "v1.16"
+        app.kubernetes.io/version: "v1.17"
         sidecar.istio.io/inject: "false"
     spec:
       serviceAccountName: controller
diff --git a/openshift/ci-operator/source-image/Dockerfile b/openshift/ci-operator/source-image/Dockerfile
index ceebd1d5e1..3c1355be2d 100644
--- a/openshift/ci-operator/source-image/Dockerfile
+++ b/openshift/ci-operator/source-image/Dockerfile
@@ -5,7 +5,7 @@ FROM src
 ARG TARGETARCH
 
 COPY --from=oc-image /usr/share/openshift/linux_$TARGETARCH/oc.rhel8 /usr/bin/oc
-COPY --from=registry.ci.openshift.org/openshift/knative-serving-src:knative-v1.16 /go/src/github.com/openshift-knative/serving/ /go/src/knative.dev/serving/
+COPY --from=registry.ci.openshift.org/openshift/knative-serving-src:knative-v1.17 /go/src/github.com/openshift-knative/serving/ /go/src/knative.dev/serving/
 COPY --from=registry.ci.openshift.org/openshift/knative-eventing-src:knative-v1.17 /go/src/github.com/openshift-knative/eventing/ /go/src/knative.dev/eventing/
 COPY --from=registry.ci.openshift.org/openshift/eventing-kafka-broker-src:knative-v1.17 /go/src/github.com/openshift-knative/eventing-kafka-broker/ /go/src/knative.dev/eventing-kafka-broker/
 COPY --from=registry.ci.openshift.org/openshift/eventing-istio-src:knative-v1.17 /go/src/github.com/openshift-knative/eventing-istio/ /go/src/knative.dev/eventing-istio/
diff --git a/test/images-rekt.yaml b/test/images-rekt.yaml
index b28cf61609..e01cc7b81d 100644
--- a/test/images-rekt.yaml
+++ b/test/images-rekt.yaml
@@ -1,2 +1,2 @@
-knative.dev/reconciler-test/cmd/eventshub: quay.io/redhat-user-workloads/ocp-serverless-tenant/serverless-operator-137/kn-eventing-test-eventshub@sha256:14e30847ee9e2a9ca2c6757fdba4f5e4dfc491856a7c2df542d52e702ff0578d
-knative.dev/eventing/cmd/heartbeats: quay.io/redhat-user-workloads/ocp-serverless-tenant/serverless-operator-137/kn-eventing-heartbeats@sha256:68e533f840b2cbc75a34fa7e8d0566efbceb6868afef15d5e41bd5fbce1dfd7b
+knative.dev/reconciler-test/cmd/eventshub: quay.io/redhat-user-workloads/ocp-serverless-tenant/serverless-operator-137/kn-eventing-test-eventshub@sha256:6ed6532ec47e83a74037a771147fbd8901889b2967ca48a2e0a5602e005c6f42
+knative.dev/eventing/cmd/heartbeats: quay.io/redhat-user-workloads/ocp-serverless-tenant/serverless-operator-137/kn-eventing-heartbeats@sha256:07a7105e648db77289817f3e0623a1a80230173646226788de01f059166a9e22
diff --git a/test/servinge2e/encryption/encryption_test.go b/test/servinge2e/encryption/encryption_test.go
index c12dd95766..8bf1b224ee 100644
--- a/test/servinge2e/encryption/encryption_test.go
+++ b/test/servinge2e/encryption/encryption_test.go
@@ -25,7 +25,7 @@ func TestExternalAccessWithEncryptionEnabled(t *testing.T) {
 	ksvc = test.WithServiceReadyOrFail(ctx, ksvc)
 
 	// Check if the service is reachable.
-	servinge2e.WaitForRouteServingText(t, ctx, ksvc.Status.URL.URL(), servinge2e.HelloworldText)
+	servinge2e.WaitForRouteServingText(t, ctx, ksvc.Status.URL.URL(), servinge2e.HelloworldGoText)
 
 	// Verify the OCP route the operator created.
 	routes, err := ctx.Clients.Route.Routes(test.IngressNamespace).List(context.Background(), metav1.ListOptions{
@@ -65,5 +65,5 @@ func TestClusterLocalAccessWithEncryptionEnabled(t *testing.T) {
 	httpProxy := test.WithServiceReadyOrFail(ctx, servinge2e.HTTPProxyService(ksvc.Name+"-proxy", test.Namespace,
 		"", ksvc.Status.URL.Host, string(ca.Data[certificates.CertName]), nil, nil))
 
-	servinge2e.WaitForRouteServingText(t, ctx, httpProxy.Status.URL.URL(), servinge2e.HelloworldText)
+	servinge2e.WaitForRouteServingText(t, ctx, httpProxy.Status.URL.URL(), servinge2e.HelloworldGoText)
 }
diff --git a/test/servinge2e/helpers.go b/test/servinge2e/helpers.go
index 8f36400505..3bfae751b0 100644
--- a/test/servinge2e/helpers.go
+++ b/test/servinge2e/helpers.go
@@ -14,7 +14,7 @@ import (
 )
 
 const (
-	HelloworldText = "Hello World!"
+	HelloworldGoText = "Hello World! How about some tasty noodles?"
 )
 
 func WaitForRouteServingText(t *testing.T, caCtx *test.Context, routeURL *url.URL, expectedText string) {
diff --git a/test/servinge2e/kourier/custom_route_test.go b/test/servinge2e/kourier/custom_route_test.go
index fd1d474f84..f0104ac2a4 100644
--- a/test/servinge2e/kourier/custom_route_test.go
+++ b/test/servinge2e/kourier/custom_route_test.go
@@ -89,7 +89,7 @@ func TestCustomOpenShiftRoute(t *testing.T) {
 		return caCtx.Clients.Route.Routes(route.Namespace).Delete(context.Background(), route.Name, metav1.DeleteOptions{})
 	})
 
-	servinge2e.WaitForRouteServingText(t, caCtx, ksvc.Status.URL.URL(), servinge2e.HelloworldText)
+	servinge2e.WaitForRouteServingText(t, caCtx, ksvc.Status.URL.URL(), servinge2e.HelloworldGoText)
 
 	// Create DomainMapping with disable Annotation.
 	dm := &servingv1beta1.DomainMapping{
@@ -163,9 +163,9 @@ func TestCustomOpenShiftRoute(t *testing.T) {
 	if err != nil {
 		t.Fatalf("Error polling custom domain: %v", err)
 	}
-	const expectedResponse = "Hello World!"
-	if resp.StatusCode != 200 || strings.TrimSpace(string(resp.Body)) != expectedResponse {
-		t.Fatalf("Expecting a HTTP 200 response with %q, got %d: %s", expectedResponse, resp.StatusCode, string(resp.Body))
+
+	if resp.StatusCode != 200 || strings.TrimSpace(string(resp.Body)) != servinge2e.HelloworldGoText {
+		t.Fatalf("Expecting a HTTP 200 response with %q, got %d: %s", servinge2e.HelloworldGoText, resp.StatusCode, string(resp.Body))
 	}
 }
 
diff --git a/test/servinge2e/kourier/service_to_service_test.go b/test/servinge2e/kourier/service_to_service_test.go
index 8f993129de..e792564cef 100644
--- a/test/servinge2e/kourier/service_to_service_test.go
+++ b/test/servinge2e/kourier/service_to_service_test.go
@@ -86,7 +86,7 @@ func testServiceToService(t *testing.T, ctx *test.Context, namespace string, tc
 	}
 
 	// Verify the service is actually accessible from the outside
-	servinge2e.WaitForRouteServingText(t, ctx, serviceURL, servinge2e.HelloworldText)
+	servinge2e.WaitForRouteServingText(t, ctx, serviceURL, servinge2e.HelloworldGoText)
 
 	// Verify the expected istio-proxy is really there
 	podList, err := ctx.Clients.Kube.CoreV1().Pods(namespace).List(context.Background(), metav1.ListOptions{LabelSelector: "serving.knative.dev/service=" + service.Name})
diff --git a/test/servinge2e/kourier/verify_http_and_https_test.go b/test/servinge2e/kourier/verify_http_and_https_test.go
index 1ec9514597..fe12279f73 100644
--- a/test/servinge2e/kourier/verify_http_and_https_test.go
+++ b/test/servinge2e/kourier/verify_http_and_https_test.go
@@ -21,7 +21,7 @@ func TestKnativeServiceHTTPRedirect(t *testing.T) {
 	ksvc = test.WithServiceReadyOrFail(caCtx, ksvc)
 
 	// Implicitly checks that HTTPS works.
-	servinge2e.WaitForRouteServingText(t, caCtx, ksvc.Status.URL.URL(), servinge2e.HelloworldText)
+	servinge2e.WaitForRouteServingText(t, caCtx, ksvc.Status.URL.URL(), servinge2e.HelloworldGoText)
 
 	// Now check HTTP request.
 	httpURL := ksvc.Status.URL.DeepCopy()
diff --git a/test/servinge2e/kourier/verify_route_conflict_test.go b/test/servinge2e/kourier/verify_route_conflict_test.go
index e176e02594..a12b4ded96 100644
--- a/test/servinge2e/kourier/verify_route_conflict_test.go
+++ b/test/servinge2e/kourier/verify_route_conflict_test.go
@@ -45,7 +45,7 @@ func TestRouteConflictBehavior(t *testing.T) {
 			t.Fatal("Knative Service not ready", err)
 		}
 
-		servinge2e.WaitForRouteServingText(t, caCtx, olderSvc.Status.URL.URL(), servinge2e.HelloworldText)
+		servinge2e.WaitForRouteServingText(t, caCtx, olderSvc.Status.URL.URL(), servinge2e.HelloworldGoText)
 
 		_, err = test.CreateService(caCtx, newer.Name, newer.Namespace, pkgTest.ImagePath(test.HelloworldGoImg))
 		if err != nil {
@@ -74,7 +74,7 @@ func TestRouteConflictBehavior(t *testing.T) {
 		}
 
 		// Verify that the "older" service still works.
-		servinge2e.WaitForRouteServingText(t, caCtx, olderSvc.Status.URL.URL(), servinge2e.HelloworldText)
+		servinge2e.WaitForRouteServingText(t, caCtx, olderSvc.Status.URL.URL(), servinge2e.HelloworldGoText)
 
 		for _, svc := range services {
 			if err := caCtx.Clients.Serving.ServingV1().Services(svc.Namespace).Delete(context.Background(), svc.Name, metav1.DeleteOptions{}); err != nil {
diff --git a/test/servinge2e/servicemesh/helpers.go b/test/servinge2e/servicemesh/helpers.go
index 07b082e866..98d2c8a7e1 100644
--- a/test/servinge2e/servicemesh/helpers.go
+++ b/test/servinge2e/servicemesh/helpers.go
@@ -8,7 +8,6 @@ const (
 	IstioInjectKey              = "sidecar.istio.io/inject"
 	IstioRewriteProbersKey      = "sidecar.istio.io/rewriteAppHTTPProbers"
 	ServingEnablePassthroughKey = "serving.knative.openshift.io/enablePassthrough"
-	helloWorldText              = "Hello World!"
 )
 
 type testCase struct {
diff --git a/test/servinge2e/servicemesh/multitenant_test.go b/test/servinge2e/servicemesh/multitenant_test.go
index 83a3fa406f..eaf9360400 100644
--- a/test/servinge2e/servicemesh/multitenant_test.go
+++ b/test/servinge2e/servicemesh/multitenant_test.go
@@ -40,7 +40,7 @@ func TestMultiTenancyWithServiceMesh(t *testing.T) {
 			sourceNamespace:   Tenant1,
 			targetNamespace:   Tenant1,
 			usePrivateService: true,
-			checkResponseFunc: spoof.MatchesBody(helloWorldText),
+			checkResponseFunc: spoof.MatchesBody(servinge2e.HelloworldGoText),
 		},
 		{
 			name: "cross-tenant-directly",
@@ -60,7 +60,7 @@ func TestMultiTenancyWithServiceMesh(t *testing.T) {
 			},
 			sourceNamespace:   Tenant1,
 			targetNamespace:   Tenant1,
-			checkResponseFunc: spoof.MatchesBody(helloWorldText),
+			checkResponseFunc: spoof.MatchesBody(servinge2e.HelloworldGoText),
 		},
 		{
 			name: "cross-tenant-via-activator",
@@ -78,7 +78,7 @@ func TestMultiTenancyWithServiceMesh(t *testing.T) {
 			},
 			sourceNamespace:   Tenant1,
 			targetNamespace:   Tenant1,
-			checkResponseFunc: spoof.MatchesBody(helloWorldText),
+			checkResponseFunc: spoof.MatchesBody(servinge2e.HelloworldGoText),
 			gateway:           LocalGatewayHost,
 		},
 		{
@@ -99,7 +99,7 @@ func TestMultiTenancyWithServiceMesh(t *testing.T) {
 			},
 			sourceNamespace:   Tenant1,
 			targetNamespace:   Tenant1,
-			checkResponseFunc: spoof.MatchesBody(helloWorldText),
+			checkResponseFunc: spoof.MatchesBody(servinge2e.HelloworldGoText),
 			gateway:           LocalGatewayHost,
 		},
 		{
diff --git a/test/servinge2e/tracing_test.go b/test/servinge2e/tracing_test.go
index a35d073513..35915d8c27 100644
--- a/test/servinge2e/tracing_test.go
+++ b/test/servinge2e/tracing_test.go
@@ -69,7 +69,7 @@ func tracingTest(t *testing.T, activatorInPath bool) {
 	}
 	ksvc := test.WithServiceReadyOrFail(ctx, test.Service(name, testNamespace, pkgTest.ImagePath(test.HelloworldGoImg), nil, annotations))
 
-	WaitForRouteServingText(t, ctx, ksvc.Status.URL.URL(), HelloworldText)
+	WaitForRouteServingText(t, ctx, ksvc.Status.URL.URL(), HelloworldGoText)
 
 	doHelloWorldRequests(ctx, ksvc.Status.URL.URL(), requestCount)
 
@@ -101,7 +101,7 @@ func doHelloWorldRequests(ctx *test.Context, url *url.URL, count int) {
 			ctx.T.Errorf("Error GETing %s: %v", url, err)
 		}
 
-		if strings.TrimSpace(resp) != HelloworldText {
+		if strings.TrimSpace(resp) != HelloworldGoText {
 			ctx.T.Errorf("Unexpected response: %s", resp)
 		}
 	}


Reviews:
user: login: dsimansk
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T14:18:30Z
user: login: creydr
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-15T06:43:52Z
user: login: Fedosin
body: /approve
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-19T12:19:01Z

Review comments:
diff_hunk: @@ -21,7 +21,7 @@ metadata:
   labels:
     app.kubernetes.io/component: net-istio
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-1.17"
path: openshift-knative-operator/cmd/openshift-knative-operator/kodata/ingress/latest/istio/1-net-istio-core.yaml
user: login: dsimansk
body: @creydr hmm, that doesn't seem like a pattern we want to change. Adding hold to investigate in net-* repos where's the missing `v`. 

/hold 
created_at: 2025-05-14T14:18:30Z
author_association: CONTRIBUTOR
diff_hunk: @@ -21,7 +21,7 @@ metadata:
   labels:
     app.kubernetes.io/component: net-istio
     app.kubernetes.io/name: knative-serving
-    app.kubernetes.io/version: "release-v1.16"
+    app.kubernetes.io/version: "release-1.17"
path: openshift-knative-operator/cmd/openshift-knative-operator/kodata/ingress/latest/istio/1-net-istio-core.yaml
user: login: creydr
body: Updated after your fix
/unhold
created_at: 2025-05-15T06:43:52Z
author_association: CONTRIBUTOR

PR comments:
user: login: dsimansk
created_at: 2025-05-14T16:48:12Z
body: @creydr PTAL fix for the version format.

https://github.com/openshift-knative/net-kourier/pull/306
https://github.com/openshift-knative/net-istio/pull/341
author_association: CONTRIBUTOR
user: login: creydr
created_at: 2025-05-15T07:07:51Z
body: > @creydr PTAL fix for the version format.
> 
> [openshift-knative/net-kourier#306](https://github.com/openshift-knative/net-kourier/pull/306) [openshift-knative/net-istio#341](https://github.com/openshift-knative/net-istio/pull/341)

Thanks for the fixes. I updated the PR. Can you recheck?
author_association: CONTRIBUTOR
user: login: dsimansk
created_at: 2025-05-15T08:07:16Z
body: /approve
/lgtm
author_association: CONTRIBUTOR
user: login: creydr
created_at: 2025-05-15T09:11:29Z
body: ```
=== RUN   TestServiceToServiceCalls/cluster-local-via-activator
W0515 08:32:37.256235   67094 warnings.go:70] Kubernetes default value is insecure, Knative may default this to secure in a future release: spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation, spec.template.spec.containers[0].securityContext.capabilities, spec.template.spec.containers[0].securityContext.runAsNonRoot, spec.template.spec.containers[0].securityContext.seccompProfile
W0515 08:32:47.277409   67094 warnings.go:70] Kubernetes default value is insecure, Knative may default this to secure in a future release: spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation, spec.template.spec.containers[0].securityContext.capabilities, spec.template.spec.containers[0].securityContext.runAsNonRoot, spec.template.spec.containers[0].securityContext.seccompProfile
    service.go:67: Error waiting for ksvc readiness: knative service cluster-local-via-activator-proxy is not in desired state, got: &{TypeMeta:{Kind: APIVersion:} ObjectMeta:{Name:cluster-local-via-activator-proxy GenerateName: Namespace:serverless-tests SelfLink: UID:22bfab59-a24e-4383-9924-ec2641200dd0 ResourceVersion:66574 Generation:1 CreationTimestamp:2025-05-15 08:32:47 +0000 UTC DeletionTimestamp:<nil> DeletionGracePeriodSeconds:<nil> Labels:map[] Annotations:map[serving.knative.dev/creator:system:admin serving.knative.dev/lastModifier:system:admin] OwnerReferences:[] Finalizers:[] ManagedFields:[{Manager:controller Operation:Update APIVersion:serving.knative.dev/v1 Time:2025-05-15 08:32:47 +0000 UTC FieldsType:FieldsV1 FieldsV1:{"f:status":{".":{},"f:conditions":{},"f:latestCreatedRevisionName":{},"f:observedGeneration":{},"f:url":{}}} Subresource:status} {Manager:kourier.test Operation:Update APIVersion:serving.knative.dev/v1 Time:2025-05-15 08:32:47 +0000 UTC FieldsType:FieldsV1 FieldsV1:{"f:spec":{".":{},"f:template":{".":{},"f:metadata":{".":{},"f:creationTimestamp":{}},"f:spec":{".":{},"f:containers":{}}}}} Subresource:}]} Spec:{ConfigurationSpec:{Template:{ObjectMeta:{Name: GenerateName: Namespace: SelfLink: UID: ResourceVersion: Generation:0 CreationTimestamp:0001-01-01 00:00:00 +0000 UTC DeletionTimestamp:<nil> DeletionGracePeriodSeconds:<nil> Labels:map[] Annotations:map[] OwnerReferences:[] Finalizers:[] ManagedFields:[]} Spec:{PodSpec:{Volumes:[] InitContainers:[] Containers:[{Name:user-container Image:quay.io/openshift-knative/serving/httpproxy:v1.17 Command:[] Args:[] WorkingDir: Ports:[] EnvFrom:[] Env:[{Name:TARGET_HOST Value:cluster-local-via-activator.serverless-tests.svc.cluster.local ValueFrom:nil}] Resources:{Limits:map[] Requests:map[cpu:{i:{value:25 scale:-3} d:{Dec:<nil>} s:25m Format:DecimalSI}] Claims:[]} ResizePolicy:[] RestartPolicy:<nil> VolumeMounts:[] VolumeDevices:[] LivenessProbe:nil ReadinessProbe:&Probe{ProbeHandler:ProbeHandler{Exec:nil,HTTPGet:nil,TCPSocket:&TCPSocketAction{Port:{0 0 },Host:,},GRPC:nil,},InitialDelaySeconds:0,TimeoutSeconds:0,PeriodSeconds:0,SuccessThreshold:1,FailureThreshold:0,TerminationGracePeriodSeconds:nil,} StartupProbe:nil Lifecycle:nil TerminationMessagePath: TerminationMessagePolicy: ImagePullPolicy: SecurityContext:nil Stdin:false StdinOnce:false TTY:false}] EphemeralContainers:[] RestartPolicy: TerminationGracePeriodSeconds:<nil> ActiveDeadlineSeconds:<nil> DNSPolicy: NodeSelector:map[] ServiceAccountName: DeprecatedServiceAccount: AutomountServiceAccountToken:<nil> NodeName: HostNetwork:false HostPID:false HostIPC:false ShareProcessNamespace:<nil> SecurityContext:nil ImagePullSecrets:[] Hostname: Subdomain: Affinity:nil SchedulerName: Tolerations:[] HostAliases:[] PriorityClassName: Priority:<nil> DNSConfig:nil ReadinessGates:[] RuntimeClassName:<nil> EnableServiceLinks:0xc00059045f PreemptionPolicy:<nil> Overhead:map[] TopologySpreadConstraints:[] SetHostnameAsFQDN:<nil> OS:nil HostUsers:<nil> SchedulingGates:[] ResourceClaims:[]} ContainerConcurrency:0xc000590308 TimeoutSeconds:0xc0005904a8 ResponseStartTimeoutSeconds:<nil> IdleTimeoutSeconds:<nil>}}} RouteSpec:{Traffic:[{Tag: RevisionName: ConfigurationName: LatestRevision:0xc00059051f Percent:0xc000590548 URL:}]}} Status:{Status:{ObservedGeneration:1 Conditions:[{Type:ConfigurationsReady Status:False Severity: LastTransitionTime:{Inner:2025-05-15 08:32:47 +0000 UTC} Reason:RevisionFailed Message:Revision "cluster-local-via-activator-proxy-00001" failed with message: Unable to fetch image "quay.io/openshift-knative/serving/httpproxy:v1.17": failed to resolve image to digest: HEAD https://quay.io/v2/openshift-knative/serving/httpproxy/manifests/v1.17: unexpected status code 404 Not Found (HEAD responses have no body, use GET for details).} {Type:Ready Status:False Severity: LastTransitionTime:{Inner:2025-05-15 08:32:47 +0000 UTC} Reason:RevisionMissing Message:Configuration "cluster-local-via-activator-proxy" does not have any ready Revision.} {Type:RoutesReady Status:False Severity: LastTransitionTime:{Inner:2025-05-15 08:32:47 +0000 UTC} Reason:RevisionMissing Message:Configuration "cluster-local-via-activator-proxy" does not have any ready Revision.}] Annotations:map[]} ConfigurationStatusFields:{LatestReadyRevisionName: LatestCreatedRevisionName:cluster-local-via-activator-proxy-00001} RouteStatusFields:{URL:https://cluster-local-via-activator-proxy-serverless-tests.apps.serverless-ocp-4-18-amd64-aws-us-east-1-x54gb.serverless.devcluster.openshift.com Address:<nil> Traffic:[]}}}: context deadline exceeded
--- FAIL: TestServiceToServiceCalls/cluster-local-via-activator (310.04s)
FAIL test/servinge2e/kourier.TestServiceToServiceCalls/cluster-local-via-activator (310.04s)
=== RUN   TestServiceToServiceCalls
--- FAIL: TestServiceToServiceCalls (330.18s)
FAIL test/servinge2e/kourier.TestServiceToServiceCalls (330.18s)
FAIL test/servinge2e/kourier

=== Skipped
=== SKIP: test/servinge2e TestTraceStartedAtQueueProxy (0.00s)
    tracing_test.go:41: Activator is always on the path. See SRVKS-784

=== Failed
=== FAIL: test/servinge2e/kourier TestServiceToServiceCalls/cluster-local-via-activator (310.04s)
W0515 08:32:37.256235   67094 warnings.go:70] Kubernetes default value is insecure, Knative may default this to secure in a future release: spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation, spec.template.spec.containers[0].securityContext.capabilities, spec.template.spec.containers[0].securityContext.runAsNonRoot, spec.template.spec.containers[0].securityContext.seccompProfile
W0515 08:32:47.277409   67094 warnings.go:70] Kubernetes default value is insecure, Knative may default this to secure in a future release: spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation, spec.template.spec.containers[0].securityContext.capabilities, spec.template.spec.containers[0].securityContext.runAsNonRoot, spec.template.spec.containers[0].securityContext.seccompProfile
    service.go:67: Error waiting for ksvc readiness: knative service cluster-local-via-activator-proxy is not in desired state, got: &{TypeMeta:{Kind: APIVersion:} ObjectMeta:{Name:cluster-local-via-activator-proxy GenerateName: Namespace:serverless-tests SelfLink: UID:22bfab59-a24e-4383-9924-ec2641200dd0 ResourceVersion:66574 Generation:1 CreationTimestamp:2025-05-15 08:32:47 +0000 UTC DeletionTimestamp:<nil> DeletionGracePeriodSeconds:<nil> Labels:map[] Annotations:map[serving.knative.dev/creator:system:admin serving.knative.dev/lastModifier:system:admin] OwnerReferences:[] Finalizers:[] ManagedFields:[{Manager:controller Operation:Update APIVersion:serving.knative.dev/v1 Time:2025-05-15 08:32:47 +0000 UTC FieldsType:FieldsV1 FieldsV1:{"f:status":{".":{},"f:conditions":{},"f:latestCreatedRevisionName":{},"f:observedGeneration":{},"f:url":{}}} Subresource:status} {Manager:kourier.test Operation:Update APIVersion:serving.knative.dev/v1 Time:2025-05-15 08:32:47 +0000 UTC FieldsType:FieldsV1 FieldsV1:{"f:spec":{".":{},"f:template":{".":{},"f:metadata":{".":{},"f:creationTimestamp":{}},"f:spec":{".":{},"f:containers":{}}}}} Subresource:}]} Spec:{ConfigurationSpec:{Template:{ObjectMeta:{Name: GenerateName: Namespace: SelfLink: UID: ResourceVersion: Generation:0 CreationTimestamp:0001-01-01 00:00:00 +0000 UTC DeletionTimestamp:<nil> DeletionGracePeriodSeconds:<nil> Labels:map[] Annotations:map[] OwnerReferences:[] Finalizers:[] ManagedFields:[]} Spec:{PodSpec:{Volumes:[] InitContainers:[] Containers:[{Name:user-container Image:quay.io/openshift-knative/serving/httpproxy:v1.17 Command:[] Args:[] WorkingDir: Ports:[] EnvFrom:[] Env:[{Name:TARGET_HOST Value:cluster-local-via-activator.serverless-tests.svc.cluster.local ValueFrom:nil}] Resources:{Limits:map[] Requests:map[cpu:{i:{value:25 scale:-3} d:{Dec:<nil>} s:25m Format:DecimalSI}] Claims:[]} ResizePolicy:[] RestartPolicy:<nil> VolumeMounts:[] VolumeDevices:[] LivenessProbe:nil ReadinessProbe:&Probe{ProbeHandler:ProbeHandler{Exec:nil,HTTPGet:nil,TCPSocket:&TCPSocketAction{Port:{0 0 },Host:,},GRPC:nil,},InitialDelaySeconds:0,TimeoutSeconds:0,PeriodSeconds:0,SuccessThreshold:1,FailureThreshold:0,TerminationGracePeriodSeconds:nil,} StartupProbe:nil Lifecycle:nil TerminationMessagePath: TerminationMessagePolicy: ImagePullPolicy: SecurityContext:nil Stdin:false StdinOnce:false TTY:false}] EphemeralContainers:[] RestartPolicy: TerminationGracePeriodSeconds:<nil> ActiveDeadlineSeconds:<nil> DNSPolicy: NodeSelector:map[] ServiceAccountName: DeprecatedServiceAccount: AutomountServiceAccountToken:<nil> NodeName: HostNetwork:false HostPID:false HostIPC:false ShareProcessNamespace:<nil> SecurityContext:nil ImagePullSecrets:[] Hostname: Subdomain: Affinity:nil SchedulerName: Tolerations:[] HostAliases:[] PriorityClassName: Priority:<nil> DNSConfig:nil ReadinessGates:[] RuntimeClassName:<nil> EnableServiceLinks:0xc00059045f PreemptionPolicy:<nil> Overhead:map[] TopologySpreadConstraints:[] SetHostnameAsFQDN:<nil> OS:nil HostUsers:<nil> SchedulingGates:[] ResourceClaims:[]} ContainerConcurrency:0xc000590308 TimeoutSeconds:0xc0005904a8 ResponseStartTimeoutSeconds:<nil> IdleTimeoutSeconds:<nil>}}} RouteSpec:{Traffic:[{Tag: RevisionName: ConfigurationName: LatestRevision:0xc00059051f Percent:0xc000590548 URL:}]}} Status:{Status:{ObservedGeneration:1 Conditions:[{Type:ConfigurationsReady Status:False Severity: LastTransitionTime:{Inner:2025-05-15 08:32:47 +0000 UTC} Reason:RevisionFailed Message:Revision "cluster-local-via-activator-proxy-00001" failed with message: Unable to fetch image "quay.io/openshift-knative/serving/httpproxy:v1.17": failed to resolve image to digest: HEAD https://quay.io/v2/openshift-knative/serving/httpproxy/manifests/v1.17: unexpected status code 404 Not Found (HEAD responses have no body, use GET for details).} {Type:Ready Status:False Severity: LastTransitionTime:{Inner:2025-05-15 08:32:47 +0000 UTC} Reason:RevisionMissing Message:Configuration "cluster-local-via-activator-proxy" does not have any ready Revision.} {Type:RoutesReady Status:False Severity: LastTransitionTime:{Inner:2025-05-15 08:32:47 +0000 UTC} Reason:RevisionMissing Message:Configuration "cluster-local-via-activator-proxy" does not have any ready Revision.}] Annotations:map[]} ConfigurationStatusFields:{LatestReadyRevisionName: LatestCreatedRevisionName:cluster-local-via-activator-proxy-00001} RouteStatusFields:{URL:https://cluster-local-via-activator-proxy-serverless-tests.apps.serverless-ocp-4-18-amd64-aws-us-east-1-x54gb.serverless.devcluster.openshift.com Address:<nil> Traffic:[]}}}: context deadline exceeded

=== FAIL: test/servinge2e/kourier TestServiceToServiceCalls (330.18s)
```

-> `Unable to fetch image "quay.io/openshift-knative/serving/httpproxy:v1.17`
author_association: CONTRIBUTOR
user: login: openshift-ci-robot
created_at: 2025-05-15T09:21:00Z
body: /retest-required

Remaining retests: 0 against base HEAD 5f2e8281ea36299e74a8efee63c571980ef721ee and 2 for PR HEAD d7781501d4bc000a5df8e0254371918692926b75 in total

author_association: NONE
user: login: creydr
created_at: 2025-05-16T07:47:11Z
body: /test ?
author_association: CONTRIBUTOR
user: login: openshift-ci[bot]
created_at: 2025-05-16T07:47:16Z
body: @creydr: The following commands are available to trigger required jobs:
```
/test 414-images
```
```
/test 414-operator-e2e
```
```
/test 414-test-upgrade
```
```
/test 418-aws-ovn-images
```
```
/test 418-azure-images
```
```
/test 418-gcp-images
```
```
/test 418-hypershift-images
```
```
/test 418-images
```
```
/test 418-operator-e2e
```
```
/test 418-osd-images
```
```
/test 418-single-node-images
```
```
/test 418-test-upgrade
```
```
/test 418-vsphere-images
```
```
/test 419-images
```
```
/test 419-operator-e2e
```
```
/test 419-test-upgrade
```
```
/test ocp4.18-lp-rosa-classic-images
```
```
/test ocp4.19-lp-interop-images
```

The following commands are available to trigger optional jobs:
```
/test 414-kitchensink-e2e
```
```
/test 414-kitchensink-upgrade
```
```
/test 414-mesh-e2e
```
```
/test 414-mesh-upgrade
```
```
/test 414-test-soak
```
```
/test 414-ui-e2e
```
```
/test 414-upstream-e2e
```
```
/test 414-upstream-e2e-kafka
```
```
/test 418-kitchensink-e2e
```
```
/test 418-kitchensink-upgrade
```
```
/test 418-mesh-e2e
```
```
/test 418-mesh-upgrade
```
```
/test 418-test-soak
```
```
/test 418-ui-e2e
```
```
/test 418-upstream-e2e
```
```
/test 418-upstream-e2e-kafka
```
```
/test 419-kitchensink-e2e
```
```
/test 419-kitchensink-upgrade
```
```
/test 419-mesh-e2e
```
```
/test 419-mesh-upgrade
```
```
/test 419-test-soak
```
```
/test 419-ui-e2e
```
```
/test 419-upstream-e2e
```
```
/test 419-upstream-e2e-kafka
```

Use `/test all` to run the following jobs that were automatically triggered:
```
pull-ci-openshift-knative-serverless-operator-main-418-aws-ovn-images
```
```
pull-ci-openshift-knative-serverless-operator-main-418-azure-images
```
```
pull-ci-openshift-knative-serverless-operator-main-418-gcp-images
```
```
pull-ci-openshift-knative-serverless-operator-main-418-hypershift-images
```
```
pull-ci-openshift-knative-serverless-operator-main-418-images
```
```
pull-ci-openshift-knative-serverless-operator-main-418-operator-e2e
```
```
pull-ci-openshift-knative-serverless-operator-main-418-osd-images
```
```
pull-ci-openshift-knative-serverless-operator-main-418-single-node-images
```
```
pull-ci-openshift-knative-serverless-operator-main-418-test-upgrade
```
```
pull-ci-openshift-knative-serverless-operator-main-418-upstream-e2e
```
```
pull-ci-openshift-knative-serverless-operator-main-418-upstream-e2e-kafka
```
```
pull-ci-openshift-knative-serverless-operator-main-418-vsphere-images
```
```
pull-ci-openshift-knative-serverless-operator-main-ocp4.18-lp-rosa-classic-images
```
```
pull-ci-openshift-knative-serverless-operator-main-ocp4.19-lp-interop-images
```



<details>

In response to [this](https://github.com/openshift-knative/serverless-operator/pull/3689#issuecomment-2885927349):

>/test ?


Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes-sigs/prow](https://github.com/kubernetes-sigs/prow/issues/new?title=Prow%20issue:) repository.
</details>
author_association: CONTRIBUTOR
user: login: creydr
created_at: 2025-05-19T06:54:06Z
body: ```
    custom_route_test.go:168: Expecting a HTTP 200 response with "Hello World!", got 200: Hello World! How about some tasty noodles?
--- FAIL: TestCustomOpenShiftRoute (32.37s)
FAIL test/servinge2e/kourier.TestCustomOpenShiftRoute (32.37s)
FAIL test/servinge2e/kourier
```
Maybe 55b0edbd28a913a15264d5b7aa969464cdab9a19 is wrong. In [1923299312998027264](https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift-knative_serverless-operator/3689/pull-ci-openshift-knative-serverless-operator-main-418-operator-e2e/1923299312998027264) we got `Unable to fetch image "quay.io/redhat-user-workloads/ocp-serverless-tenant/serverless-operator-137/kn-serving-test-helloworld-go:latest` :thinking: 
author_association: CONTRIBUTOR
user: login: creydr
created_at: 2025-05-19T09:23:26Z
body: /test 418-mesh-e2e
author_association: CONTRIBUTOR
user: login: dsimansk
created_at: 2025-05-19T12:29:46Z
body: /lgtm
author_association: CONTRIBUTOR
user: login: openshift-ci[bot]
created_at: 2025-05-19T12:29:53Z
body: [APPROVALNOTIFIER] This PR is **APPROVED**

This pull-request has been approved by: *<a href="https://github.com/openshift-knative/serverless-operator/pull/3689#" title="Author self-approved">creydr</a>*, *<a href="https://github.com/openshift-knative/serverless-operator/pull/3689#issuecomment-2890835207" title="LGTM">dsimansk</a>*, *<a href="https://github.com/openshift-knative/serverless-operator/pull/3689#pullrequestreview-2850559931" title="Approved">Fedosin</a>*

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

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

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

- ~~[OWNERS](https://github.com/openshift-knative/serverless-operator/blob/main/OWNERS)~~ [creydr,dsimansk]

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":[]} -->
author_association: CONTRIBUTOR