Repository: knative/serving
Pull request #12307 (2021-11-17 16:06:25)

use annotation helpers
- bump knative.dev/networking
- Use annotation helper functions



Part of https://github.com/knative/serving/issues/12103


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

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

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

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

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

- ~~[OWNERS](https://github.com/knative/serving/blob/main/OWNERS)~~ [dprotaso]

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":[]} -->
codecov[bot]: # [Codecov](https://codecov.io/gh/knative/serving/pull/12307?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative) Report
> Merging [#12307](https://codecov.io/gh/knative/serving/pull/12307?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative) (b88e9b1) into [main](https://codecov.io/gh/knative/serving/commit/7e71496e52df3af39e56b662f192fa477c7a58b4?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative) (7e71496) will **increase** coverage by `0.15%`.
> The diff coverage is `78.57%`.

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

```diff
@@            Coverage Diff             @@
##             main   #12307      +/-   ##
==========================================
+ Coverage   87.31%   87.47%   +0.15%     
==========================================
  Files         195      195              
  Lines        9610     9595      -15     
==========================================
+ Hits         8391     8393       +2     
+ Misses        939      922      -17     
  Partials      280      280              
```


| [Impacted Files](https://codecov.io/gh/knative/serving/pull/12307?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative) | Coverage Δ | |
|---|---|---|
| [pkg/reconciler/nscert/nscert.go](https://codecov.io/gh/knative/serving/pull/12307/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative#diff-cGtnL3JlY29uY2lsZXIvbnNjZXJ0L25zY2VydC5nbw==) | `69.87% <0.00%> (ø)` | |
| [pkg/reconciler/route/route.go](https://codecov.io/gh/knative/serving/pull/12307/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative#diff-cGtnL3JlY29uY2lsZXIvcm91dGUvcm91dGUuZ28=) | `78.40% <66.66%> (ø)` | |
| [pkg/reconciler/route/resources/ingress.go](https://codecov.io/gh/knative/serving/pull/12307/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative#diff-cGtnL3JlY29uY2lsZXIvcm91dGUvcmVzb3VyY2VzL2luZ3Jlc3MuZ28=) | `93.06% <87.50%> (ø)` | |
| [pkg/reconciler/domainmapping/reconciler.go](https://codecov.io/gh/knative/serving/pull/12307/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative#diff-cGtnL3JlY29uY2lsZXIvZG9tYWlubWFwcGluZy9yZWNvbmNpbGVyLmdv) | `92.10% <100.00%> (ø)` | |
| [pkg/reconciler/revision/background.go](https://codecov.io/gh/knative/serving/pull/12307/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative#diff-cGtnL3JlY29uY2lsZXIvcmV2aXNpb24vYmFja2dyb3VuZC5nbw==) | `90.00% <0.00%> (-1.82%)` | :arrow_down: |
| [cmd/queue/main.go](https://codecov.io/gh/knative/serving/pull/12307/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative#diff-Y21kL3F1ZXVlL21haW4uZ28=) | `0.53% <0.00%> (+0.03%)` | :arrow_up: |
| [pkg/autoscaler/statforwarder/leases.go](https://codecov.io/gh/knative/serving/pull/12307/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative#diff-cGtnL2F1dG9zY2FsZXIvc3RhdGZvcndhcmRlci9sZWFzZXMuZ28=) | `76.97% <0.00%> (+1.43%)` | :arrow_up: |
| [pkg/autoscaler/statserver/server.go](https://codecov.io/gh/knative/serving/pull/12307/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative#diff-cGtnL2F1dG9zY2FsZXIvc3RhdHNlcnZlci9zZXJ2ZXIuZ28=) | `79.61% <0.00%> (+1.94%)` | :arrow_up: |

------

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

nader-ziada: /lgtm
knative-prow-robot: @dprotaso: PR needs rebase.

<details>

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/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository.
</details>
knative-prow-robot: New changes are detected. LGTM label has been removed.
nader-ziada: /lgtm

Patch:
diff --git a/go.mod b/go.mod
index 902503c7e..b5efbf380 100644
--- a/go.mod
+++ b/go.mod
@@ -45,7 +45,7 @@ require (
 	k8s.io/utils v0.0.0-20210111153108-fddb29f9d009 // indirect
 	knative.dev/caching v0.0.0-20211117091234-89a3cb9bc119
 	knative.dev/hack v0.0.0-20211112192837-128cf0150a69
-	knative.dev/networking v0.0.0-20211117091734-66e47364eb5c
+	knative.dev/networking v0.0.0-20211117141434-4d634effa7b7
 	knative.dev/pkg v0.0.0-20211117100634-54071addcdb8
 	sigs.k8s.io/yaml v1.3.0
 )
diff --git a/go.sum b/go.sum
index ff8d932b8..a7b2ef29f 100644
--- a/go.sum
+++ b/go.sum
@@ -1608,8 +1608,8 @@ knative.dev/caching v0.0.0-20211117091234-89a3cb9bc119 h1:YFpgPAdKrOxzRm2OYyqvbQ
 knative.dev/caching v0.0.0-20211117091234-89a3cb9bc119/go.mod h1:FSLPsqZioiPjIP1UvxjEY2VKnBfctQoQzH/skySdAqM=
 knative.dev/hack v0.0.0-20211112192837-128cf0150a69 h1:/3NW6B9VeqAwpW0ZAS+8xLfwgVMIqH+CPmesDATovhk=
 knative.dev/hack v0.0.0-20211112192837-128cf0150a69/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI=
-knative.dev/networking v0.0.0-20211117091734-66e47364eb5c h1:quPRCst/2oQYU9zzrt/J726gJElyfXWUZ/vUzuf5oJ8=
-knative.dev/networking v0.0.0-20211117091734-66e47364eb5c/go.mod h1:gEz/FkP2zpbXS1Pg/+oUjA3eUMgVFTmIG5pDBBiUzQM=
+knative.dev/networking v0.0.0-20211117141434-4d634effa7b7 h1:teeoQe15N0VpxIdQ45tfXK786rPs1tIfuyS20rGdcCM=
+knative.dev/networking v0.0.0-20211117141434-4d634effa7b7/go.mod h1:llkl8XkuVxcdm/FJvPfOSscb6IrOyATQ1fpCQ/uFwuE=
 knative.dev/pkg v0.0.0-20211116213053-d82be484e4c3/go.mod h1:VqUp1KWJqpTDNoiSI/heaX3uMdubImslJE2tBkP+Bbw=
 knative.dev/pkg v0.0.0-20211117100634-54071addcdb8 h1:wpZDf2oNNPqhgGCvfBMyroXtAXoxyovRswXu0emmN8Q=
 knative.dev/pkg v0.0.0-20211117100634-54071addcdb8/go.mod h1:VqUp1KWJqpTDNoiSI/heaX3uMdubImslJE2tBkP+Bbw=
diff --git a/pkg/reconciler/domainmapping/reconciler.go b/pkg/reconciler/domainmapping/reconciler.go
index 67d2971d6..8708358e9 100644
--- a/pkg/reconciler/domainmapping/reconciler.go
+++ b/pkg/reconciler/domainmapping/reconciler.go
@@ -99,7 +99,7 @@ func (r *Reconciler) ReconcileKind(ctx context.Context, dm *v1alpha1.DomainMappi
 	dm.Status.Address = &duckv1.Addressable{URL: url}
 
 	// IngressClass can be set via annotations or in the config map.
-	ingressClass := dm.Annotations[networking.IngressClassAnnotationKey]
+	ingressClass := networking.GetIngressClass(dm.Annotations)
 	if ingressClass == "" {
 		ingressClass = config.FromContext(ctx).Network.DefaultIngressClass
 	}
@@ -181,7 +181,7 @@ func autoTLSEnabled(ctx context.Context, dm *v1alpha1.DomainMapping) bool {
 	if !config.FromContext(ctx).Network.AutoTLS {
 		return false
 	}
-	annotationValue := dm.Annotations[networking.DisableAutoTLSAnnotationKey]
+	annotationValue := networking.GetDisableAutoTLS(dm.Annotations)
 	disabledByAnnotation, err := strconv.ParseBool(annotationValue)
 	if annotationValue != "" && err != nil {
 		logger := logging.FromContext(ctx)
diff --git a/pkg/reconciler/nscert/nscert.go b/pkg/reconciler/nscert/nscert.go
index e1644deac..6f4d13c7a 100644
--- a/pkg/reconciler/nscert/nscert.go
+++ b/pkg/reconciler/nscert/nscert.go
@@ -56,7 +56,7 @@ var _ namespacereconciler.Interface = (*reconciler)(nil)
 var domainTemplateRegex = regexp.MustCompile(`^\*\..+$`)
 
 func certClass(ctx context.Context, r *corev1.Namespace) string {
-	if class := r.Annotations[networking.CertificateClassAnnotationKey]; class != "" {
+	if class := networking.GetCertificateClass(r.Annotations); class != "" {
 		return class
 	}
 	return config.FromContext(ctx).Network.DefaultCertificateClass
diff --git a/pkg/reconciler/route/resources/ingress.go b/pkg/reconciler/route/resources/ingress.go
index e081b3f69..a17f56a41 100644
--- a/pkg/reconciler/route/resources/ingress.go
+++ b/pkg/reconciler/route/resources/ingress.go
@@ -195,7 +195,7 @@ func makeIngressSpec(
 		}
 	}
 
-	httpOption, err := getHTTPOption(ctx, r.Annotations)
+	httpProtocol, err := getHTTPProtocol(ctx, r.Annotations)
 	if err != nil {
 		return netv1alpha1.IngressSpec{}, err
 	}
@@ -203,20 +203,20 @@ func makeIngressSpec(
 	return netv1alpha1.IngressSpec{
 		Rules:      rules,
 		TLS:        tls,
-		HTTPOption: httpOption,
+		HTTPOption: httpProtocol,
 	}, nil
 }
 
-func getHTTPOption(ctx context.Context, annotations map[string]string) (netv1alpha1.HTTPOption, error) {
-	if len(annotations) != 0 && annotations[networking.HTTPOptionAnnotationKey] != "" {
-		annotation := annotations[networking.HTTPOptionAnnotationKey]
-		switch strings.ToLower(annotation) {
-		case "enabled":
+func getHTTPProtocol(ctx context.Context, annotations map[string]string) (netv1alpha1.HTTPOption, error) {
+	if len(annotations) != 0 && networking.GetHTTPProtocol(annotations) != "" {
+		protocol := strings.ToLower(networking.GetHTTPProtocol(annotations))
+		switch network.HTTPProtocol(protocol) {
+		case network.HTTPEnabled:
 			return netv1alpha1.HTTPOptionEnabled, nil
-		case "redirected":
+		case network.HTTPRedirected:
 			return netv1alpha1.HTTPOptionRedirected, nil
 		default:
-			return "", fmt.Errorf("incorrect HTTPOption annotation:" + annotation)
+			return "", fmt.Errorf("incorrect http-protocol annotation:" + protocol)
 		}
 	}
 
diff --git a/pkg/reconciler/route/route.go b/pkg/reconciler/route/route.go
index f522e5b49..0cfb0816e 100644
--- a/pkg/reconciler/route/route.go
+++ b/pkg/reconciler/route/route.go
@@ -83,14 +83,14 @@ type Reconciler struct {
 var _ routereconciler.Interface = (*Reconciler)(nil)
 
 func ingressClassForRoute(ctx context.Context, r *v1.Route) string {
-	if ingressClass := r.Annotations[networking.IngressClassAnnotationKey]; ingressClass != "" {
+	if ingressClass := networking.GetIngressClass(r.Annotations); ingressClass != "" {
 		return ingressClass
 	}
 	return config.FromContext(ctx).Network.DefaultIngressClass
 }
 
 func certClass(ctx context.Context, r *v1.Route) string {
-	if class := r.Annotations[networking.CertificateClassAnnotationKey]; class != "" {
+	if class := networking.GetCertificateClass(r.Annotations); class != "" {
 		return class
 	}
 	return config.FromContext(ctx).Network.DefaultCertificateClass
@@ -476,7 +476,7 @@ func autoTLSEnabled(ctx context.Context, r *v1.Route) bool {
 	}
 
 	logger := logging.FromContext(ctx)
-	annotationValue := r.Annotations[networking.DisableAutoTLSAnnotationKey]
+	annotationValue := networking.GetDisableAutoTLS(r.Annotations)
 
 	disabledByAnnotation, err := strconv.ParseBool(annotationValue)
 	if annotationValue != "" && err != nil {
diff --git a/support/COMMUNITY_CONTACTS.md b/support/COMMUNITY_CONTACTS.md
index 9c389316c..a98b357a5 100644
--- a/support/COMMUNITY_CONTACTS.md
+++ b/support/COMMUNITY_CONTACTS.md
@@ -68,7 +68,6 @@ rotation, feel free to send a PR to remove yourself.
 - [carlisia](https://github.com/carlisia)
 - [dprotaso](https://github.com/dprotaso)
 - [julz](https://github.com/julz)
-- [markusthoemmes](https://github.com/markusthoemmes)
 - [nader-ziada](https://github.com/nader-ziada)
 - [nak3](https://github.com/nak3)
 - [shinigambit](https://github.com/shinigambit)
diff --git a/support/support.rotation b/support/support.rotation
index e895d0020..a64fce334 100644
--- a/support/support.rotation
+++ b/support/support.rotation
@@ -19,9 +19,9 @@
 2021-12-13T01:00:00Z | julz
 2021-12-20T01:00:00Z | N/A - break
 2021-12-27T01:00:00Z | N/A - break
-2022-01-03T01:00:00Z | markusthoemmes
+2022-01-03T01:00:00Z | TBD
 2022-01-10T01:00:00Z | nader-ziada
 2022-01-11T01:00:00Z | yanweiguo
-2022-01-17T01:00:00Z | nak3s
+2022-01-17T01:00:00Z | nak3
 2022-01-24T01:00:00Z | shinigambit
 2022-02-07T01:00:00Z | ZhiminXiang
diff --git a/vendor/knative.dev/networking/pkg/apis/networking/register.go b/vendor/knative.dev/networking/pkg/apis/networking/register.go
index aac6a5edd..204e72d73 100644
--- a/vendor/knative.dev/networking/pkg/apis/networking/register.go
+++ b/vendor/knative.dev/networking/pkg/apis/networking/register.go
@@ -84,3 +84,19 @@ var (
 	// DefaultRetryCount will be set if Attempts not specified.
 	DefaultRetryCount = 3
 )
+
+func GetIngressClass(annotations map[string]string) (val string) {
+	return annotations[IngressClassAnnotationKey]
+}
+
+func GetCertificateClass(annotations map[string]string) (val string) {
+	return annotations[CertificateClassAnnotationKey]
+}
+
+func GetHTTPProtocol(annotations map[string]string) (val string) {
+	return annotations[HTTPOptionAnnotationKey]
+}
+
+func GetDisableAutoTLS(annotations map[string]string) (val string) {
+	return annotations[DisableAutoTLSAnnotationKey]
+}
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 4867e872a..b75f1ad2a 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -1016,7 +1016,7 @@ knative.dev/caching/pkg/client/listers/caching/v1alpha1
 ## explicit
 knative.dev/hack
 knative.dev/hack/shell
-# knative.dev/networking v0.0.0-20211117091734-66e47364eb5c
+# knative.dev/networking v0.0.0-20211117141434-4d634effa7b7
 ## explicit
 knative.dev/networking/config
 knative.dev/networking/pkg


Test patch:
diff --git a/pkg/reconciler/route/reconcile_resources_test.go b/pkg/reconciler/route/reconcile_resources_test.go
index 521df64ee..7e8335bfb 100644
--- a/pkg/reconciler/route/reconcile_resources_test.go
+++ b/pkg/reconciler/route/reconcile_resources_test.go
@@ -608,7 +608,7 @@ func TestReconcileIngressClassAnnotation(t *testing.T) {
 	}
 
 	updated = getRouteIngressFromClient(ctx, t, r)
-	updatedClass := updated.Annotations[networking.IngressClassAnnotationKey]
+	updatedClass := networking.GetIngressClass(updated.Annotations)
 	if expClass != updatedClass {
 		t.Errorf("Unexpected annotation got %q want %q", expClass, updatedClass)
 	}
diff --git a/test/config/ytt/ingress/ambassador/ambassador-ingress-class.yaml b/test/config/ytt/ingress/ambassador/ambassador-ingress-class.yaml
deleted file mode 100644
index 7544ae23e..000000000
--- a/test/config/ytt/ingress/ambassador/ambassador-ingress-class.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-#@ load("@ytt:overlay", "overlay")
-
-#@data/values
----
-serving:
-  ingress_class: ambassador.ingress.networking.knative.dev
diff --git a/test/config/ytt/ingress/ambassador/ambassador-replicas.yaml b/test/config/ytt/ingress/ambassador/ambassador-replicas.yaml
deleted file mode 100644
index c28335313..000000000
--- a/test/config/ytt/ingress/ambassador/ambassador-replicas.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-#@ load("@ytt:overlay", "overlay")
-#@ load("helpers.lib.yaml", "subset")
-
-#@overlay/match by=subset(kind="Deployment", name="ambassador")
----
-spec:
-  #@overlay/match missing_ok=True
-  replicas: 6
diff --git a/test/config/ytt/ingress/kong/kong-ingress-class.yaml b/test/config/ytt/ingress/kong/kong-ingress-class.yaml
deleted file mode 100644
index c69698874..000000000
--- a/test/config/ytt/ingress/kong/kong-ingress-class.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-#@ load("@ytt:overlay", "overlay")
-
-#@data/values
----
-serving:
-  ingress_class: kong
diff --git a/test/config/ytt/ingress/kong/kong-replicas.yaml b/test/config/ytt/ingress/kong/kong-replicas.yaml
deleted file mode 100644
index 22e5df51b..000000000
--- a/test/config/ytt/ingress/kong/kong-replicas.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-#@ load("@ytt:overlay", "overlay")
-#@ load("helpers.lib.yaml", "subset")
-
-#@overlay/match by=subset(kind="Deployment", name="ingress-kong")
----
-spec:
-  #@overlay/match missing_ok=True
-  replicas: 6
diff --git a/test/config/ytt/kind/ingress/ambassador-kind.yaml b/test/config/ytt/kind/ingress/ambassador-kind.yaml
deleted file mode 100644
index 501ef81f1..000000000
--- a/test/config/ytt/kind/ingress/ambassador-kind.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-#@ load("@ytt:overlay", "overlay")
-#@ load("helpers.lib.yaml", "subset")
-
-#@overlay/match by=subset(kind="Deployment", name="ambassador")
----
-spec:
-  #@overlay/match missing_ok=True
-  replicas: 1
diff --git a/test/config/ytt/kind/ingress/kong-kind.yaml b/test/config/ytt/kind/ingress/kong-kind.yaml
deleted file mode 100644
index 03c2b1717..000000000
--- a/test/config/ytt/kind/ingress/kong-kind.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-#@ load("@ytt:overlay", "overlay")
-#@ load("helpers.lib.yaml", "subset")
-
-#@overlay/match by=subset(kind="Deployment", name="ingress-kong")
----
-spec:
-  #@overlay/match missing_ok=True
-  replicas: 1
diff --git a/test/e2e-common.sh b/test/e2e-common.sh
index 7f564936c..f872e5038 100644
--- a/test/e2e-common.sh
+++ b/test/e2e-common.sh
@@ -24,7 +24,6 @@ export CERT_MANAGER_VERSION="latest"
 export INGRESS_CLASS=${INGRESS_CLASS:-istio.ingress.networking.knative.dev}
 export ISTIO_VERSION="latest"
 export KOURIER_VERSION=""
-export AMBASSADOR_VERSION=""
 export CONTOUR_VERSION=""
 export CERTIFICATE_CLASS=""
 # Only build linux/amd64 bit images
@@ -143,13 +142,6 @@ function parse_flags() {
       readonly INGRESS_CLASS="kourier.ingress.networking.knative.dev"
       return 2
       ;;
-    --ambassador-version)
-      # currently, the value of --ambassador-version is ignored
-      # latest version of Ambassador pinned in third_party will be installed
-      readonly AMBASSADOR_VERSION=$2
-      readonly INGRESS_CLASS="ambassador.ingress.networking.knative.dev"
-      return 2
-      ;;
     --contour-version)
       # currently, the value of --contour-version is ignored
       # latest version of Contour pinned in third_party will be installed
@@ -157,13 +149,6 @@ function parse_flags() {
       readonly INGRESS_CLASS="contour.ingress.networking.knative.dev"
       return 2
       ;;
-    --kong-version)
-      # currently, the value of --kong-version is ignored
-      # latest version of Kong pinned in third_party will be installed
-      readonly KONG_VERSION=$2
-      readonly INGRESS_CLASS="kong"
-      return 2
-      ;;
     --system-namespace)
       [[ -z "$2" ]] || [[ $2 = --* ]] && fail_test "Missing argument to --system-namespace"
       export SYSTEM_NAMESPACE=$2
diff --git a/test/e2e-networking-library.sh b/test/e2e-networking-library.sh
index b0fc6efd6..35e0ecaca 100644
--- a/test/e2e-networking-library.sh
+++ b/test/e2e-networking-library.sh
@@ -101,17 +101,9 @@ function setup_ingress_env_vars() {
     export GATEWAY_OVERRIDE=kourier
     export GATEWAY_NAMESPACE_OVERRIDE=kourier-system
   fi
-  if is_ingress_class ambassador; then
-    export GATEWAY_OVERRIDE=ambassador
-    export GATEWAY_NAMESPACE_OVERRIDE=ambassador
-  fi
   if is_ingress_class contour; then
     export GATEWAY_OVERRIDE=envoy
     export GATEWAY_NAMESPACE_OVERRIDE=contour-external
   fi
-  if is_ingress_class kong; then
-    export GATEWAY_OVERRIDE=kong-proxy
-    export GATEWAY_NAMESPACE_OVERRIDE=kong
-  fi
 }
 
diff --git a/third_party/ambassador-latest/README.md b/third_party/ambassador-latest/README.md
deleted file mode 100644
index 231d690d7..000000000
--- a/third_party/ambassador-latest/README.md
+++ /dev/null
@@ -1,37 +0,0 @@
-### Ambassador
-
-`ambassador-rbac.yaml` and `ambassador-service.yaml` are required to install
-Ambassador. These need to be updated every time Ambassador's version is bumped.
-Detailed instructions on installing Ambassador are available
-[here](https://www.getambassador.io/user-guide/getting-started/).
-
-These files are hosted at:
-
-- https://www.getambassador.io/yaml/ambassador/ambassador-crds.yaml
-- https://www.getambassador.io/yaml/ambassador/ambassador-rbac.yaml
-
-After updating the files, make sure any other modifications required to run
-Knative with Ambassador are made as well. For instance:
-
-- Set the environment variable `AMBASSADOR_KNATIVE_SUPPORT` to `true` in the
-  deployment `ambassador`.
-- Update the namespace in the ClusterRoleBinding `ambassador` to `ambassador`.
-  It should look like:
-
-```yaml
-apiVersion: rbac.authorization.k8s.io/v1beta1
-kind: ClusterRoleBinding
-metadata:
-  name: ambassador
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: ClusterRole
-  name: ambassador
-subjects:
-  - kind: ServiceAccount
-    name: ambassador
-    namespace: ambassador
-```
-
-Make sure the modifications are done as per the
-[installation documentation](https://knative.dev/docs/install/).
diff --git a/third_party/ambassador-latest/ambassador-crds.yaml b/third_party/ambassador-latest/ambassador-crds.yaml
deleted file mode 100644
index ee1df7316..000000000
--- a/third_party/ambassador-latest/ambassador-crds.yaml
+++ /dev/null
@@ -1,293 +0,0 @@
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: authservices.getambassador.io
-spec:
-  group: getambassador.io
-  names:
-    categories:
-    - ambassador-crds
-    kind: AuthService
-    plural: authservices
-    singular: authservice
-  scope: Namespaced
-  version: v2
-  versions:
-  - name: v2
-    served: true
-    storage: true
-  - name: v1
-    served: true
-    storage: false
----
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: consulresolvers.getambassador.io
-spec:
-  group: getambassador.io
-  names:
-    categories:
-    - ambassador-crds
-    kind: ConsulResolver
-    plural: consulresolvers
-    singular: consulresolver
-  scope: Namespaced
-  version: v2
-  versions:
-  - name: v2
-    served: true
-    storage: true
-  - name: v1
-    served: true
-    storage: false
----
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: hosts.getambassador.io
-spec:
-  additionalPrinterColumns:
-  - JSONPath: .spec.hostname
-    name: Hostname
-    type: string
-  - JSONPath: .status.state
-    name: State
-    type: string
-  - JSONPath: .status.phaseCompleted
-    name: Phase Completed
-    type: string
-  - JSONPath: .status.phasePending
-    name: Phase Pending
-    type: string
-  - JSONPath: .metadata.creationTimestamp
-    name: Age
-    type: date
-  group: getambassador.io
-  names:
-    categories:
-    - ambassador-crds
-    kind: Host
-    plural: hosts
-    singular: host
-  scope: Namespaced
-  subresources:
-    status: {}
-  version: v2
-  versions:
-  - name: v2
-    served: true
-    storage: true
----
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: kubernetesendpointresolvers.getambassador.io
-spec:
-  group: getambassador.io
-  names:
-    categories:
-    - ambassador-crds
-    kind: KubernetesEndpointResolver
-    plural: kubernetesendpointresolvers
-    singular: kubernetesendpointresolver
-  scope: Namespaced
-  version: v2
-  versions:
-  - name: v2
-    served: true
-    storage: true
-  - name: v1
-    served: true
-    storage: false
----
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: kubernetesserviceresolvers.getambassador.io
-spec:
-  group: getambassador.io
-  names:
-    categories:
-    - ambassador-crds
-    kind: KubernetesServiceResolver
-    plural: kubernetesserviceresolvers
-    singular: kubernetesserviceresolver
-  scope: Namespaced
-  version: v2
-  versions:
-  - name: v2
-    served: true
-    storage: true
-  - name: v1
-    served: true
-    storage: false
----
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: logservices.getambassador.io
-spec:
-  group: getambassador.io
-  names:
-    categories:
-    - ambassador-crds
-    kind: LogService
-    plural: logservices
-    singular: logservice
-  scope: Namespaced
-  version: v2
-  versions:
-  - name: v2
-    served: true
-    storage: true
-  - name: v1
-    served: true
-    storage: false
----
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: mappings.getambassador.io
-spec:
-  additionalPrinterColumns:
-  - JSONPath: .spec.prefix
-    name: Prefix
-    type: string
-  - JSONPath: .spec.service
-    name: Service
-    type: string
-  - JSONPath: .status.state
-    name: State
-    type: string
-  - JSONPath: .status.reason
-    name: Reason
-    type: string
-  group: getambassador.io
-  names:
-    categories:
-    - ambassador-crds
-    kind: Mapping
-    plural: mappings
-    singular: mapping
-  scope: Namespaced
-  subresources:
-    status: {}
-  version: v2
-  versions:
-  - name: v2
-    served: true
-    storage: true
-  - name: v1
-    served: true
-    storage: false
----
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: modules.getambassador.io
-spec:
-  group: getambassador.io
-  names:
-    categories:
-    - ambassador-crds
-    kind: Module
-    plural: modules
-    singular: module
-  scope: Namespaced
-  version: v2
-  versions:
-  - name: v2
-    served: true
-    storage: true
-  - name: v1
-    served: true
-    storage: false
----
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: ratelimitservices.getambassador.io
-spec:
-  group: getambassador.io
-  names:
-    categories:
-    - ambassador-crds
-    kind: RateLimitService
-    plural: ratelimitservices
-    singular: ratelimitservice
-  scope: Namespaced
-  version: v2
-  versions:
-  - name: v2
-    served: true
-    storage: true
-  - name: v1
-    served: true
-    storage: false
----
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: tcpmappings.getambassador.io
-spec:
-  group: getambassador.io
-  names:
-    categories:
-    - ambassador-crds
-    kind: TCPMapping
-    plural: tcpmappings
-    singular: tcpmapping
-  scope: Namespaced
-  version: v2
-  versions:
-  - name: v2
-    served: true
-    storage: true
-  - name: v1
-    served: true
-    storage: false
----
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: tlscontexts.getambassador.io
-spec:
-  group: getambassador.io
-  names:
-    categories:
-    - ambassador-crds
-    kind: TLSContext
-    plural: tlscontexts
-    singular: tlscontext
-  scope: Namespaced
-  version: v2
-  versions:
-  - name: v2
-    served: true
-    storage: true
-  - name: v1
-    served: true
-    storage: false
----
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: tracingservices.getambassador.io
-spec:
-  group: getambassador.io
-  names:
-    categories:
-    - ambassador-crds
-    kind: TracingService
-    plural: tracingservices
-    singular: tracingservice
-  scope: Namespaced
-  version: v2
-  versions:
-  - name: v2
-    served: true
-    storage: true
-  - name: v1
-    served: true
-    storage: false
diff --git a/third_party/ambassador-latest/ambassador-namespace.yaml b/third_party/ambassador-latest/ambassador-namespace.yaml
deleted file mode 100644
index ece11b279..000000000
--- a/third_party/ambassador-latest/ambassador-namespace.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-apiVersion: v1
-kind: Namespace
-metadata:
-  name: ambassador
diff --git a/third_party/ambassador-latest/ambassador-rbac.yaml b/third_party/ambassador-latest/ambassador-rbac.yaml
deleted file mode 100644
index 8f112fc7e..000000000
--- a/third_party/ambassador-latest/ambassador-rbac.yaml
+++ /dev/null
@@ -1,145 +0,0 @@
----
-apiVersion: v1
-kind: Service
-metadata:
-  labels:
-    service: ambassador-admin
-    app.kubernetes.io/managed-by: getambassador.io
-  name: ambassador-admin
-  namespace: ambassador
-spec:
-  type: NodePort
-  ports:
-  - name: ambassador-admin
-    port: 8877
-    targetPort: 8877
-  selector:
-    service: ambassador
----
-apiVersion: rbac.authorization.k8s.io/v1beta1
-kind: ClusterRole
-metadata:
-  name: ambassador
-rules:
-- apiGroups: [""]
-  resources: [ "endpoints", "namespaces", "secrets", "services" ]
-  verbs: ["get", "list", "watch"]
-- apiGroups: [ "getambassador.io" ]
-  resources: [ "*" ]
-  verbs: ["get", "list", "watch"]
-- apiGroups: [ "getambassador.io" ]
-  resources: [ "mappings/status" ]
-  verbs: ["update"]
-- apiGroups: [ "apiextensions.k8s.io" ]
-  resources: [ "customresourcedefinitions" ]
-  verbs: ["get", "list", "watch"]
-- apiGroups: [ "networking.internal.knative.dev" ]
-  resources: [ "clusteringresses", "ingresses" ]
-  verbs: ["get", "list", "watch"]
-- apiGroups: [ "networking.internal.knative.dev" ]
-  resources: [ "ingresses/status", "clusteringresses/status" ]
-  verbs: ["update"]
-- apiGroups: [ "extensions", "networking.k8s.io" ]
-  resources: [ "ingresses", "ingressclasses" ]
-  verbs: ["get", "list", "watch"]
-- apiGroups: [ "extensions", "networking.k8s.io" ]
-  resources: [ "ingresses/status" ]
-  verbs: ["update"]
----
-apiVersion: v1
-kind: ServiceAccount
-metadata:
-  name: ambassador
-  namespace: ambassador
----
-apiVersion: rbac.authorization.k8s.io/v1beta1
-kind: ClusterRoleBinding
-metadata:
-  name: ambassador
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: ClusterRole
-  name: ambassador
-subjects:
-- kind: ServiceAccount
-  name: ambassador
-  namespace: ambassador
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  name: ambassador
-  namespace: ambassador
-spec:
-  replicas: 3
-  selector:
-    matchLabels:
-      service: ambassador
-  template:
-    metadata:
-      annotations:
-        consul.hashicorp.com/connect-inject: 'false'
-        sidecar.istio.io/inject: 'false'
-      labels:
-        service: ambassador
-        app.kubernetes.io/managed-by: getambassador.io
-    spec:
-      affinity:
-        podAntiAffinity:
-          preferredDuringSchedulingIgnoredDuringExecution:
-          - podAffinityTerm:
-              labelSelector:
-                matchLabels:
-                  service: ambassador
-              topologyKey: kubernetes.io/hostname
-            weight: 100
-      containers:
-      - env:
-        - name: AMBASSADOR_KNATIVE_SUPPORT
-          value: "true"
-        - name: AMBASSADOR_NAMESPACE
-          valueFrom:
-            fieldRef:
-              fieldPath: metadata.namespace
-        image: quay.io/datawire/ambassador:1.4.2
-        livenessProbe:
-          httpGet:
-            path: /ambassador/v0/check_alive
-            port: 8877
-          initialDelaySeconds: 30
-          periodSeconds: 3
-        name: ambassador
-        ports:
-        - containerPort: 8080
-          name: http
-        - containerPort: 8443
-          name: https
-        - containerPort: 8877
-          name: admin
-        readinessProbe:
-          httpGet:
-            path: /ambassador/v0/check_ready
-            port: 8877
-          initialDelaySeconds: 30
-          periodSeconds: 3
-        resources:
-          limits:
-            cpu: 1
-            memory: 400Mi
-          requests:
-            cpu: 200m
-            memory: 100Mi
-        volumeMounts:
-        - mountPath: /tmp/ambassador-pod-info
-          name: ambassador-pod-info
-      restartPolicy: Always
-      securityContext:
-        runAsUser: 8888
-      serviceAccountName: ambassador
-      volumes:
-      - downwardAPI:
-          items:
-          - fieldRef:
-              fieldPath: metadata.labels
-            path: labels
-        name: ambassador-pod-info
diff --git a/third_party/ambassador-latest/ambassador-service.yaml b/third_party/ambassador-latest/ambassador-service.yaml
deleted file mode 100644
index 21550677e..000000000
--- a/third_party/ambassador-latest/ambassador-service.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
----
-apiVersion: v1
-kind: Service
-metadata:
-  name: ambassador
-  namespace: ambassador
-  labels:
-    app.kubernetes.io/component: ambassador-service
-spec:
-  type: LoadBalancer
-  externalTrafficPolicy: Local
-  ports:
-   - port: 80
-     targetPort: 8080
-     name: http
-   - port: 443
-     targetPort: 8443
-     name: https
-  selector:
-    service: ambassador
diff --git a/third_party/cert-manager-latest/net-certmanager.yaml b/third_party/cert-manager-latest/net-certmanager.yaml
index fb5f70711..37b8f0dff 100644
--- a/third_party/cert-manager-latest/net-certmanager.yaml
+++ b/third_party/cert-manager-latest/net-certmanager.yaml
@@ -19,9 +19,9 @@ metadata:
   name: knative-serving-certmanager
   labels:
     app.kubernetes.io/component: net-certmanager
-    app.kubernetes.io/version: "20211112-fb971861"
+    app.kubernetes.io/version: "20211117-680fe929"
     app.kubernetes.io/name: knative-serving
-    serving.knative.dev/release: "v20211112-fb971861"
+    serving.knative.dev/release: "v20211117-680fe929"
     serving.knative.dev/controller: "true"
     networking.knative.dev/certificate-provider: cert-manager
 rules:
@@ -53,9 +53,9 @@ metadata:
   name: config.webhook.net-certmanager.networking.internal.knative.dev
   labels:
     app.kubernetes.io/component: net-certmanager
-    app.kubernetes.io/version: "20211112-fb971861"
+    app.kubernetes.io/version: "20211117-680fe929"
     app.kubernetes.io/name: knative-serving
-    serving.knative.dev/release: "v20211112-fb971861"
+    serving.knative.dev/release: "v20211117-680fe929"
     networking.knative.dev/certificate-provider: cert-manager
 webhooks:
   - admissionReviewVersions:
@@ -95,9 +95,9 @@ metadata:
   namespace: knative-serving
   labels:
     app.kubernetes.io/component: net-certmanager
-    app.kubernetes.io/version: "20211112-fb971861"
+    app.kubernetes.io/version: "20211117-680fe929"
     app.kubernetes.io/name: knative-serving
-    serving.knative.dev/release: "v20211112-fb971861"
+    serving.knative.dev/release: "v20211117-680fe929"
     networking.knative.dev/certificate-provider: cert-manager
 
 ---
@@ -122,9 +122,9 @@ metadata:
   namespace: knative-serving
   labels:
     app.kubernetes.io/component: net-certmanager
-    app.kubernetes.io/version: "20211112-fb971861"
+    app.kubernetes.io/version: "20211117-680fe929"
     app.kubernetes.io/name: knative-serving
-    serving.knative.dev/release: "v20211112-fb971861"
+    serving.knative.dev/release: "v20211117-680fe929"
     networking.knative.dev/certificate-provider: cert-manager
 data:
   _example: |
@@ -172,9 +172,9 @@ metadata:
   namespace: knative-serving
   labels:
     app.kubernetes.io/component: net-certmanager
-    app.kubernetes.io/version: "20211112-fb971861"
+    app.kubernetes.io/version: "20211117-680fe929"
     app.kubernetes.io/name: knative-serving
-    serving.knative.dev/release: "v20211112-fb971861"
+    serving.knative.dev/release: "v20211117-680fe929"
     networking.knative.dev/certificate-provider: cert-manager
 spec:
   selector:
@@ -187,16 +187,16 @@ spec:
       labels:
         app: net-certmanager-controller
         app.kubernetes.io/component: net-certmanager
-        app.kubernetes.io/version: "20211112-fb971861"
+        app.kubernetes.io/version: "20211117-680fe929"
         app.kubernetes.io/name: knative-serving
-        serving.knative.dev/release: "v20211112-fb971861"
+        serving.knative.dev/release: "v20211117-680fe929"
     spec:
       serviceAccountName: controller
       containers:
         - name: controller
           # This is the Go import path for the binary that is containerized
           # and substituted here.
-          image: gcr.io/knative-nightly/knative.dev/net-certmanager/cmd/controller@sha256:e5fc03d9841280b484329ff0180c363e8a4e7ada32216ecee89d89e41862b0c8
+          image: gcr.io/knative-nightly/knative.dev/net-certmanager/cmd/controller@sha256:6f75591bf78b73a074eb73437e55458c76835e3ae81557f0c818b6eb4fd9a730
           resources:
             requests:
               cpu: 30m
@@ -235,9 +235,9 @@ metadata:
   labels:
     app: net-certmanager-controller
     app.kubernetes.io/component: net-certmanager
-    app.kubernetes.io/version: "20211112-fb971861"
+    app.kubernetes.io/version: "20211117-680fe929"
     app.kubernetes.io/name: knative-serving
-    serving.knative.dev/release: "v20211112-fb971861"
+    serving.knative.dev/release: "v20211117-680fe929"
     networking.knative.dev/certificate-provider: cert-manager
   name: net-certmanager-controller
   namespace: knative-serving
@@ -275,9 +275,9 @@ metadata:
   namespace: knative-serving
   labels:
     app.kubernetes.io/component: net-certmanager
-    app.kubernetes.io/version: "20211112-fb971861"
+    app.kubernetes.io/version: "20211117-680fe929"
     app.kubernetes.io/name: knative-serving
-    serving.knative.dev/release: "v20211112-fb971861"
+    serving.knative.dev/release: "v20211117-680fe929"
     networking.knative.dev/certificate-provider: cert-manager
 spec:
   selector:
@@ -291,17 +291,17 @@ spec:
       labels:
         app: net-certmanager-webhook
         app.kubernetes.io/component: net-certmanager
-        app.kubernetes.io/version: "20211112-fb971861"
+        app.kubernetes.io/version: "20211117-680fe929"
         app.kubernetes.io/name: knative-serving
         role: net-certmanager-webhook
-        serving.knative.dev/release: "v20211112-fb971861"
+        serving.knative.dev/release: "v20211117-680fe929"
     spec:
       serviceAccountName: controller
       containers:
         - name: webhook
           # This is the Go import path for the binary that is containerized
           # and substituted here.
-          image: gcr.io/knative-nightly/knative.dev/net-certmanager/cmd/webhook@sha256:e9082549f98c748c3a68b39aa0ea79d3b495b57655ab01b60abea2159ea07910
+          image: gcr.io/knative-nightly/knative.dev/net-certmanager/cmd/webhook@sha256:1c2e54173658bfa4a1550501f3dc070efb8b11be8552a01a46ae354b608ec135
           resources:
             requests:
               cpu: 20m
@@ -361,9 +361,9 @@ metadata:
   labels:
     role: net-certmanager-webhook
     app.kubernetes.io/component: net-certmanager
-    app.kubernetes.io/version: "20211112-fb971861"
+    app.kubernetes.io/version: "20211117-680fe929"
     app.kubernetes.io/name: knative-serving
-    serving.knative.dev/release: "v20211112-fb971861"
+    serving.knative.dev/release: "v20211117-680fe929"
     networking.knative.dev/certificate-provider: cert-manager
 spec:
   ports:
diff --git a/third_party/kong-latest/README.md b/third_party/kong-latest/README.md
deleted file mode 100644
index d2852885e..000000000
--- a/third_party/kong-latest/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-The kong.yaml file is generated by running
-
-```
-./download-kong.sh
-```
diff --git a/third_party/kong-latest/download-kong.sh b/third_party/kong-latest/download-kong.sh
deleted file mode 100755
index 42e685f37..000000000
--- a/third_party/kong-latest/download-kong.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env bash
-
-# Copyright 2019 The Knative Authors
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-set -ex
-
-# Download Kong
-KONG_VERSION=0.9.x
-KONG_YAML=all-in-one-dbless.yaml
-DOWNLOAD_URL=https://raw.githubusercontent.com/Kong/kubernetes-ingress-controller/${KONG_VERSION}/deploy/single/${KONG_YAML}
-
-wget -O kong.yaml ${DOWNLOAD_URL}
diff --git a/third_party/kong-latest/kong.yaml b/third_party/kong-latest/kong.yaml
deleted file mode 100644
index ab54e2e3c..000000000
--- a/third_party/kong-latest/kong.yaml
+++ /dev/null
@@ -1,750 +0,0 @@
-apiVersion: v1
-kind: Namespace
-metadata:
-  name: kong
----
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: kongclusterplugins.configuration.konghq.com
-spec:
-  additionalPrinterColumns:
-  - JSONPath: .plugin
-    description: Name of the plugin
-    name: Plugin-Type
-    type: string
-  - JSONPath: .metadata.creationTimestamp
-    description: Age
-    name: Age
-    type: date
-  - JSONPath: .disabled
-    description: Indicates if the plugin is disabled
-    name: Disabled
-    priority: 1
-    type: boolean
-  - JSONPath: .config
-    description: Configuration of the plugin
-    name: Config
-    priority: 1
-    type: string
-  group: configuration.konghq.com
-  names:
-    kind: KongClusterPlugin
-    plural: kongclusterplugins
-    shortNames:
-    - kcp
-  scope: Cluster
-  validation:
-    openAPIV3Schema:
-      properties:
-        config:
-          type: object
-        configFrom:
-          properties:
-            secretKeyRef:
-              properties:
-                key:
-                  type: string
-                name:
-                  type: string
-                namespace:
-                  type: string
-              required:
-              - name
-              - namespace
-              - key
-              type: object
-          type: object
-        disabled:
-          type: boolean
-        plugin:
-          type: string
-        protocols:
-          items:
-            enum:
-            - http
-            - https
-            - grpc
-            - grpcs
-            - tcp
-            - tls
-            type: string
-          type: array
-        run_on:
-          enum:
-          - first
-          - second
-          - all
-          type: string
-      required:
-      - plugin
-  version: v1
----
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: kongconsumers.configuration.konghq.com
-spec:
-  additionalPrinterColumns:
-  - JSONPath: .username
-    description: Username of a Kong Consumer
-    name: Username
-    type: string
-  - JSONPath: .metadata.creationTimestamp
-    description: Age
-    name: Age
-    type: date
-  group: configuration.konghq.com
-  names:
-    kind: KongConsumer
-    plural: kongconsumers
-    shortNames:
-    - kc
-  scope: Namespaced
-  validation:
-    openAPIV3Schema:
-      properties:
-        credentials:
-          items:
-            type: string
-          type: array
-        custom_id:
-          type: string
-        username:
-          type: string
-  version: v1
----
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: kongcredentials.configuration.konghq.com
-spec:
-  additionalPrinterColumns:
-  - JSONPath: .type
-    description: Type of credential
-    name: Credential-type
-    type: string
-  - JSONPath: .metadata.creationTimestamp
-    description: Age
-    name: Age
-    type: date
-  - JSONPath: .consumerRef
-    description: Owner of the credential
-    name: Consumer-Ref
-    type: string
-  group: configuration.konghq.com
-  names:
-    kind: KongCredential
-    plural: kongcredentials
-  scope: Namespaced
-  validation:
-    openAPIV3Schema:
-      properties:
-        consumerRef:
-          type: string
-        type:
-          type: string
-      required:
-      - consumerRef
-      - type
-  version: v1
----
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: kongingresses.configuration.konghq.com
-spec:
-  group: configuration.konghq.com
-  names:
-    kind: KongIngress
-    plural: kongingresses
-    shortNames:
-    - ki
-  scope: Namespaced
-  validation:
-    openAPIV3Schema:
-      properties:
-        proxy:
-          properties:
-            connect_timeout:
-              minimum: 0
-              type: integer
-            path:
-              pattern: ^/.*$
-              type: string
-            protocol:
-              enum:
-              - http
-              - https
-              - grpc
-              - grpcs
-              - tcp
-              - tls
-              type: string
-            read_timeout:
-              minimum: 0
-              type: integer
-            retries:
-              minimum: 0
-              type: integer
-            write_timeout:
-              minimum: 0
-              type: integer
-          type: object
-        route:
-          properties:
-            headers:
-              additionalProperties:
-                items:
-                  type: string
-                type: array
-              type: object
-            https_redirect_status_code:
-              type: integer
-            methods:
-              items:
-                type: string
-              type: array
-            path_handling:
-              enum:
-              - v0
-              - v1
-              type: string
-            preserve_host:
-              type: boolean
-            protocols:
-              items:
-                enum:
-                - http
-                - https
-                - grpc
-                - grpcs
-                - tcp
-                - tls
-                type: string
-              type: array
-            regex_priority:
-              type: integer
-            strip_path:
-              type: boolean
-        upstream:
-          properties:
-            algorithm:
-              enum:
-              - round-robin
-              - consistent-hashing
-              - least-connections
-              type: string
-            hash_fallback:
-              type: string
-            hash_fallback_header:
-              type: string
-            hash_on:
-              type: string
-            hash_on_cookie:
-              type: string
-            hash_on_cookie_path:
-              type: string
-            hash_on_header:
-              type: string
-            healthchecks:
-              properties:
-                active:
-                  properties:
-                    concurrency:
-                      minimum: 1
-                      type: integer
-                    healthy:
-                      properties:
-                        http_statuses:
-                          items:
-                            type: integer
-                          type: array
-                        interval:
-                          minimum: 0
-                          type: integer
-                        successes:
-                          minimum: 0
-                          type: integer
-                      type: object
-                    http_path:
-                      pattern: ^/.*$
-                      type: string
-                    timeout:
-                      minimum: 0
-                      type: integer
-                    unhealthy:
-                      properties:
-                        http_failures:
-                          minimum: 0
-                          type: integer
-                        http_statuses:
-                          items:
-                            type: integer
-                          type: array
-                        interval:
-                          minimum: 0
-                          type: integer
-                        tcp_failures:
-                          minimum: 0
-                          type: integer
-                        timeout:
-                          minimum: 0
-                          type: integer
-                      type: object
-                  type: object
-                passive:
-                  properties:
-                    healthy:
-                      properties:
-                        http_statuses:
-                          items:
-                            type: integer
-                          type: array
-                        interval:
-                          minimum: 0
-                          type: integer
-                        successes:
-                          minimum: 0
-                          type: integer
-                      type: object
-                    unhealthy:
-                      properties:
-                        http_failures:
-                          minimum: 0
-                          type: integer
-                        http_statuses:
-                          items:
-                            type: integer
-                          type: array
-                        interval:
-                          minimum: 0
-                          type: integer
-                        tcp_failures:
-                          minimum: 0
-                          type: integer
-                        timeout:
-                          minimum: 0
-                          type: integer
-                      type: object
-                  type: object
-                threshold:
-                  type: integer
-              type: object
-            host_header:
-              type: string
-            slots:
-              minimum: 10
-              type: integer
-          type: object
-  version: v1
----
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: kongplugins.configuration.konghq.com
-spec:
-  additionalPrinterColumns:
-  - JSONPath: .plugin
-    description: Name of the plugin
-    name: Plugin-Type
-    type: string
-  - JSONPath: .metadata.creationTimestamp
-    description: Age
-    name: Age
-    type: date
-  - JSONPath: .disabled
-    description: Indicates if the plugin is disabled
-    name: Disabled
-    priority: 1
-    type: boolean
-  - JSONPath: .config
-    description: Configuration of the plugin
-    name: Config
-    priority: 1
-    type: string
-  group: configuration.konghq.com
-  names:
-    kind: KongPlugin
-    plural: kongplugins
-    shortNames:
-    - kp
-  scope: Namespaced
-  validation:
-    openAPIV3Schema:
-      properties:
-        config:
-          type: object
-        configFrom:
-          properties:
-            secretKeyRef:
-              properties:
-                key:
-                  type: string
-                name:
-                  type: string
-              required:
-              - name
-              - key
-              type: object
-          type: object
-        disabled:
-          type: boolean
-        plugin:
-          type: string
-        protocols:
-          items:
-            enum:
-            - http
-            - https
-            - grpc
-            - grpcs
-            - tcp
-            - tls
-            type: string
-          type: array
-        run_on:
-          enum:
-          - first
-          - second
-          - all
-          type: string
-      required:
-      - plugin
-  version: v1
----
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: tcpingresses.configuration.konghq.com
-spec:
-  additionalPrinterColumns:
-  - JSONPath: .status.loadBalancer.ingress[*].ip
-    description: Address of the load balancer
-    name: Address
-    type: string
-  - JSONPath: .metadata.creationTimestamp
-    description: Age
-    name: Age
-    type: date
-  group: configuration.konghq.com
-  names:
-    kind: TCPIngress
-    plural: tcpingresses
-  scope: Namespaced
-  subresources:
-    status: {}
-  validation:
-    openAPIV3Schema:
-      properties:
-        apiVersion:
-          type: string
-        kind:
-          type: string
-        metadata:
-          type: object
-        spec:
-          properties:
-            rules:
-              items:
-                properties:
-                  backend:
-                    properties:
-                      serviceName:
-                        type: string
-                      servicePort:
-                        format: int32
-                        type: integer
-                    type: object
-                  host:
-                    type: string
-                  port:
-                    format: int32
-                    type: integer
-                type: object
-              type: array
-            tls:
-              items:
-                properties:
-                  hosts:
-                    items:
-                      type: string
-                    type: array
-                  secretName:
-                    type: string
-                type: object
-              type: array
-          type: object
-        status:
-          type: object
-  version: v1beta1
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
----
-apiVersion: v1
-kind: ServiceAccount
-metadata:
-  name: kong-serviceaccount
-  namespace: kong
----
-apiVersion: rbac.authorization.k8s.io/v1beta1
-kind: ClusterRole
-metadata:
-  name: kong-ingress-clusterrole
-rules:
-- apiGroups:
-  - ""
-  resources:
-  - endpoints
-  - nodes
-  - pods
-  - secrets
-  verbs:
-  - list
-  - watch
-- apiGroups:
-  - ""
-  resources:
-  - nodes
-  verbs:
-  - get
-- apiGroups:
-  - ""
-  resources:
-  - services
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - networking.k8s.io
-  - extensions
-  - networking.internal.knative.dev
-  resources:
-  - ingresses
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - ""
-  resources:
-  - events
-  verbs:
-  - create
-  - patch
-- apiGroups:
-  - networking.k8s.io
-  - extensions
-  - networking.internal.knative.dev
-  resources:
-  - ingresses/status
-  verbs:
-  - update
-- apiGroups:
-  - configuration.konghq.com
-  resources:
-  - tcpingresses/status
-  verbs:
-  - update
-- apiGroups:
-  - configuration.konghq.com
-  resources:
-  - kongplugins
-  - kongclusterplugins
-  - kongcredentials
-  - kongconsumers
-  - kongingresses
-  - tcpingresses
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - ""
-  resources:
-  - configmaps
-  verbs:
-  - create
-  - get
-  - update
----
-apiVersion: rbac.authorization.k8s.io/v1beta1
-kind: ClusterRoleBinding
-metadata:
-  name: kong-ingress-clusterrole-nisa-binding
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: ClusterRole
-  name: kong-ingress-clusterrole
-subjects:
-- kind: ServiceAccount
-  name: kong-serviceaccount
-  namespace: kong
----
-apiVersion: v1
-kind: Service
-metadata:
-  annotations:
-    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
-    service.beta.kubernetes.io/aws-load-balancer-type: nlb
-  name: kong-proxy
-  namespace: kong
-spec:
-  ports:
-  - name: proxy
-    port: 80
-    protocol: TCP
-    targetPort: 8000
-  - name: proxy-ssl
-    port: 443
-    protocol: TCP
-    targetPort: 8443
-  selector:
-    app: ingress-kong
-  type: LoadBalancer
----
-apiVersion: v1
-kind: Service
-metadata:
-  name: kong-validation-webhook
-  namespace: kong
-spec:
-  ports:
-  - name: webhook
-    port: 443
-    protocol: TCP
-    targetPort: 8080
-  selector:
-    app: ingress-kong
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  labels:
-    app: ingress-kong
-  name: ingress-kong
-  namespace: kong
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: ingress-kong
-  template:
-    metadata:
-      annotations:
-        kuma.io/gateway: enabled
-        prometheus.io/port: "8100"
-        prometheus.io/scrape: "true"
-        traffic.sidecar.istio.io/includeInboundPorts: ""
-      labels:
-        app: ingress-kong
-    spec:
-      containers:
-      - env:
-        - name: KONG_PROXY_LISTEN
-          value: 0.0.0.0:8000, 0.0.0.0:8443 ssl http2
-        - name: KONG_ADMIN_LISTEN
-          value: 127.0.0.1:8444 ssl
-        - name: KONG_STATUS_LISTEN
-          value: 0.0.0.0:8100
-        - name: KONG_DATABASE
-          value: "off"
-        - name: KONG_NGINX_WORKER_PROCESSES
-          value: "1"
-        - name: KONG_ADMIN_ACCESS_LOG
-          value: /dev/stdout
-        - name: KONG_ADMIN_ERROR_LOG
-          value: /dev/stderr
-        - name: KONG_PROXY_ERROR_LOG
-          value: /dev/stderr
-        image: kong:2.0
-        lifecycle:
-          preStop:
-            exec:
-              command:
-              - /bin/sh
-              - -c
-              - kong quit
-        livenessProbe:
-          failureThreshold: 3
-          httpGet:
-            path: /status
-            port: 8100
-            scheme: HTTP
-          initialDelaySeconds: 5
-          periodSeconds: 10
-          successThreshold: 1
-          timeoutSeconds: 1
-        name: proxy
-        ports:
-        - containerPort: 8000
-          name: proxy
-          protocol: TCP
-        - containerPort: 8443
-          name: proxy-ssl
-          protocol: TCP
-        - containerPort: 8100
-          name: metrics
-          protocol: TCP
-        readinessProbe:
-          failureThreshold: 3
-          httpGet:
-            path: /status
-            port: 8100
-            scheme: HTTP
-          initialDelaySeconds: 5
-          periodSeconds: 10
-          successThreshold: 1
-          timeoutSeconds: 1
-        securityContext:
-          runAsUser: 1000
-      - env:
-        - name: CONTROLLER_KONG_ADMIN_URL
-          value: https://127.0.0.1:8444
-        - name: CONTROLLER_KONG_ADMIN_TLS_SKIP_VERIFY
-          value: "true"
-        - name: CONTROLLER_PUBLISH_SERVICE
-          value: kong/kong-proxy
-        - name: POD_NAME
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.name
-        - name: POD_NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: kong-docker-kubernetes-ingress-controller.bintray.io/kong-ingress-controller:0.9.1
-        imagePullPolicy: IfNotPresent
-        livenessProbe:
-          failureThreshold: 3
-          httpGet:
-            path: /healthz
-            port: 10254
-            scheme: HTTP
-          initialDelaySeconds: 5
-          periodSeconds: 10
-          successThreshold: 1
-          timeoutSeconds: 1
-        name: ingress-controller
-        ports:
-        - containerPort: 8080
-          name: webhook
-          protocol: TCP
-        readinessProbe:
-          failureThreshold: 3
-          httpGet:
-            path: /healthz
-            port: 10254
-            scheme: HTTP
-          initialDelaySeconds: 5
-          periodSeconds: 10
-          successThreshold: 1
-          timeoutSeconds: 1
-      serviceAccountName: kong-serviceaccount