From cbc1aa60ef6a51c476bfc529d0b131df48c8b9a7 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Tue, 18 Nov 2025 21:50:15 -0800 Subject: [PATCH 001/146] Create config-network-adapters.md Create file - table test --- docs/versioned/serving/config-network-adapters.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 docs/versioned/serving/config-network-adapters.md diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md new file mode 100644 index 0000000000..a56515c3a3 --- /dev/null +++ b/docs/versioned/serving/config-network-adapters.md @@ -0,0 +1,12 @@ +--- +audience: administrator +components: + - serving +function: how-to +--- + +# Configuring network adapters + +| Adapter | Description | Pros | Cons | Case usage | +| --- | --- | --- | --- | --- | +| Kourier | - Knative recommended default.
- Designed for Knative Serving.
- Envoy-based.
- Lightweight. | - Simple setup.
- Resource efficient. | No Ingress API support.
- Limited Features.
- No Service Mesh. | Default choice for most users.
For developers who want a Knative-focused ingress without full service mesh complexity. | \ No newline at end of file From 14b81f442c250d2705ef90ffc79fc13eda369a1c Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Tue, 18 Nov 2025 22:00:52 -0800 Subject: [PATCH 002/146] Added Nav Added Nav and fixed H1 --- docs/versioned/.nav.yml | 1 + docs/versioned/serving/config-network-adapters.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/versioned/.nav.yml b/docs/versioned/.nav.yml index dafe945ba1..77ccc8a3f5 100644 --- a/docs/versioned/.nav.yml +++ b/docs/versioned/.nav.yml @@ -271,6 +271,7 @@ nav: - Configure domain names: serving/using-a-custom-domain.md - Istio Authorization: serving/istio-authorization.md - Extending Queue Proxy image with QPOptions: serving/queue-extensions.md + - Configure network adapters: serving/config-network-adapters.md - Serving configuration: - Configure Deployment resources: serving/configuration/deployment.md - Configure gradual rollout of traffic to Revisions: serving/configuration/rolling-out-latest-revision-configmap.md diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index a56515c3a3..4386d0750a 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -5,7 +5,7 @@ components: function: how-to --- -# Configuring network adapters +# Configure network adapters | Adapter | Description | Pros | Cons | Case usage | | --- | --- | --- | --- | --- | From 3b315cbbaf1c074d17ac16b1eba3fbfffe80d13c Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Tue, 18 Nov 2025 22:56:33 -0800 Subject: [PATCH 003/146] Update config-network-adapters.md Formatting test --- docs/versioned/serving/config-network-adapters.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 4386d0750a..d3c3081974 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -7,6 +7,8 @@ function: how-to # Configure network adapters -| Adapter | Description | Pros | Cons | Case usage | -| --- | --- | --- | --- | --- | -| Kourier | - Knative recommended default.
- Designed for Knative Serving.
- Envoy-based.
- Lightweight. | - Simple setup.
- Resource efficient. | No Ingress API support.
- Limited Features.
- No Service Mesh. | Default choice for most users.
For developers who want a Knative-focused ingress without full service mesh complexity. | \ No newline at end of file +This page describes and compares the following network adapters and options for Knative. + +- Kourier + + Designed for Knative serving, and the default choice for most users. Has a simple setup. Best for developers who want a Knative-focused ingress without full service mesh complexity. From 9a212b2912e278619c14178e6e0522a4454478b5 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 19 Nov 2025 00:17:43 -0800 Subject: [PATCH 004/146] Update config-network-adapters.md More writing --- .../serving/config-network-adapters.md | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index d3c3081974..31b6b839ed 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -7,8 +7,26 @@ function: how-to # Configure network adapters -This page describes and compares the following network adapters and options for Knative. +This page describes and provides installation and configuration guidance for the following network adapters for Knative. - Kourier - Designed for Knative serving, and the default choice for most users. Has a simple setup. Best for developers who want a Knative-focused ingress without full service mesh complexity. + Designed for Knative Serving with efficient serverless function deployment is the goal. Has a simple setup. The default choice for most users when a service mesh is not required. Has a simple setup. + +- Contour + + General-purpose Envoy-based ingress controller with full Kubernetes Ingress support. A Knative ingress controller that integrates with Project Contour, translating Knative Ingress into Contour’s HTTPProxy resources. + + A good choice for clusters that already run non-Knative apps and want to reuse a single Ingress controller as well as teams who are already using Contour/Envoy and wanting Knative integration with advanced routing but not full service mesh. + +- Istio + + A full-feature service mesh integrated with Knative that can also function as a Knative ingress. Best for enterprises already running Istio or needing advanced service mesh features alongside Knative. + +- Gateway API + + Emerging Kubernetes-native networking API (replacing Ingress) supported by Knative. Requires a compatible Gateway controller such as Contour or Istio. In beta stage of development. + + Provides a set of standardized, vendor-neutral APIs (GatewayClass, Gateway, HTTPRoute, etc.) that aim to be more expressive and extensible than traditional Ingress APIs. It is a specification, not an implementation itself. + + Best for forward-looking teams adopting Gateway API to unify ingress across Kubernetes, with Knative leveraging the same standard. From 2300e4ffefdb6818398d656241bfc33b558f9818 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 19 Nov 2025 23:58:31 -0800 Subject: [PATCH 005/146] Added snippet file for Kourier Snippet testing --- docs/snippets/netadapter-kourier.md | 18 +++++++++++ .../serving/config-network-adapters.md | 30 ++++++++++++++----- 2 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 docs/snippets/netadapter-kourier.md diff --git a/docs/snippets/netadapter-kourier.md b/docs/snippets/netadapter-kourier.md new file mode 100644 index 0000000000..4b66fbe401 --- /dev/null +++ b/docs/snippets/netadapter-kourier.md @@ -0,0 +1,18 @@ + + The following commands install Kourier and enable its Knative integration. + + 1. Install the Knative Kourier controller by running the command: + ```bash + kubectl apply -f {{ artifact(repo="net-kourier",org="knative-extensions",file="kourier.yaml")}} + ``` + + 1. Configure Knative Serving to use Kourier by default by running the command: + ```bash + kubectl patch configmap/config-network \ + --namespace knative-serving \ + --type merge \ + --patch '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}' + ``` diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 31b6b839ed..16d9714fd6 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -9,24 +9,40 @@ function: how-to This page describes and provides installation and configuration guidance for the following network adapters for Knative. -- Kourier +#### Kourier Designed for Knative Serving with efficient serverless function deployment is the goal. Has a simple setup. The default choice for most users when a service mesh is not required. Has a simple setup. -- Contour +#### Contour General-purpose Envoy-based ingress controller with full Kubernetes Ingress support. A Knative ingress controller that integrates with Project Contour, translating Knative Ingress into Contour’s HTTPProxy resources. A good choice for clusters that already run non-Knative apps and want to reuse a single Ingress controller as well as teams who are already using Contour/Envoy and wanting Knative integration with advanced routing but not full service mesh. -- Istio +#### Istio A full-feature service mesh integrated with Knative that can also function as a Knative ingress. Best for enterprises already running Istio or needing advanced service mesh features alongside Knative. -- Gateway API +#### Gateway API - Emerging Kubernetes-native networking API (replacing Ingress) supported by Knative. Requires a compatible Gateway controller such as Contour or Istio. In beta stage of development. - - Provides a set of standardized, vendor-neutral APIs (GatewayClass, Gateway, HTTPRoute, etc.) that aim to be more expressive and extensible than traditional Ingress APIs. It is a specification, not an implementation itself. + Emerging Kubernetes-native networking API (replacing Ingress)extensible than traditional Ingress APIs. It is a specification, not an implementation itself. Best for forward-looking teams adopting Gateway API to unify ingress across Kubernetes, with Knative leveraging the same standard. + + ```mermaid + flowchart TB + subgraph s1["Gateway API"] + HR[HTTPRoute] + GW[Gateway listener] + end + KSvc["Knative Service"] -- owns --> Route + Route -- creates --> HR + Route -- creates --> GW + ``` +## Setup and configurations + +### Kourier + +--8<-- "netadapter-kourier.md" + + From e6167d0c85962dd0cc1c34f745698a8f16b3420c Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 20 Nov 2025 00:10:10 -0800 Subject: [PATCH 006/146] Update config-network-adapters.md snippet testing --- .../serving/config-network-adapters.md | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 16d9714fd6..81e2e85083 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -9,40 +9,41 @@ function: how-to This page describes and provides installation and configuration guidance for the following network adapters for Knative. -#### Kourier +- Kourier - Designed for Knative Serving with efficient serverless function deployment is the goal. Has a simple setup. The default choice for most users when a service mesh is not required. Has a simple setup. + Designed for Knative Serving with efficient serverless function deployment is the goal. Has a simple setup. The default choice for most users when a service mesh is not required. Has a simple setup. -#### Contour +- Contour - General-purpose Envoy-based ingress controller with full Kubernetes Ingress support. A Knative ingress controller that integrates with Project Contour, translating Knative Ingress into Contour’s HTTPProxy resources. + General-purpose Envoy-based ingress controller with full Kubernetes Ingress support. A Knative ingress controller that integrates with Project Contour, translating Knative Ingress into Contour’s HTTPProxy resources. - A good choice for clusters that already run non-Knative apps and want to reuse a single Ingress controller as well as teams who are already using Contour/Envoy and wanting Knative integration with advanced routing but not full service mesh. + A good choice for clusters that already run non-Knative apps and want to reuse a single Ingress controller as well as teams who are already using Contour/Envoy and wanting Knative integration with advanced routing but not full service mesh. -#### Istio +- Istio - A full-feature service mesh integrated with Knative that can also function as a Knative ingress. Best for enterprises already running Istio or needing advanced service mesh features alongside Knative. + A full-feature service mesh integrated with Knative that can also function as a Knative ingress. Best for enterprises already running Istio or needing advanced service mesh features alongside Knative. -#### Gateway API +- Gateway API - Emerging Kubernetes-native networking API (replacing Ingress)extensible than traditional Ingress APIs. It is a specification, not an implementation itself. + Emerging Kubernetes-native networking API (replacing Ingress)extensible than traditional Ingress APIs. It is a specification, not an implementation itself. - Best for forward-looking teams adopting Gateway API to unify ingress across Kubernetes, with Knative leveraging the same standard. + Best for forward-looking teams adopting Gateway API to unify ingress across Kubernetes, with Knative leveraging the same standard. - ```mermaid - flowchart TB - subgraph s1["Gateway API"] - HR[HTTPRoute] - GW[Gateway listener] - end - KSvc["Knative Service"] -- owns --> Route - Route -- creates --> HR - Route -- creates --> GW + ```mermaid + flowchart TB + subgraph s1["Gateway API"] + HR[HTTPRoute] + GW[Gateway listener] + end + KSvc["Knative Service"] -- owns --> Route + Route -- creates --> HR + Route -- creates --> GW ``` + ## Setup and configurations ### Kourier ---8<-- "netadapter-kourier.md" +--8<-- "about-eventing.md" From d283146fc3db2df08f6be5ab7f6e6cf87b551ee0 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 20 Nov 2025 07:08:53 -0800 Subject: [PATCH 007/146] Update config-network-adapters.md Snippet name fix --- .../serving/config-network-adapters.md | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 81e2e85083..50540caaf5 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -11,39 +11,39 @@ This page describes and provides installation and configuration guidance for the - Kourier - Designed for Knative Serving with efficient serverless function deployment is the goal. Has a simple setup. The default choice for most users when a service mesh is not required. Has a simple setup. + Designed for Knative Serving with efficient serverless function deployment is the goal. Has a simple setup. The default choice for most users when a service mesh is not required. Has a simple setup. - Contour - General-purpose Envoy-based ingress controller with full Kubernetes Ingress support. A Knative ingress controller that integrates with Project Contour, translating Knative Ingress into Contour’s HTTPProxy resources. + General-purpose Envoy-based ingress controller with full Kubernetes Ingress support. A Knative ingress controller that integrates with Project Contour, translating Knative Ingress into Contour’s HTTPProxy resources. - A good choice for clusters that already run non-Knative apps and want to reuse a single Ingress controller as well as teams who are already using Contour/Envoy and wanting Knative integration with advanced routing but not full service mesh. + A good choice for clusters that already run non-Knative apps and want to reuse a single Ingress controller as well as teams who are already using Contour/Envoy and wanting Knative integration with advanced routing but not full service mesh. - Istio - A full-feature service mesh integrated with Knative that can also function as a Knative ingress. Best for enterprises already running Istio or needing advanced service mesh features alongside Knative. + A full-feature service mesh integrated with Knative that can also function as a Knative ingress. Best for enterprises already running Istio or needing advanced service mesh features alongside Knative. - Gateway API - Emerging Kubernetes-native networking API (replacing Ingress)extensible than traditional Ingress APIs. It is a specification, not an implementation itself. + Emerging Kubernetes-native networking API (replacing Ingress)extensible than traditional Ingress APIs. It is a specification, not an implementation itself. - Best for forward-looking teams adopting Gateway API to unify ingress across Kubernetes, with Knative leveraging the same standard. + Best for forward-looking teams adopting Gateway API to unify ingress across Kubernetes, with Knative leveraging the same standard. - ```mermaid - flowchart TB - subgraph s1["Gateway API"] - HR[HTTPRoute] - GW[Gateway listener] - end - KSvc["Knative Service"] -- owns --> Route - Route -- creates --> HR - Route -- creates --> GW - ``` + ```mermaid + flowchart TB + subgraph s1["Gateway API"] + HR[HTTPRoute] + GW[Gateway listener] + end + KSvc["Knative Service"] -- owns --> Route + Route -- creates --> HR + Route -- creates --> GW + ``` ## Setup and configurations ### Kourier ---8<-- "about-eventing.md" +--8<-- "netadapter-kourier.md" From 5062101c9b0c97d179600a99c2f673153ecab78b Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 20 Nov 2025 09:40:05 -0800 Subject: [PATCH 008/146] Snippet fix Formatting tests --- docs/snippets/netadapter-kourier.md | 24 +++++++++---------- .../serving/config-network-adapters.md | 24 +++++++++---------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/snippets/netadapter-kourier.md b/docs/snippets/netadapter-kourier.md index 4b66fbe401..d7adf3b86b 100644 --- a/docs/snippets/netadapter-kourier.md +++ b/docs/snippets/netadapter-kourier.md @@ -1,18 +1,18 @@ - The following commands install Kourier and enable its Knative integration. +The following commands install Kourier and enable its Knative integration. - 1. Install the Knative Kourier controller by running the command: +1. Install the Knative Kourier controller by running the command: +```bash +kubectl apply -f {{ artifact(repo="net-kourier",org="knative-extensions",file="kourier.yaml")}} +``` + +1. Configure Knative Serving to use Kourier by default by running the command: ```bash - kubectl apply -f {{ artifact(repo="net-kourier",org="knative-extensions",file="kourier.yaml")}} + kubectl patch configmap/config-network \ + --namespace knative-serving \ + --type merge \ + --patch '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}' ``` - - 1. Configure Knative Serving to use Kourier by default by running the command: - ```bash - kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}' - ``` diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 50540caaf5..906dd27717 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -29,18 +29,18 @@ This page describes and provides installation and configuration guidance for the Best for forward-looking teams adopting Gateway API to unify ingress across Kubernetes, with Knative leveraging the same standard. - ```mermaid - flowchart TB - subgraph s1["Gateway API"] - HR[HTTPRoute] - GW[Gateway listener] - end - KSvc["Knative Service"] -- owns --> Route - Route -- creates --> HR - Route -- creates --> GW - ``` - -## Setup and configurations +```mermaid +flowchart TB + subgraph s1["Gateway API"] + HR[HTTPRoute] + GW[Gateway listener] + end + KSvc["Knative Service"] -- owns --> Route + Route -- creates --> HR + Route -- creates --> GW + ``` + +## Setup and configuration ### Kourier From 916f3b4bb256ebe0e86cd51c0e16a4688a761aa3 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 20 Nov 2025 09:58:45 -0800 Subject: [PATCH 009/146] Update config-network-adapters.md Formatting fix --- .../serving/config-network-adapters.md | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 906dd27717..9681c81a43 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -30,15 +30,20 @@ This page describes and provides installation and configuration guidance for the Best for forward-looking teams adopting Gateway API to unify ingress across Kubernetes, with Knative leveraging the same standard. ```mermaid +--- +config: + theme: base + layout: elk + look: classic +--- flowchart TB - subgraph s1["Gateway API"] - HR[HTTPRoute] - GW[Gateway listener] + subgraph s1["Gateway API"] + HR["HTTPRoute"] + GW["Gateway listener"] end - KSvc["Knative Service"] -- owns --> Route - Route -- creates --> HR - Route -- creates --> GW - ``` + KSvc["Knative Service"] -- owns --> Route["Route"] + Route -- creates --> HR & GW +``` ## Setup and configuration From 81fd46ec46148652a35fe654318172afed469a36 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 20 Nov 2025 10:06:07 -0800 Subject: [PATCH 010/146] Update config-network-adapters.md Test --- docs/versioned/serving/config-network-adapters.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 9681c81a43..56ab647e2d 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -29,6 +29,8 @@ This page describes and provides installation and configuration guidance for the Best for forward-looking teams adopting Gateway API to unify ingress across Kubernetes, with Knative leveraging the same standard. +## Architectures + ```mermaid --- config: From d10ab27136437ffa476f71044cd1f4576b217701 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 20 Nov 2025 10:07:47 -0800 Subject: [PATCH 011/146] Update config-network-adapters.md Rebuild --- docs/versioned/serving/config-network-adapters.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 56ab647e2d..12871d8ae5 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -49,6 +49,8 @@ flowchart TB ## Setup and configuration +This section provides installation and configuration steps for the adapters. + ### Kourier --8<-- "netadapter-kourier.md" From 9aec3ac4efb2cd3095e4411418de1c6be3f0a72a Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Fri, 21 Nov 2025 21:21:35 -0800 Subject: [PATCH 012/146] Added Contour snippet Formmating --- docs/snippets/netadapter-contour.md | 22 +++++++++++++++++++ docs/snippets/netadapter-kourier.md | 4 ---- .../serving/config-network-adapters.md | 3 +++ 3 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 docs/snippets/netadapter-contour.md diff --git a/docs/snippets/netadapter-contour.md b/docs/snippets/netadapter-contour.md new file mode 100644 index 0000000000..64b60e7583 --- /dev/null +++ b/docs/snippets/netadapter-contour.md @@ -0,0 +1,22 @@ +The following commands install Contour and enable its Knative integration. + +1. Install a properly configured Contour by running the command: + + ```bash + kubectl apply -f {{ artifact(repo="net-contour",org="knative-extensions",file="contour.yaml")}} + ``` + + +1. Install the Knative Contour controller by running the command: + ```bash + kubectl apply -f {{ artifact(repo="net-contour",org="knative-extensions",file="net-contour.yaml")}} + ``` + +1. Configure Knative Serving to use Contour by default by running the command: + ```bash + kubectl patch configmap/config-network \ + --namespace knative-serving \ + --type merge \ + --patch '{"data":{"ingress-class":"contour.ingress.networking.knative.dev"}}' + ``` + diff --git a/docs/snippets/netadapter-kourier.md b/docs/snippets/netadapter-kourier.md index d7adf3b86b..494a9a5c13 100644 --- a/docs/snippets/netadapter-kourier.md +++ b/docs/snippets/netadapter-kourier.md @@ -1,7 +1,3 @@ - The following commands install Kourier and enable its Knative integration. 1. Install the Knative Kourier controller by running the command: diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 12871d8ae5..ac99f22b52 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -55,4 +55,7 @@ This section provides installation and configuration steps for the adapters. --8<-- "netadapter-kourier.md" +## Contour + +--8<-- "netadapter-countour.md" From 1c487670b63027acee2e1fad76e46b3c6581768f Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Fri, 21 Nov 2025 21:26:44 -0800 Subject: [PATCH 013/146] Update config-network-adapters.md Typo fix --- docs/versioned/serving/config-network-adapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index ac99f22b52..0937aff224 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -57,5 +57,5 @@ This section provides installation and configuration steps for the adapters. ## Contour ---8<-- "netadapter-countour.md" +--8<-- "netadapter-contour.md" From 205ecae64cd303388b5a2d815adaedb9d12360cd Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Fri, 21 Nov 2025 22:41:32 -0800 Subject: [PATCH 014/146] Added istio and gateway api snippet files Formatting --- docs/snippets/netadapter-gatewayapi.md | 15 +++++++++++++++ docs/snippets/netadapter-istio.md | 16 ++++++++++++++++ .../versioned/serving/config-network-adapters.md | 9 ++++++++- 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 docs/snippets/netadapter-gatewayapi.md create mode 100644 docs/snippets/netadapter-istio.md diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md new file mode 100644 index 0000000000..0054f66f77 --- /dev/null +++ b/docs/snippets/netadapter-gatewayapi.md @@ -0,0 +1,15 @@ +Use the following steps to install the Knative Gateway API controller. + +1. Install the Knative Gateway API controller by running the command: + + ```bash + kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateawy-api.yaml")}} + ``` + +1. Configure Knative Serving to use Gateway API by default by running the command: + + ```bash + kubectl patch configmap/config-network \ + --namespace knative-serving \ + --type merge \ + --patch '{"data":{"ingress-class":"gateway-api.ingress.networking.knative.dev"}}' \ No newline at end of file diff --git a/docs/snippets/netadapter-istio.md b/docs/snippets/netadapter-istio.md new file mode 100644 index 0000000000..6ac7a1c0a3 --- /dev/null +++ b/docs/snippets/netadapter-istio.md @@ -0,0 +1,16 @@ +The following commands install Istio and enable its Knative integration. + +1. Install a properly configured Istio by following the +[Advanced Istio installation](../../installing-istio.md) instructions or by running the command: + + ```bash + kubectl apply -l knative.dev/crd-install=true -f {{ artifact(repo="net-istio",org="knative-extensions",file="istio.yaml")}} + kubectl apply -f {{ artifact(repo="net-istio",org="knative-extensions",file="istio.yaml")}} + ``` + +1. Install the Knative Istio controller by running the command: + + ```bash + kubectl apply -f {{ artifact(repo="net-istio",file="net-istio.yaml")}} + ``` + diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 0937aff224..f09d8a5a23 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -55,7 +55,14 @@ This section provides installation and configuration steps for the adapters. --8<-- "netadapter-kourier.md" -## Contour +### Contour --8<-- "netadapter-contour.md" +### Istio + +--8<-- "netadapter-istio.md" + +### Gateway API + +--8<-- "netadapter-gatewaypapi.md" From 310d9eb95d01559d710a8c99490aa25cd9507f0c Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sat, 22 Nov 2025 19:19:31 -0800 Subject: [PATCH 015/146] Writing and snippet work Updates --- docs/snippets/netadapter-contour.md | 15 +++++++++---- docs/snippets/netadapter-gatewayapi.md | 8 ++++++- docs/snippets/netadapter-istio.md | 10 +++++++-- docs/snippets/netadapter-kourier.md | 20 ++++++++++++----- docs/snippets/no-dns.md | 4 ---- .../serving/config-network-adapters.md | 22 +++++++++++++------ 6 files changed, 55 insertions(+), 24 deletions(-) diff --git a/docs/snippets/netadapter-contour.md b/docs/snippets/netadapter-contour.md index 64b60e7583..4afb6bccb8 100644 --- a/docs/snippets/netadapter-contour.md +++ b/docs/snippets/netadapter-contour.md @@ -1,18 +1,20 @@ -The following commands install Contour and enable its Knative integration. +Use the following steps to install Contour and enable its Knative integration. -1. Install a properly configured Contour by running the command: +1. Install a properly configured Contour: ```bash kubectl apply -f {{ artifact(repo="net-contour",org="knative-extensions",file="contour.yaml")}} ``` -1. Install the Knative Contour controller by running the command: +1. Install the Knative Contour controller: + ```bash kubectl apply -f {{ artifact(repo="net-contour",org="knative-extensions",file="net-contour.yaml")}} ``` -1. Configure Knative Serving to use Contour by default by running the command: +1. Configure Knative Serving to use Contour by default: + ```bash kubectl patch configmap/config-network \ --namespace knative-serving \ @@ -20,3 +22,8 @@ The following commands install Contour and enable its Knative integration. --patch '{"data":{"ingress-class":"contour.ingress.networking.knative.dev"}}' ``` +1. Get the external IP address (FQDN) to configure DNS records: + + ```bash + kubectl --namespace contour-external get service envoy + ``` diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index 0054f66f77..72306818e4 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -12,4 +12,10 @@ Use the following steps to install the Knative Gateway API controller. kubectl patch configmap/config-network \ --namespace knative-serving \ --type merge \ - --patch '{"data":{"ingress-class":"gateway-api.ingress.networking.knative.dev"}}' \ No newline at end of file + --patch '{"data":{"ingress-class":"gateway-api.ingress.networking.knative.dev"}}' + +1. Get the external IP address (FQDN) to configure DNS records: + + ```bash + kubectl get gateway --all-namespaces + ``` diff --git a/docs/snippets/netadapter-istio.md b/docs/snippets/netadapter-istio.md index 6ac7a1c0a3..57a84c5fab 100644 --- a/docs/snippets/netadapter-istio.md +++ b/docs/snippets/netadapter-istio.md @@ -1,4 +1,4 @@ -The following commands install Istio and enable its Knative integration. +Use the following steps to install Istio and enable its Knative integration. 1. Install a properly configured Istio by following the [Advanced Istio installation](../../installing-istio.md) instructions or by running the command: @@ -8,9 +8,15 @@ The following commands install Istio and enable its Knative integration. kubectl apply -f {{ artifact(repo="net-istio",org="knative-extensions",file="istio.yaml")}} ``` -1. Install the Knative Istio controller by running the command: +1. Install the Knative Istio controller: ```bash kubectl apply -f {{ artifact(repo="net-istio",file="net-istio.yaml")}} ``` +1. Get the external IP address (FQDN) to configure DNS records: + + ```bash + kubectl --namespace istio-system get service istio-ingressgateway + ``` + \ No newline at end of file diff --git a/docs/snippets/netadapter-kourier.md b/docs/snippets/netadapter-kourier.md index 494a9a5c13..09e2220599 100644 --- a/docs/snippets/netadapter-kourier.md +++ b/docs/snippets/netadapter-kourier.md @@ -1,14 +1,22 @@ -The following commands install Kourier and enable its Knative integration. +Use the following stesp to install Kourier and enable its Knative integration. -1. Install the Knative Kourier controller by running the command: -```bash -kubectl apply -f {{ artifact(repo="net-kourier",org="knative-extensions",file="kourier.yaml")}} -``` +1. Install the Knative Kourier controller: + + ```bash + kubectl apply -f {{ artifact(repo="net-kourier",org="knative-extensions",file="kourier.yaml")}} + ``` + +1. Configure Knative Serving to use Kourier by default: -1. Configure Knative Serving to use Kourier by default by running the command: ```bash kubectl patch configmap/config-network \ --namespace knative-serving \ --type merge \ --patch '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}' ``` + +1. Get the external IP address (FQDN) to configure DNS records: + + ```bash + kubectl --namespace kourier-system get service kourier + ``` diff --git a/docs/snippets/no-dns.md b/docs/snippets/no-dns.md index 2a6bbd1f95..a0826e5284 100644 --- a/docs/snippets/no-dns.md +++ b/docs/snippets/no-dns.md @@ -1,7 +1,3 @@ - === "No DNS" If you are using `curl` to access [the sample applications](/docs/getting-started/first-service/), or your own Knative app, and are unable to use the "Magic DNS (sslip.io)" or "Real DNS" methods, there is a temporary approach. This is useful for those who wish to evaluate Knative without altering their DNS configuration, as per the "Real DNS" method, or cannot use the "Magic DNS" method due to using, diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index f09d8a5a23..dbec8cae1b 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -5,9 +5,9 @@ components: function: how-to --- -# Configure network adapters +# Configure network layers -This page describes and provides installation and configuration guidance for the following network adapters for Knative. +This page describes and provides installation and configuration guidance for the following networking plugins. - Kourier @@ -27,6 +27,8 @@ This page describes and provides installation and configuration guidance for the Emerging Kubernetes-native networking API (replacing Ingress)extensible than traditional Ingress APIs. It is a specification, not an implementation itself. + The Kubernetes Gateway API requires a controller or service mesh. Istio and Contour implementations are tested though other Gateway API implementations should work. For more information see [Tested Gateway API version and Ingress](https://github.com/knative-extensions/net-gateway-api/blob/main/docs/test-version.md). + Best for forward-looking teams adopting Gateway API to unify ingress across Kubernetes, with Knative leveraging the same standard. ## Architectures @@ -47,22 +49,28 @@ flowchart TB Route -- creates --> HR & GW ``` -## Setup and configuration +## Network Layer setup -This section provides installation and configuration steps for the adapters. +This section provides installation and configuration steps. -### Kourier +### Kourier controller --8<-- "netadapter-kourier.md" -### Contour +### Contour controller --8<-- "netadapter-contour.md" -### Istio +### Istio service mesh --8<-- "netadapter-istio.md" ### Gateway API --8<-- "netadapter-gatewaypapi.md" + +## Configure DNS + +--8<-- "dns.md" +--8<-- "real-dns-yaml.md" +--8<-- "no-dns.md" From 84f0b03174399188a3661ac5475e8a2eb1a2b6bd Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sat, 22 Nov 2025 21:01:16 -0800 Subject: [PATCH 016/146] Misc fixes Snippet formatting --- docs/snippets/dns.md | 13 +++---------- docs/snippets/netadapter-contour.md | 8 ++++---- docs/snippets/netadapter-istio.md | 3 +-- 3 files changed, 8 insertions(+), 16 deletions(-) diff --git a/docs/snippets/dns.md b/docs/snippets/dns.md index b5b6d6d8ce..d71142b058 100644 --- a/docs/snippets/dns.md +++ b/docs/snippets/dns.md @@ -1,7 +1,6 @@ -You can configure DNS to prevent the need to run curl commands with a host header. +You can configure DNS to avoid running curl commands with a host header. -The following tabs expand to show instructions for configuring DNS. -Follow the procedure for the DNS of your choice: +The following tabs show instructions for configuring DNS. Follow the procedure for the DNS of your choice: === "Magic DNS (sslip.io)" @@ -11,10 +10,4 @@ Follow the procedure for the DNS of your choice: kubectl apply -f {{artifact(repo="serving",file="serving-default-domain.yaml")}} ``` - !!! warning - This will only work if the cluster `LoadBalancer` Service exposes an - IPv4 address or hostname, so it will not work with IPv6 clusters or local setups - like minikube unless [`minikube tunnel`](https://minikube.sigs.k8s.io/docs/commands/tunnel/) - is running. - - In these cases, see the "Real DNS" or "No DNS" tabs. + This configuration works only if the cluster `LoadBalancer` Service exposes an IPv4 address or hostname. It does not work with IPv6 clusters or local setups such as minikube, unless [`minikube tunnel`](https://minikube.sigs.k8s.io/docs/commands/tunnel/) is running, and should consider using the "Real DNS" or "No DNS" tabs. diff --git a/docs/snippets/netadapter-contour.md b/docs/snippets/netadapter-contour.md index 4afb6bccb8..1471862092 100644 --- a/docs/snippets/netadapter-contour.md +++ b/docs/snippets/netadapter-contour.md @@ -9,9 +9,9 @@ Use the following steps to install Contour and enable its Knative integration. 1. Install the Knative Contour controller: - ```bash - kubectl apply -f {{ artifact(repo="net-contour",org="knative-extensions",file="net-contour.yaml")}} - ``` + ```bash + kubectl apply -f {{ artifact(repo="net-contour",org="knative-extensions",file="net-contour.yaml")}} + ``` 1. Configure Knative Serving to use Contour by default: @@ -26,4 +26,4 @@ Use the following steps to install Contour and enable its Knative integration. ```bash kubectl --namespace contour-external get service envoy - ``` + ``` \ No newline at end of file diff --git a/docs/snippets/netadapter-istio.md b/docs/snippets/netadapter-istio.md index 57a84c5fab..6bfe848344 100644 --- a/docs/snippets/netadapter-istio.md +++ b/docs/snippets/netadapter-istio.md @@ -18,5 +18,4 @@ Use the following steps to install Istio and enable its Knative integration. ```bash kubectl --namespace istio-system get service istio-ingressgateway - ``` - \ No newline at end of file + ``` \ No newline at end of file From 92d24f112f1128ddc54f9a508797d30e2eb90094 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sat, 22 Nov 2025 21:23:46 -0800 Subject: [PATCH 017/146] Link fixes Misc edits --- docs/snippets/netadapter-istio.md | 2 +- docs/versioned/serving/config-network-adapters.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/snippets/netadapter-istio.md b/docs/snippets/netadapter-istio.md index 6bfe848344..714812b83c 100644 --- a/docs/snippets/netadapter-istio.md +++ b/docs/snippets/netadapter-istio.md @@ -1,7 +1,7 @@ Use the following steps to install Istio and enable its Knative integration. 1. Install a properly configured Istio by following the -[Advanced Istio installation](../../installing-istio.md) instructions or by running the command: +[Advanced Istio installation](../versioned/install/installing-istio.md) instructions or by running the command: ```bash kubectl apply -l knative.dev/crd-install=true -f {{ artifact(repo="net-istio",org="knative-extensions",file="istio.yaml")}} diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index dbec8cae1b..c67d8d1777 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -67,7 +67,7 @@ This section provides installation and configuration steps. ### Gateway API ---8<-- "netadapter-gatewaypapi.md" +--8<-- "netadapter-gatewayapi.md" ## Configure DNS From 55a8c4122aca828983e2e904461d5ca0619af6e6 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sat, 22 Nov 2025 21:46:44 -0800 Subject: [PATCH 018/146] Update netadapter-istio.md Link issue fix --- docs/snippets/netadapter-istio.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/snippets/netadapter-istio.md b/docs/snippets/netadapter-istio.md index 714812b83c..4ef4a2598f 100644 --- a/docs/snippets/netadapter-istio.md +++ b/docs/snippets/netadapter-istio.md @@ -1,7 +1,6 @@ Use the following steps to install Istio and enable its Knative integration. -1. Install a properly configured Istio by following the -[Advanced Istio installation](../versioned/install/installing-istio.md) instructions or by running the command: +1. Install a properly configured Istio: ```bash kubectl apply -l knative.dev/crd-install=true -f {{ artifact(repo="net-istio",org="knative-extensions",file="istio.yaml")}} From e35130cdab51db6be5a7e95e7244f6aa6171bf98 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sat, 22 Nov 2025 22:27:46 -0800 Subject: [PATCH 019/146] Tab work Added tabs for Network layer setup --- docs/snippets/netadapter-gatewayapi.md | 17 +++++++++-------- .../serving/config-network-adapters.md | 10 ++++++---- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index 72306818e4..21b533db0d 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -2,17 +2,18 @@ Use the following steps to install the Knative Gateway API controller. 1. Install the Knative Gateway API controller by running the command: - ```bash - kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateawy-api.yaml")}} - ``` + ```bash + kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateawy-api.yaml")}} + ``` 1. Configure Knative Serving to use Gateway API by default by running the command: - ```bash - kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"gateway-api.ingress.networking.knative.dev"}}' + ```bash + kubectl patch configmap/config-network \ + --namespace knative-serving \ + --type merge \ + --patch '{"data":{"ingress-class":"gateway-api.ingress.networking.knative.dev"}}' + ``` 1. Get the external IP address (FQDN) to configure DNS records: diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index c67d8d1777..e530f9ab94 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -53,19 +53,21 @@ flowchart TB This section provides installation and configuration steps. -### Kourier controller +=== "Kourier controller (default choice)" --8<-- "netadapter-kourier.md" -### Contour controller +=== "Contour controller" --8<-- "netadapter-contour.md" -### Istio service mesh +=== "Istio service mesh" + +For detailed instructions, see [Install Istio for Knative](../install/installing-istio.md). --8<-- "netadapter-istio.md" -### Gateway API +=== "Gateway API" --8<-- "netadapter-gatewayapi.md" From 77cb4b8b3f0b5496ced6f3c38addd6abd5248cb4 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sat, 22 Nov 2025 22:35:52 -0800 Subject: [PATCH 020/146] Update config-network-adapters.md Minor edit to rebuild --- docs/versioned/serving/config-network-adapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index e530f9ab94..1f2f237a63 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -11,7 +11,7 @@ This page describes and provides installation and configuration guidance for the - Kourier - Designed for Knative Serving with efficient serverless function deployment is the goal. Has a simple setup. The default choice for most users when a service mesh is not required. Has a simple setup. + Designed for Knative Serving with efficient serverless function deployment is the goal. Has a simple setup. Kourier is the default choice for most users, when a service mesh is not required, as it has a simple setup. - Contour From a01958329dee108ebda17dd3d59faf8053124e6f Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sat, 22 Nov 2025 22:47:01 -0800 Subject: [PATCH 021/146] Update config-network-adapters.md tab test --- docs/versioned/serving/config-network-adapters.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 1f2f237a63..99bcf57b94 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -55,21 +55,21 @@ This section provides installation and configuration steps. === "Kourier controller (default choice)" ---8<-- "netadapter-kourier.md" + --8<-- "netadapter-kourier.md" === "Contour controller" ---8<-- "netadapter-contour.md" + --8<-- "netadapter-contour.md" === "Istio service mesh" -For detailed instructions, see [Install Istio for Knative](../install/installing-istio.md). + For detailed instructions, see [Install Istio for Knative](../install/installing-istio.md). ---8<-- "netadapter-istio.md" + --8<-- "netadapter-istio.md" === "Gateway API" ---8<-- "netadapter-gatewayapi.md" + --8<-- "netadapter-gatewayapi.md" ## Configure DNS From fb9a9f024d4c0fefd8c7deb3336fd6ad7d8ded2c Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 23 Nov 2025 22:31:39 -0800 Subject: [PATCH 022/146] Update config-network-adapters.md More writing and tab test for architecture section --- .../serving/config-network-adapters.md | 40 ++++++++++++------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 99bcf57b94..18906866af 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -23,6 +23,8 @@ This page describes and provides installation and configuration guidance for the A full-feature service mesh integrated with Knative that can also function as a Knative ingress. Best for enterprises already running Istio or needing advanced service mesh features alongside Knative. + Note that Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying 1istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own, see [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). + - Gateway API Emerging Kubernetes-native networking API (replacing Ingress)extensible than traditional Ingress APIs. It is a specification, not an implementation itself. @@ -33,21 +35,29 @@ This page describes and provides installation and configuration guidance for the ## Architectures -```mermaid ---- -config: - theme: base - layout: elk - look: classic ---- -flowchart TB - subgraph s1["Gateway API"] - HR["HTTPRoute"] - GW["Gateway listener"] - end - KSvc["Knative Service"] -- owns --> Route["Route"] - Route -- creates --> HR & GW -``` +=== "Kourier" + +=== "Contour" + +=== "Istio" + +=== "Gateway API" + + ```mermaid + --- + config: + theme: base + layout: elk + look: classic + --- + flowchart TB + subgraph s1["Gateway API"] + HR["HTTPRoute"] + GW["Gateway listener"] + end + KSvc["Knative Service"] -- owns --> Route["Route"] + Route -- creates --> HR & GW + ``` ## Network Layer setup From e39c0ae63c47f1df1f1e12959bdae25111b70abe Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 23 Nov 2025 22:45:46 -0800 Subject: [PATCH 023/146] Title and edits Title change and format fix --- docs/versioned/.nav.yml | 2 +- .../serving/config-network-adapters.md | 42 ++++++++----------- 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/docs/versioned/.nav.yml b/docs/versioned/.nav.yml index 77ccc8a3f5..2c2ad9a631 100644 --- a/docs/versioned/.nav.yml +++ b/docs/versioned/.nav.yml @@ -267,11 +267,11 @@ nav: - Configure high-availability components: serving/config-ha.md - Exclude namespaces from the Knative webhook: serving/webhook-customizations.md - Networking Options: + - Configure Knative networking: serving/config-network-adapters.md - Configure the ingress gateway: serving/setting-up-custom-ingress-gateway.md - Configure domain names: serving/using-a-custom-domain.md - Istio Authorization: serving/istio-authorization.md - Extending Queue Proxy image with QPOptions: serving/queue-extensions.md - - Configure network adapters: serving/config-network-adapters.md - Serving configuration: - Configure Deployment resources: serving/configuration/deployment.md - Configure gradual rollout of traffic to Revisions: serving/configuration/rolling-out-latest-revision-configmap.md diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 18906866af..7701316c7d 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -5,7 +5,7 @@ components: function: how-to --- -# Configure network layers +# Configure Knative networking This page describes and provides installation and configuration guidance for the following networking plugins. @@ -33,31 +33,23 @@ This page describes and provides installation and configuration guidance for the Best for forward-looking teams adopting Gateway API to unify ingress across Kubernetes, with Knative leveraging the same standard. -## Architectures +## Architecture -=== "Kourier" - -=== "Contour" - -=== "Istio" - -=== "Gateway API" - - ```mermaid - --- - config: - theme: base - layout: elk - look: classic - --- - flowchart TB - subgraph s1["Gateway API"] - HR["HTTPRoute"] - GW["Gateway listener"] - end - KSvc["Knative Service"] -- owns --> Route["Route"] - Route -- creates --> HR & GW - ``` +```mermaid +--- +config: + theme: base + layout: elk + look: classic +--- +flowchart TB + subgraph s1["Gateway API"] + HR["HTTPRoute"] + GW["Gateway listener"] + end + KSvc["Knative Service"] -- owns --> Route["Route"] + Route -- creates --> HR & GW +``` ## Network Layer setup From f346e570e2498e5fa9060e64059c56904d606fd7 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 23 Nov 2025 22:57:16 -0800 Subject: [PATCH 024/146] Update config-network-adapters.md indented mermaid test --- .../serving/config-network-adapters.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 7701316c7d..4234267b98 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -35,21 +35,21 @@ This page describes and provides installation and configuration guidance for the ## Architecture -```mermaid + ```mermaid + --- + config: + theme: base + layout: elk + look: classic --- -config: - theme: base - layout: elk - look: classic ---- -flowchart TB - subgraph s1["Gateway API"] - HR["HTTPRoute"] - GW["Gateway listener"] - end - KSvc["Knative Service"] -- owns --> Route["Route"] - Route -- creates --> HR & GW -``` + flowchart TB + subgraph s1["Gateway API"] + HR["HTTPRoute"] + GW["Gateway listener"] + end + KSvc["Knative Service"] -- owns --> Route["Route"] + Route -- creates --> HR & GW + ``` ## Network Layer setup From c277d3d1875c862ef68351bbcf5dc4a34420594e Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 23 Nov 2025 23:05:01 -0800 Subject: [PATCH 025/146] Update config-network-adapters.md Mermaid tab test --- .../serving/config-network-adapters.md | 56 ++++++++++++++++++- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 4234267b98..5b077b3ca0 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -35,13 +35,65 @@ This page describes and provides installation and configuration guidance for the ## Architecture +=== "Kourier" ```mermaid --- config: theme: base layout: elk look: classic ---- + --- + flowchart TB + subgraph s1["Gateway API"] + HR["HTTPRoute"] + GW["Gateway listener"] + end + KSvc["Knative Service"] -- owns --> Route["Route"] + Route -- creates --> HR & GW + ``` + +=== "Contour" + ```mermaid + --- + config: + theme: base + layout: elk + look: classic + --- + flowchart TB + subgraph s1["Gateway API"] + HR["HTTPRoute"] + GW["Gateway listener"] + end + KSvc["Knative Service"] -- owns --> Route["Route"] + Route -- creates --> HR & GW + ``` + +=== "Istio" + ```mermaid + --- + config: + theme: base + layout: elk + look: classic + --- + flowchart TB + subgraph s1["Gateway API"] + HR["HTTPRoute"] + GW["Gateway listener"] + end + KSvc["Knative Service"] -- owns --> Route["Route"] + Route -- creates --> HR & GW + ``` + +=== "Gateway API" + ```mermaid + --- + config: + theme: base + layout: elk + look: classic + --- flowchart TB subgraph s1["Gateway API"] HR["HTTPRoute"] @@ -49,7 +101,7 @@ This page describes and provides installation and configuration guidance for the end KSvc["Knative Service"] -- owns --> Route["Route"] Route -- creates --> HR & GW - ``` + ``` ## Network Layer setup From 257828312a29fb275046319198517c8ce2577607 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 23 Nov 2025 23:16:44 -0800 Subject: [PATCH 026/146] Update config-network-adapters.md undid test --- .../serving/config-network-adapters.md | 52 ------------------- 1 file changed, 52 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 5b077b3ca0..8265c20ea0 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -35,58 +35,6 @@ This page describes and provides installation and configuration guidance for the ## Architecture -=== "Kourier" - ```mermaid - --- - config: - theme: base - layout: elk - look: classic - --- - flowchart TB - subgraph s1["Gateway API"] - HR["HTTPRoute"] - GW["Gateway listener"] - end - KSvc["Knative Service"] -- owns --> Route["Route"] - Route -- creates --> HR & GW - ``` - -=== "Contour" - ```mermaid - --- - config: - theme: base - layout: elk - look: classic - --- - flowchart TB - subgraph s1["Gateway API"] - HR["HTTPRoute"] - GW["Gateway listener"] - end - KSvc["Knative Service"] -- owns --> Route["Route"] - Route -- creates --> HR & GW - ``` - -=== "Istio" - ```mermaid - --- - config: - theme: base - layout: elk - look: classic - --- - flowchart TB - subgraph s1["Gateway API"] - HR["HTTPRoute"] - GW["Gateway listener"] - end - KSvc["Knative Service"] -- owns --> Route["Route"] - Route -- creates --> HR & GW - ``` - -=== "Gateway API" ```mermaid --- config: From 4d49145c743e143198b11712ac3c5d87d063fe02 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 23 Nov 2025 23:21:44 -0800 Subject: [PATCH 027/146] Update config-network-adapters.md Mermaid fix --- .../serving/config-network-adapters.md | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 8265c20ea0..6e9e89fcdb 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -35,21 +35,21 @@ This page describes and provides installation and configuration guidance for the ## Architecture - ```mermaid - --- - config: - theme: base - layout: elk - look: classic - --- - flowchart TB - subgraph s1["Gateway API"] - HR["HTTPRoute"] - GW["Gateway listener"] - end - KSvc["Knative Service"] -- owns --> Route["Route"] - Route -- creates --> HR & GW - ``` +```mermaid +--- +config: + theme: base + layout: elk + look: classic +--- +flowchart TB + subgraph s1["Gateway API"] + HR["HTTPRoute"] + GW["Gateway listener"] + end + KSvc["Knative Service"] -- owns --> Route["Route"] + Route -- creates --> HR & GW +``` ## Network Layer setup From 4fad8ae3f59f1e88bfd31bbf825c856fe2a2936c Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Mon, 24 Nov 2025 14:07:54 -0800 Subject: [PATCH 028/146] Update config-network-adapters.md Tab test --- .../serving/config-network-adapters.md | 45 +++++++++++++------ 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 6e9e89fcdb..3b1a73e0ab 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -35,21 +35,40 @@ This page describes and provides installation and configuration guidance for the ## Architecture -```mermaid ---- -config: - theme: base - layout: elk - look: classic ---- -flowchart TB - subgraph s1["Gateway API"] +=== "Test A" + + ```mermaid + --- + config: + theme: base + layout: elk + look: classic + --- + flowchart TB + subgraph s1["Gateway API"] + HR["HTTPRoute"] + GW["Gateway listener"] + end + KSvc["Knative Service"] -- owns --> Route["Route"] + Route -- creates --> HR & GW + ``` +=== "Test B" + + ```mermaid + --- + config: + theme: base + layout: elk + look: classic + --- + flowchart TB + subgraph s1["Gateway API"] HR["HTTPRoute"] GW["Gateway listener"] - end - KSvc["Knative Service"] -- owns --> Route["Route"] - Route -- creates --> HR & GW -``` + end + KSvc["Knative Service"] -- owns --> Route["Route"] + Route -- creates --> HR & GW + ``` ## Network Layer setup From 8b39f8486c5c37d2e303d2c062558756c90c4d00 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Mon, 24 Nov 2025 15:12:17 -0800 Subject: [PATCH 029/146] Update config-network-adapters.md More mermaid testing --- .../serving/config-network-adapters.md | 63 ++++++++++++++----- 1 file changed, 48 insertions(+), 15 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 3b1a73e0ab..0804cfcee8 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -35,31 +35,64 @@ This page describes and provides installation and configuration guidance for the ## Architecture -=== "Test A" +=== "Kourier" ```mermaid --- config: - theme: base + theme: default layout: elk - look: classic --- - flowchart TB - subgraph s1["Gateway API"] - HR["HTTPRoute"] - GW["Gateway listener"] + flowchart LR + subgraph Kourier["Kourier for Knative"] + K2["Creates Ingress objects"] + K1["Kourier"] + K3["Class: kourier.ingress.networking.knative.dev"] end - KSvc["Knative Service"] -- owns --> Route["Route"] - Route -- creates --> HR & GW + K1 --> K2 + K2 --> K3 + style Kourier fill:#e3f2fd ``` -=== "Test B" +=== "Courier" + + ```mermaid + --- + config: + theme: default + layout: elk + --- + flowchart LR + subgraph Contour + C1[Contour] --> C2[Creates Ingress objects] + C2 --> C3[Class: contour.ingress.networking.knative.dev] + end + style Contour fill:#fff3e0 + ``` + +=== "Istio" + + ```mermaid + --- + config: + theme: default + layout: elk + --- + flowchart LR + subgraph Contour + I1[Istio] --> I2[Creates VirtualService + Gateway] + I2 --> I3[Class: istio.ingress.networking.knative.dev] + I3 --> I4[No native Ingress objects] + end + style Contour fill:#fff3e0 + ``` + +=== "Gateway API" ```mermaid --- config: - theme: base + theme: default layout: elk - look: classic --- flowchart TB subgraph s1["Gateway API"] @@ -74,15 +107,15 @@ This page describes and provides installation and configuration guidance for the This section provides installation and configuration steps. -=== "Kourier controller (default choice)" +=== "Kourier" --8<-- "netadapter-kourier.md" -=== "Contour controller" +=== "Contour" --8<-- "netadapter-contour.md" -=== "Istio service mesh" +=== "Istio" For detailed instructions, see [Install Istio for Knative](../install/installing-istio.md). From 8986808ba2375bcfac2914b36c6ea2d85af81133 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Mon, 24 Nov 2025 17:39:56 -0800 Subject: [PATCH 030/146] Update config-network-adapters.md mermaid work --- docs/versioned/serving/config-network-adapters.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 0804cfcee8..cdd6bc76b7 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -42,6 +42,7 @@ This page describes and provides installation and configuration guidance for the config: theme: default layout: elk + look: neo --- flowchart LR subgraph Kourier["Kourier for Knative"] @@ -60,6 +61,7 @@ This page describes and provides installation and configuration guidance for the config: theme: default layout: elk + look: neo --- flowchart LR subgraph Contour @@ -76,14 +78,15 @@ This page describes and provides installation and configuration guidance for the config: theme: default layout: elk + look: neo --- flowchart LR - subgraph Contour + subgraph Istio I1[Istio] --> I2[Creates VirtualService + Gateway] I2 --> I3[Class: istio.ingress.networking.knative.dev] I3 --> I4[No native Ingress objects] end - style Contour fill:#fff3e0 + style Istio fill:#f3e5f5 ``` === "Gateway API" @@ -93,6 +96,7 @@ This page describes and provides installation and configuration guidance for the config: theme: default layout: elk + look: neo --- flowchart TB subgraph s1["Gateway API"] From 761be15e60dac83317ff2e9b69a78d3f1f49d88b Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Mon, 24 Nov 2025 21:21:32 -0800 Subject: [PATCH 031/146] Update config-network-adapters.md Formatting --- .../versioned/serving/config-network-adapters.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index cdd6bc76b7..285490f7d0 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -9,23 +9,25 @@ function: how-to This page describes and provides installation and configuration guidance for the following networking plugins. -- Kourier +## Network layers + +### Kourier controller Designed for Knative Serving with efficient serverless function deployment is the goal. Has a simple setup. Kourier is the default choice for most users, when a service mesh is not required, as it has a simple setup. -- Contour +### Contour controller General-purpose Envoy-based ingress controller with full Kubernetes Ingress support. A Knative ingress controller that integrates with Project Contour, translating Knative Ingress into Contour’s HTTPProxy resources. A good choice for clusters that already run non-Knative apps and want to reuse a single Ingress controller as well as teams who are already using Contour/Envoy and wanting Knative integration with advanced routing but not full service mesh. -- Istio +### Istio full-feature service mesh A full-feature service mesh integrated with Knative that can also function as a Knative ingress. Best for enterprises already running Istio or needing advanced service mesh features alongside Knative. Note that Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying 1istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own, see [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). -- Gateway API +### Gateway API Emerging Kubernetes-native networking API (replacing Ingress)extensible than traditional Ingress APIs. It is a specification, not an implementation itself. @@ -64,7 +66,7 @@ This page describes and provides installation and configuration guidance for the look: neo --- flowchart LR - subgraph Contour + subgraph Contour["Contour for Knative"] C1[Contour] --> C2[Creates Ingress objects] C2 --> C3[Class: contour.ingress.networking.knative.dev] end @@ -81,7 +83,7 @@ This page describes and provides installation and configuration guidance for the look: neo --- flowchart LR - subgraph Istio + subgraph Istio["Istio full-feature service mesh for Knative"] I1[Istio] --> I2[Creates VirtualService + Gateway] I2 --> I3[Class: istio.ingress.networking.knative.dev] I3 --> I4[No native Ingress objects] @@ -99,7 +101,7 @@ This page describes and provides installation and configuration guidance for the look: neo --- flowchart TB - subgraph s1["Gateway API"] + subgraph s1["Gateway API for Knative"] HR["HTTPRoute"] GW["Gateway listener"] end From f7a24a04c186b97e7692d25a57ca837e38a450b1 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Mon, 24 Nov 2025 23:15:27 -0800 Subject: [PATCH 032/146] Update config-network-adapters.md More writing --- .../serving/config-network-adapters.md | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 285490f7d0..ea92da0019 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -11,29 +11,31 @@ This page describes and provides installation and configuration guidance for the ## Network layers +For most users, the Kourier ingress controller is sufficient with the already installed default Istio gateway resource. You can expand your capabilities with more Ingress, full-feature service mesh, and the Kubernetes Gateway API. + ### Kourier controller - Designed for Knative Serving with efficient serverless function deployment is the goal. Has a simple setup. Kourier is the default choice for most users, when a service mesh is not required, as it has a simple setup. +Designed for Knative Serving with efficient serverless function deployment is the goal. Has a simple setup. Kourier is the default ingress choice for most users, when a service mesh is not required, as it has a simple setup. ### Contour controller - General-purpose Envoy-based ingress controller with full Kubernetes Ingress support. A Knative ingress controller that integrates with Project Contour, translating Knative Ingress into Contour’s HTTPProxy resources. +General-purpose Envoy-based ingress controller with full Kubernetes Ingress support. A Knative ingress controller that integrates with Project Contour, translating Knative Ingress into Contour’s HTTPProxy resources. - A good choice for clusters that already run non-Knative apps and want to reuse a single Ingress controller as well as teams who are already using Contour/Envoy and wanting Knative integration with advanced routing but not full service mesh. +A good choice for clusters that already run non-Knative apps and want to reuse a single Ingress controller as well as teams who are already using Contour/Envoy and wanting Knative integration with advanced routing but not full service mesh. ### Istio full-feature service mesh - A full-feature service mesh integrated with Knative that can also function as a Knative ingress. Best for enterprises already running Istio or needing advanced service mesh features alongside Knative. +A full-feature service mesh integrated with Knative that can also function as a Knative ingress. Best for enterprises already running Istio or needing advanced service mesh features alongside Knative. - Note that Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying 1istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own, see [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). +Note that Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying 1istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own, see [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). ### Gateway API - Emerging Kubernetes-native networking API (replacing Ingress)extensible than traditional Ingress APIs. It is a specification, not an implementation itself. +Emerging Kubernetes-native networking API (replacing Ingress)extensible than traditional Ingress APIs. It is a specification, not an implementation itself. - The Kubernetes Gateway API requires a controller or service mesh. Istio and Contour implementations are tested though other Gateway API implementations should work. For more information see [Tested Gateway API version and Ingress](https://github.com/knative-extensions/net-gateway-api/blob/main/docs/test-version.md). +The Kubernetes Gateway API requires a controller or service mesh. Istio and Contour implementations are tested though other Gateway API implementations should work. For more information see [Tested Gateway API version and Ingress](https://github.com/knative-extensions/net-gateway-api/blob/main/docs/test-version.md). - Best for forward-looking teams adopting Gateway API to unify ingress across Kubernetes, with Knative leveraging the same standard. +Best for forward-looking teams adopting Gateway API to unify ingress across Kubernetes, with Knative leveraging the same standard. ## Architecture @@ -131,7 +133,15 @@ This section provides installation and configuration steps. --8<-- "netadapter-gatewayapi.md" -## Configure DNS +### Verify installations + + Monitor the Knative components until all of the components show a `STATUS` of `Running` or `Completed`. Use the `get-pods` command to determine network components and their status. + + ```bash + kubectl get pods -n knative-serving + ``` + +### Configure DNS --8<-- "dns.md" --8<-- "real-dns-yaml.md" From 39050263a7d31cfcf9dccf94ee8c39e435a384d7 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Mon, 24 Nov 2025 23:22:22 -0800 Subject: [PATCH 033/146] Update config-network-adapters.md H4s instead of H3s --- docs/versioned/serving/config-network-adapters.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index ea92da0019..a5ed2ecd08 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -13,23 +13,23 @@ This page describes and provides installation and configuration guidance for the For most users, the Kourier ingress controller is sufficient with the already installed default Istio gateway resource. You can expand your capabilities with more Ingress, full-feature service mesh, and the Kubernetes Gateway API. -### Kourier controller +#### Kourier controller Designed for Knative Serving with efficient serverless function deployment is the goal. Has a simple setup. Kourier is the default ingress choice for most users, when a service mesh is not required, as it has a simple setup. -### Contour controller +#### Contour controller General-purpose Envoy-based ingress controller with full Kubernetes Ingress support. A Knative ingress controller that integrates with Project Contour, translating Knative Ingress into Contour’s HTTPProxy resources. A good choice for clusters that already run non-Knative apps and want to reuse a single Ingress controller as well as teams who are already using Contour/Envoy and wanting Knative integration with advanced routing but not full service mesh. -### Istio full-feature service mesh +#### Istio full-feature service mesh A full-feature service mesh integrated with Knative that can also function as a Knative ingress. Best for enterprises already running Istio or needing advanced service mesh features alongside Knative. Note that Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying 1istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own, see [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). -### Gateway API +#### Gateway API Emerging Kubernetes-native networking API (replacing Ingress)extensible than traditional Ingress APIs. It is a specification, not an implementation itself. @@ -133,7 +133,7 @@ This section provides installation and configuration steps. --8<-- "netadapter-gatewayapi.md" -### Verify installations +#### Verify installations Monitor the Knative components until all of the components show a `STATUS` of `Running` or `Completed`. Use the `get-pods` command to determine network components and their status. @@ -141,7 +141,7 @@ This section provides installation and configuration steps. kubectl get pods -n knative-serving ``` -### Configure DNS +#### Configure DNS --8<-- "dns.md" --8<-- "real-dns-yaml.md" From a4512c4cb7924516c970dcf60fdaaf80792a2629 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Tue, 25 Nov 2025 15:39:10 -0800 Subject: [PATCH 034/146] Update config-network-adapters.md Mermaid tweaks --- .../serving/config-network-adapters.md | 45 +++++++++---------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index a5ed2ecd08..9f570ebb3e 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -7,23 +7,23 @@ function: how-to # Configure Knative networking -This page describes and provides installation and configuration guidance for the following networking plugins. +This page describes and provides installation and configuration guidance for Ingress controls, service-meshes and gateways for handling networking for Knative services. -## Network layers +## Network layer options For most users, the Kourier ingress controller is sufficient with the already installed default Istio gateway resource. You can expand your capabilities with more Ingress, full-feature service mesh, and the Kubernetes Gateway API. -#### Kourier controller +#### Kourier Designed for Knative Serving with efficient serverless function deployment is the goal. Has a simple setup. Kourier is the default ingress choice for most users, when a service mesh is not required, as it has a simple setup. -#### Contour controller +#### Contour General-purpose Envoy-based ingress controller with full Kubernetes Ingress support. A Knative ingress controller that integrates with Project Contour, translating Knative Ingress into Contour’s HTTPProxy resources. A good choice for clusters that already run non-Knative apps and want to reuse a single Ingress controller as well as teams who are already using Contour/Envoy and wanting Knative integration with advanced routing but not full service mesh. -#### Istio full-feature service mesh +#### Istio A full-feature service mesh integrated with Knative that can also function as a Knative ingress. Best for enterprises already running Istio or needing advanced service mesh features alongside Knative. @@ -37,7 +37,7 @@ The Kubernetes Gateway API requires a controller or service mesh. Istio and Cont Best for forward-looking teams adopting Gateway API to unify ingress across Kubernetes, with Knative leveraging the same standard. -## Architecture +## Architectures === "Kourier" @@ -49,14 +49,10 @@ Best for forward-looking teams adopting Gateway API to unify ingress across Kube look: neo --- flowchart LR - subgraph Kourier["Kourier for Knative"] - K2["Creates Ingress objects"] - K1["Kourier"] - K3["Class: kourier.ingress.networking.knative.dev"] - end - K1 --> K2 - K2 --> K3 - style Kourier fill:#e3f2fd + K2["Creates Ingress objects"] + K3["Class: kourier.ingress.networking.knative.dev"] + K1 --> K2 + K2 --> K3 ``` === "Courier" @@ -68,11 +64,8 @@ Best for forward-looking teams adopting Gateway API to unify ingress across Kube look: neo --- flowchart LR - subgraph Contour["Contour for Knative"] - C1[Contour] --> C2[Creates Ingress objects] - C2 --> C3[Class: contour.ingress.networking.knative.dev] - end - style Contour fill:#fff3e0 + C1["Contour"] --> C2["Creates Ingress objects"] + C2 --> C3["Class: contour.ingress.networking.knative.dev"] ``` === "Istio" @@ -85,12 +78,14 @@ Best for forward-looking teams adopting Gateway API to unify ingress across Kube look: neo --- flowchart LR - subgraph Istio["Istio full-feature service mesh for Knative"] - I1[Istio] --> I2[Creates VirtualService + Gateway] - I2 --> I3[Class: istio.ingress.networking.knative.dev] - I3 --> I4[No native Ingress objects] - end - style Istio fill:#f3e5f5 + I2["Creates VirtualService + Gateway"] + I1["Istio"] + I3["Class: istio.ingress.networking.knative.dev"] + I4["No native Ingress objects"] + I1 --> I2 + I2 --> I3 + I3 --> I4 + style I1 fill:#f3e5f5 ``` === "Gateway API" From 49db831aa7de221135d052335c393b66f4fc7fc2 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 26 Nov 2025 16:10:31 -0800 Subject: [PATCH 035/146] Update config-network-adapters.md tab test --- .../serving/config-network-adapters.md | 59 ++++++++----------- 1 file changed, 25 insertions(+), 34 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 9f570ebb3e..6c3cec61f9 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -13,32 +13,6 @@ This page describes and provides installation and configuration guidance for Ing For most users, the Kourier ingress controller is sufficient with the already installed default Istio gateway resource. You can expand your capabilities with more Ingress, full-feature service mesh, and the Kubernetes Gateway API. -#### Kourier - -Designed for Knative Serving with efficient serverless function deployment is the goal. Has a simple setup. Kourier is the default ingress choice for most users, when a service mesh is not required, as it has a simple setup. - -#### Contour - -General-purpose Envoy-based ingress controller with full Kubernetes Ingress support. A Knative ingress controller that integrates with Project Contour, translating Knative Ingress into Contour’s HTTPProxy resources. - -A good choice for clusters that already run non-Knative apps and want to reuse a single Ingress controller as well as teams who are already using Contour/Envoy and wanting Knative integration with advanced routing but not full service mesh. - -#### Istio - -A full-feature service mesh integrated with Knative that can also function as a Knative ingress. Best for enterprises already running Istio or needing advanced service mesh features alongside Knative. - -Note that Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying 1istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own, see [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). - -#### Gateway API - -Emerging Kubernetes-native networking API (replacing Ingress)extensible than traditional Ingress APIs. It is a specification, not an implementation itself. - -The Kubernetes Gateway API requires a controller or service mesh. Istio and Contour implementations are tested though other Gateway API implementations should work. For more information see [Tested Gateway API version and Ingress](https://github.com/knative-extensions/net-gateway-api/blob/main/docs/test-version.md). - -Best for forward-looking teams adopting Gateway API to unify ingress across Kubernetes, with Knative leveraging the same standard. - -## Architectures - === "Kourier" ```mermaid @@ -49,12 +23,13 @@ Best for forward-looking teams adopting Gateway API to unify ingress across Kube look: neo --- flowchart LR - K2["Creates Ingress objects"] - K3["Class: kourier.ingress.networking.knative.dev"] - K1 --> K2 - K2 --> K3 + K1["Knative
net-kourier"] -- creates --> K2["Ingress objects"] + K2 --> K3["Class: kourier.ingress.networking.knative.dev"] ``` -=== "Courier" + + Designed for Knative Serving with efficient serverless function deployment is the goal. Has a simple setup. Kourier is the default ingress choice for most users, when a service mesh is not required, as it has a simple setup. + +=== "Contour" ```mermaid --- @@ -64,10 +39,14 @@ Best for forward-looking teams adopting Gateway API to unify ingress across Kube look: neo --- flowchart LR - C1["Contour"] --> C2["Creates Ingress objects"] + C1["Knative
net-contour"] -- creates --> C2["Ingress objects"] C2 --> C3["Class: contour.ingress.networking.knative.dev"] ``` + General-purpose Envoy-based ingress controller with full Kubernetes Ingress support. A Knative ingress controller that integrates with Project Contour, translating Knative Ingress into Contour’s HTTPProxy resources. + + A good choice for clusters that already run non-Knative apps and want to reuse a single Ingress controller as well as teams who are already using Contour/Envoy and wanting Knative integration with advanced routing but not full service mesh. + === "Istio" ```mermaid @@ -78,16 +57,20 @@ Best for forward-looking teams adopting Gateway API to unify ingress across Kube look: neo --- flowchart LR - I2["Creates VirtualService + Gateway"] + I2["VirtualService + Gateway"] I1["Istio"] I3["Class: istio.ingress.networking.knative.dev"] I4["No native Ingress objects"] - I1 --> I2 + I1 -- creates --> I2 I2 --> I3 I3 --> I4 style I1 fill:#f3e5f5 ``` + A full-feature service mesh integrated with Knative that can also function as a Knative ingress. Best for enterprises already running Istio or needing advanced service mesh features alongside Knative. + + Note that Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying 1istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own, see [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). + === "Gateway API" ```mermaid @@ -106,6 +89,12 @@ Best for forward-looking teams adopting Gateway API to unify ingress across Kube Route -- creates --> HR & GW ``` + Emerging Kubernetes-native networking API (replacing Ingress)extensible than traditional Ingress APIs. It is a specification, not an implementation itself. + + The Kubernetes Gateway API requires a controller or service mesh. Istio and Contour implementations are tested though other Gateway API implementations should work. For more information see [Tested Gateway API version and Ingress](https://github.com/knative-extensions/net-gateway-api/blob/main/docs/test-version.md). + + Best for forward-looking teams adopting Gateway API to unify ingress across Kubernetes, with Knative leveraging the same standard. + ## Network Layer setup This section provides installation and configuration steps. @@ -114,6 +103,8 @@ This section provides installation and configuration steps. --8<-- "netadapter-kourier.md" + These instructions use the latest release of [net-kourier](https://github.com/knative-extensions/net-kourier/releases) on the Knative extensions. + === "Contour" --8<-- "netadapter-contour.md" From 41240db90f5706e594438f533037107b319ebe7b Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 26 Nov 2025 19:54:57 -0800 Subject: [PATCH 036/146] Writing and structuring Trying out just one tab set --- docs/snippets/netadapter-contour.md | 11 +--- .../serving/config-network-adapters.md | 64 +++++++++---------- 2 files changed, 33 insertions(+), 42 deletions(-) diff --git a/docs/snippets/netadapter-contour.md b/docs/snippets/netadapter-contour.md index 1471862092..5890e55103 100644 --- a/docs/snippets/netadapter-contour.md +++ b/docs/snippets/netadapter-contour.md @@ -1,11 +1,4 @@ -Use the following steps to install Contour and enable its Knative integration. - -1. Install a properly configured Contour: - - ```bash - kubectl apply -f {{ artifact(repo="net-contour",org="knative-extensions",file="contour.yaml")}} - ``` - +Use the following steps to install and enable Contour and enable its Knative integration. 1. Install the Knative Contour controller: @@ -26,4 +19,4 @@ Use the following steps to install Contour and enable its Knative integration. ```bash kubectl --namespace contour-external get service envoy - ``` \ No newline at end of file + ``` diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 6c3cec61f9..0bc8817607 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -27,7 +27,13 @@ For most users, the Kourier ingress controller is sufficient with the already in K2 --> K3["Class: kourier.ingress.networking.knative.dev"] ``` - Designed for Knative Serving with efficient serverless function deployment is the goal. Has a simple setup. Kourier is the default ingress choice for most users, when a service mesh is not required, as it has a simple setup. + The Knative `net-kourier` is an Ingress for Knative Serving. Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an Envoy proxy and a control plane. + + Designed for Knative Serving with efficient serverless function deployment is the goal. Kourier is the default ingress choice for most users, when a service mesh is not required, as it has a simple setup. + + The following setup procedure automatically obtains the latest release of [net-kourier](https://github.com/knative-extensions/net-kourier/releases) on the Knative extensions. + + --8<-- "netadapter-kourier.md" === "Contour" @@ -43,10 +49,14 @@ For most users, the Kourier ingress controller is sufficient with the already in C2 --> C3["Class: contour.ingress.networking.knative.dev"] ``` - General-purpose Envoy-based ingress controller with full Kubernetes Ingress support. A Knative ingress controller that integrates with Project Contour, translating Knative Ingress into Contour’s HTTPProxy resources. + The Knative `net-contour` controller enables Contour to satisfy the networking needs of Knative Serving by bridging Knative's KIngress resources to Contour's HTTPProxy resources. A good choice for clusters that already run non-Knative apps and want to reuse a single Ingress controller as well as teams who are already using Contour/Envoy and wanting Knative integration with advanced routing but not full service mesh. + The following setup procedure automatically obtains the latest release of [net-contour](https://github.com/knative-extensions/net-contour/releases) on the Knative extensions. + + --8<-- "netadapter-contour.md" + === "Istio" ```mermaid @@ -58,19 +68,21 @@ For most users, the Kourier ingress controller is sufficient with the already in --- flowchart LR I2["VirtualService + Gateway"] - I1["Istio"] - I3["Class: istio.ingress.networking.knative.dev"] - I4["No native Ingress objects"] + I1["Knative
net-istio"] + I3["Class: istio.ingress.networking.knative.dev
"No native Ingress objects"] I1 -- creates --> I2 I2 --> I3 I3 --> I4 - style I1 fill:#f3e5f5 ``` - A full-feature service mesh integrated with Knative that can also function as a Knative ingress. Best for enterprises already running Istio or needing advanced service mesh features alongside Knative. + The Knative `net-istio` defines a KIngress controller for Istio. A full-feature service mesh integrated with Knative that can also function as a Knative ingress. Best for enterprises already running Istio or needing advanced service mesh features alongside Knative. Note that Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying 1istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own, see [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). + The following setup procedure automatically obtains the latest release of [net-istio](https://github.com/knative-extensions/net-istio/releases) on the Knative extensions. + + --8<-- "netadapter-istio.md" + === "Gateway API" ```mermaid @@ -89,45 +101,31 @@ For most users, the Kourier ingress controller is sufficient with the already in Route -- creates --> HR & GW ``` - Emerging Kubernetes-native networking API (replacing Ingress)extensible than traditional Ingress APIs. It is a specification, not an implementation itself. + The Knative `net-gateway-api` is a KIngress implementation and testing for Knative integration with the Kubernetes Gateway API. The Kubernetes Gateway API requires a controller or service mesh. Istio and Contour implementations are tested though other Gateway API implementations should work. For more information see [Tested Gateway API version and Ingress](https://github.com/knative-extensions/net-gateway-api/blob/main/docs/test-version.md). Best for forward-looking teams adopting Gateway API to unify ingress across Kubernetes, with Knative leveraging the same standard. -## Network Layer setup - -This section provides installation and configuration steps. - -=== "Kourier" - - --8<-- "netadapter-kourier.md" - - These instructions use the latest release of [net-kourier](https://github.com/knative-extensions/net-kourier/releases) on the Knative extensions. - -=== "Contour" - - --8<-- "netadapter-contour.md" - -=== "Istio" - - For detailed instructions, see [Install Istio for Knative](../install/installing-istio.md). - - --8<-- "netadapter-istio.md" - -=== "Gateway API" + The following setup procedure automatically obtains the latest release of [net-gateway-api](https://github.com/knative-extensions/net-gateway-api/releases) on the Knative extensions. --8<-- "netadapter-gatewayapi.md" -#### Verify installations - - Monitor the Knative components until all of the components show a `STATUS` of `Running` or `Completed`. Use the `get-pods` command to determine network components and their status. +## Verify controller installations + Use the `get pods` command to monitor the Kourier, Contour, or Istio controller components for Knative until all of the components show a `STATUS` of `Running` or `Completed`. ```bash kubectl get pods -n knative-serving ``` + Here are the typical base pod names you’ll see in the `knative-serving` namespace for each of the supported Knative networking layers: + + - Kourier: `kourier-control-*`, and `kourier-gateway-*`. + - Contour: `contour-*` + - Istio: `istio-webhook-*` + + The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace, but Knative adds this webhook pod in `knative-serving` when Istio is the chosen networking layer. -#### Configure DNS +## Configure DNS --8<-- "dns.md" --8<-- "real-dns-yaml.md" From 631c56f8bbc184ea6e94a25ce14572699da519fe Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 26 Nov 2025 20:27:02 -0800 Subject: [PATCH 037/146] Update config-network-adapters.md Formatting fixes --- .../serving/config-network-adapters.md | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 0bc8817607..d6ced38f33 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -64,15 +64,10 @@ For most users, the Kourier ingress controller is sufficient with the already in config: theme: default layout: elk - look: neo --- flowchart LR - I2["VirtualService + Gateway"] - I1["Knative
net-istio"] - I3["Class: istio.ingress.networking.knative.dev
"No native Ingress objects"] - I1 -- creates --> I2 - I2 --> I3 - I3 --> I4 + I1["Knative net-istio"] -- creates --> I2["Service + Gateway"] + I2 --> I3["Class: istio.ingress.networking.knative.dev
No native Ingress objects"] ``` The Knative `net-istio` defines a KIngress controller for Istio. A full-feature service mesh integrated with Knative that can also function as a Knative ingress. Best for enterprises already running Istio or needing advanced service mesh features alongside Knative. @@ -88,17 +83,16 @@ For most users, the Kourier ingress controller is sufficient with the already in ```mermaid --- config: - theme: default layout: elk - look: neo + theme: default --- - flowchart TB - subgraph s1["Gateway API for Knative"] - HR["HTTPRoute"] - GW["Gateway listener"] + flowchart LR + subgraph s1["Gateway API for Knative"] + HR["HTTPRoute"] + GW["Gateway listener"] end KSvc["Knative Service"] -- owns --> Route["Route"] - Route -- creates --> HR & GW + Route -- creates --> HR & GW ``` The Knative `net-gateway-api` is a KIngress implementation and testing for Knative integration with the Kubernetes Gateway API. @@ -114,6 +108,7 @@ For most users, the Kourier ingress controller is sufficient with the already in ## Verify controller installations Use the `get pods` command to monitor the Kourier, Contour, or Istio controller components for Knative until all of the components show a `STATUS` of `Running` or `Completed`. + ```bash kubectl get pods -n knative-serving ``` From 73e845fc3c0c08390795ddfa5b376a61cc197516 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 26 Nov 2025 20:40:03 -0800 Subject: [PATCH 038/146] Update config-network-adapters.md Minor edit to rebuild --- docs/versioned/serving/config-network-adapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index d6ced38f33..8a0b09b12c 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -11,7 +11,7 @@ This page describes and provides installation and configuration guidance for Ing ## Network layer options -For most users, the Kourier ingress controller is sufficient with the already installed default Istio gateway resource. You can expand your capabilities with more Ingress, full-feature service mesh, and the Kubernetes Gateway API. +Review these tabs for the optimal networking layer for your cluster. For most users, the Kourier ingress controller is sufficient with the already installed default Istio gateway resource. You can expand your capabilities with more Ingress, full-feature service mesh, and the Kubernetes Gateway API. === "Kourier" From 6dbb22a8778a9333ab4bbf4c63410c3a6f2ac649 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 26 Nov 2025 20:47:21 -0800 Subject: [PATCH 039/146] Update netadapter-gatewayapi.md Formatting test --- docs/snippets/netadapter-gatewayapi.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index 21b533db0d..86f33b17c3 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -20,3 +20,5 @@ Use the following steps to install the Knative Gateway API controller. ```bash kubectl get gateway --all-namespaces ``` + +Next, verify the installation. From 497620db1d751d60e0b13ee317a7c3be31d2714b Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 26 Nov 2025 20:54:19 -0800 Subject: [PATCH 040/146] Formatting tests --- docs/snippets/netadapter-gatewayapi.md | 2 -- docs/versioned/serving/config-network-adapters.md | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index 86f33b17c3..21b533db0d 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -20,5 +20,3 @@ Use the following steps to install the Knative Gateway API controller. ```bash kubectl get gateway --all-namespaces ``` - -Next, verify the installation. diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 8a0b09b12c..4b0d6e94e8 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -107,7 +107,7 @@ Review these tabs for the optimal networking layer for your cluster. For most us ## Verify controller installations - Use the `get pods` command to monitor the Kourier, Contour, or Istio controller components for Knative until all of the components show a `STATUS` of `Running` or `Completed`. + Monitor the pod status of the Kourier, Contour, or Istio controller components for Knative until all of the components show a `STATUS` of `Running` or `Completed`. ```bash kubectl get pods -n knative-serving From 359f605cb068146f805df07a9904db7737271176 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 26 Nov 2025 20:58:43 -0800 Subject: [PATCH 041/146] Update config-network-adapters.md Formatting test --- docs/versioned/serving/config-network-adapters.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 4b0d6e94e8..7342bfb030 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -107,11 +107,12 @@ Review these tabs for the optimal networking layer for your cluster. For most us ## Verify controller installations - Monitor the pod status of the Kourier, Contour, or Istio controller components for Knative until all of the components show a `STATUS` of `Running` or `Completed`. + Monitor the pod status of the Kourier, Contour, or Istio controller components for Knative until all of the components show a STATUS of Running or Completed. ```bash kubectl get pods -n knative-serving ``` + Here are the typical base pod names you’ll see in the `knative-serving` namespace for each of the supported Knative networking layers: - Kourier: `kourier-control-*`, and `kourier-gateway-*`. From 8e5bf80055b729c2271380183883bc12a568a810 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 26 Nov 2025 21:03:41 -0800 Subject: [PATCH 042/146] Update config-network-adapters.md Format fix --- docs/versioned/serving/config-network-adapters.md | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 7342bfb030..49f892728b 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -109,17 +109,13 @@ Review these tabs for the optimal networking layer for your cluster. For most us Monitor the pod status of the Kourier, Contour, or Istio controller components for Knative until all of the components show a STATUS of Running or Completed. - ```bash - kubectl get pods -n knative-serving - ``` - - Here are the typical base pod names you’ll see in the `knative-serving` namespace for each of the supported Knative networking layers: + Here are the typical base pod names you’ll see in the knative-serving namespace for each of the supported Knative networking layers: - - Kourier: `kourier-control-*`, and `kourier-gateway-*`. - - Contour: `contour-*` - - Istio: `istio-webhook-*` + - Kourier: kourier-control-*, and kourier-gateway-*. + - Contour: contour-* + - Istio: istio-webhook-* - The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace, but Knative adds this webhook pod in `knative-serving` when Istio is the chosen networking layer. + The main Istio control plane pods such as istiod-* are in the istio-system namespace, but Knative adds this webhook pod in knative-serving when Istio is the chosen networking layer. ## Configure DNS From 5c032f4d71c90847ba8848c47072dad05382e329 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 26 Nov 2025 21:13:28 -0800 Subject: [PATCH 043/146] Update config-network-adapters.md test --- docs/versioned/serving/config-network-adapters.md | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 49f892728b..b8e49fc5c7 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -105,18 +105,6 @@ Review these tabs for the optimal networking layer for your cluster. For most us --8<-- "netadapter-gatewayapi.md" -## Verify controller installations - - Monitor the pod status of the Kourier, Contour, or Istio controller components for Knative until all of the components show a STATUS of Running or Completed. - - Here are the typical base pod names you’ll see in the knative-serving namespace for each of the supported Knative networking layers: - - - Kourier: kourier-control-*, and kourier-gateway-*. - - Contour: contour-* - - Istio: istio-webhook-* - - The main Istio control plane pods such as istiod-* are in the istio-system namespace, but Knative adds this webhook pod in knative-serving when Istio is the chosen networking layer. - ## Configure DNS --8<-- "dns.md" From 9cf49808e115fed0f50f6107dfc6b3700e294ed3 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 26 Nov 2025 21:45:55 -0800 Subject: [PATCH 044/146] Update config-network-adapters.md Put back `Verify controller installations` --- .../versioned/serving/config-network-adapters.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index b8e49fc5c7..d94116b406 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -105,6 +105,22 @@ Review these tabs for the optimal networking layer for your cluster. For most us --8<-- "netadapter-gatewayapi.md" +## Verify controller installations + +Use the following command to verify and monitor the pod status of the Kourier, Contour, or Istio controllers. All of the components should show a `STATUS` of `Running` or `Completed`. + + ```bash + kubectl get pods -n knative-serving + ``` + +Here are the typical base pod names you’ll see in the `knative-serving` namespace for each of the supported Knative networking layers: + +- Kourier: `kourier-control-*`, and `kourier-gateway-*`. +- Contour: `contour-*` +- Istio: `istio-webhook-*` + +The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace, but Knative adds the `istio-webhook-*` pod in `knative-serving` when Istio is the chosen networking layer. + ## Configure DNS --8<-- "dns.md" From 187c0a1d2ff5a4bddd29740df57c7ad9292386f4 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 26 Nov 2025 21:58:46 -0800 Subject: [PATCH 045/146] Update config-network-adapters.md Formatting --- docs/versioned/serving/config-network-adapters.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index d94116b406..0160891e2d 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -109,10 +109,10 @@ Review these tabs for the optimal networking layer for your cluster. For most us Use the following command to verify and monitor the pod status of the Kourier, Contour, or Istio controllers. All of the components should show a `STATUS` of `Running` or `Completed`. - ```bash + ```bash kubectl get pods -n knative-serving ``` - + Here are the typical base pod names you’ll see in the `knative-serving` namespace for each of the supported Knative networking layers: - Kourier: `kourier-control-*`, and `kourier-gateway-*`. From 3e2a67ff3276c9370f2263f565ebc5947c7feeb8 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 26 Nov 2025 22:03:26 -0800 Subject: [PATCH 046/146] Update config-network-adapters.md Minor fix --- docs/versioned/serving/config-network-adapters.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 0160891e2d..d9bbd9dd98 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -109,9 +109,9 @@ Review these tabs for the optimal networking layer for your cluster. For most us Use the following command to verify and monitor the pod status of the Kourier, Contour, or Istio controllers. All of the components should show a `STATUS` of `Running` or `Completed`. - ```bash - kubectl get pods -n knative-serving - ``` +```bash +kubectl get pods -n knative-serving +``` Here are the typical base pod names you’ll see in the `knative-serving` namespace for each of the supported Knative networking layers: From 1c05b868c0f2c3b5a9a519433dd4ef28036e8d5d Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 26 Nov 2025 22:16:40 -0800 Subject: [PATCH 047/146] Update config-network-adapters.md Code format fix --- docs/versioned/serving/config-network-adapters.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index d9bbd9dd98..f3f046d6d6 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -109,10 +109,10 @@ Review these tabs for the optimal networking layer for your cluster. For most us Use the following command to verify and monitor the pod status of the Kourier, Contour, or Istio controllers. All of the components should show a `STATUS` of `Running` or `Completed`. -```bash +```bash kubectl get pods -n knative-serving ``` - + Here are the typical base pod names you’ll see in the `knative-serving` namespace for each of the supported Knative networking layers: - Kourier: `kourier-control-*`, and `kourier-gateway-*`. From dddacd18377799c8f40630d89f849644f61d6656 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sat, 29 Nov 2025 14:46:12 -0800 Subject: [PATCH 048/146] Added Ingress Gateway tab More writing --- docs/snippets/netadapter-contour.md | 2 +- .../serving/config-network-adapters.md | 57 +++++++++++++------ 2 files changed, 40 insertions(+), 19 deletions(-) diff --git a/docs/snippets/netadapter-contour.md b/docs/snippets/netadapter-contour.md index 5890e55103..89ef744aa6 100644 --- a/docs/snippets/netadapter-contour.md +++ b/docs/snippets/netadapter-contour.md @@ -3,7 +3,7 @@ Use the following steps to install and enable Contour and enable its Knative int 1. Install the Knative Contour controller: ```bash - kubectl apply -f {{ artifact(repo="net-contour",org="knative-extensions",file="net-contour.yaml")}} + kubectl apply -f https://storage.googleapis.com/knative-nightly/net-contour/latest/contour.yaml ``` 1. Configure Knative Serving to use Contour by default: diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index f3f046d6d6..bd7290166b 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -7,11 +7,27 @@ function: how-to # Configure Knative networking -This page describes and provides installation and configuration guidance for Ingress controls, service-meshes and gateways for handling networking for Knative services. +This page provides installation and configuration guidance for configuring Knative networking. These options include Ingress controls, service-meshes, and gateways. ## Network layer options -Review these tabs for the optimal networking layer for your cluster. For most users, the Kourier ingress controller is sufficient with the already installed default Istio gateway resource. You can expand your capabilities with more Ingress, full-feature service mesh, and the Kubernetes Gateway API. +Use the following command to determine which controllers are installed and their status. + +```bash +kubectl get pods -n knative-serving +``` + +The controllers have the following base names: + +- Kourier: `kourier-control-*`, and `kourier-gateway-*`. +- Contour: `contour-*` +- Istio: `istio-webhook-*` + +The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace, but Knative adds the `istio-webhook-*` pod in `knative-serving` when Istio is the chosen networking layer. + +Review the following tabs to determine the optimal networking layer for your cluster. Knative installs the Kourier controller as the default ingress. For most users, the Kourier ingress controller is sufficient with the already installed default Istio gateway resource. You can expand your capabilities with more ingress using Contour, a full-feature service mesh with Istio, and the Kubernetes Gateway API. + +The `network-config` ConfigMap specifies the controller to be used with the ingress controller key. This key is patched with the name of the new controller when you configure a new one, as described in these instructions. See [Changing the controller](#change-the-controller) for more information about the ingress controller key. === "Kourier" @@ -78,6 +94,24 @@ Review these tabs for the optimal networking layer for your cluster. For most us --8<-- "netadapter-istio.md" +=== "Ingress Gateway" + +```mermaid + --- + config: + layout: elk + theme: default + look: neo + --- + flowchart LR + Client["External Client"] --> CGW["Custom Ingress Gateway"] + CGW --> KIGW["Knative Ingress Gateway"] & Client + KIGW --> Revision["Knative Revision"] & CGW + Revision --> KIGW + ``` + + Knative uses a shared ingress gateway to serve all incoming traffic within Knative service mesh. For information on customizing the gateway, see [Configure the Ingress Gateway](/versioned/serving/setting-up-custom-ingress-gateway.md). + === "Gateway API" ```mermaid @@ -105,24 +139,11 @@ Review these tabs for the optimal networking layer for your cluster. For most us --8<-- "netadapter-gatewayapi.md" -## Verify controller installations - -Use the following command to verify and monitor the pod status of the Kourier, Contour, or Istio controllers. All of the components should show a `STATUS` of `Running` or `Completed`. - -```bash -kubectl get pods -n knative-serving -``` - -Here are the typical base pod names you’ll see in the `knative-serving` namespace for each of the supported Knative networking layers: - -- Kourier: `kourier-control-*`, and `kourier-gateway-*`. -- Contour: `contour-*` -- Istio: `istio-webhook-*` - -The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace, but Knative adds the `istio-webhook-*` pod in `knative-serving` when Istio is the chosen networking layer. - ## Configure DNS --8<-- "dns.md" --8<-- "real-dns-yaml.md" --8<-- "no-dns.md" + +## Change the controller + From 129133a5326fd6dd9c398a8a88b83779c55aab09 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sat, 29 Nov 2025 14:49:58 -0800 Subject: [PATCH 049/146] Update config-network-adapters.md Formatting fix --- docs/versioned/serving/config-network-adapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index bd7290166b..7b1993f885 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -96,7 +96,7 @@ The `network-config` ConfigMap specifies the controller to be used with the ingr === "Ingress Gateway" -```mermaid + ```mermaid --- config: layout: elk From f30040340d485bfacbdd10e2657974fc6cb6f39c Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sat, 29 Nov 2025 21:31:32 -0800 Subject: [PATCH 050/146] More writing Consistency edits --- docs/snippets/netadapter-contour.md | 12 +++++-- docs/snippets/netadapter-gatewayapi.md | 8 +---- docs/snippets/netadapter-istio.md | 6 ++++ docs/snippets/netadapter-kourier.md | 10 ++++-- .../serving/config-network-adapters.md | 33 +++++++++++-------- 5 files changed, 43 insertions(+), 26 deletions(-) diff --git a/docs/snippets/netadapter-contour.md b/docs/snippets/netadapter-contour.md index 89ef744aa6..895a7ccbec 100644 --- a/docs/snippets/netadapter-contour.md +++ b/docs/snippets/netadapter-contour.md @@ -3,18 +3,24 @@ Use the following steps to install and enable Contour and enable its Knative int 1. Install the Knative Contour controller: ```bash - kubectl apply -f https://storage.googleapis.com/knative-nightly/net-contour/latest/contour.yaml + kubectl apply -f https://github.com/knative/net-kourier/releases/latest/download/kourier.yaml ``` -1. Configure Knative Serving to use Contour by default: +1. Configure Knative Serving to use Contour: ```bash - kubectl patch configmap/config-network \ + kubectl patch configmap/config-network \ --namespace knative-serving \ --type merge \ --patch '{"data":{"ingress-class":"contour.ingress.networking.knative.dev"}}' ``` +1. Verify the installation by having a pod with the base name of `contour` in the results. + + ```bash + kubectl get pods -n knative-serving + ``` + 1. Get the external IP address (FQDN) to configure DNS records: ```bash diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index 21b533db0d..8c277deb49 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -1,12 +1,6 @@ Use the following steps to install the Knative Gateway API controller. -1. Install the Knative Gateway API controller by running the command: - - ```bash - kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateawy-api.yaml")}} - ``` - -1. Configure Knative Serving to use Gateway API by default by running the command: +1. Configure Knative Serving to use `net-gateway-api` controller: ```bash kubectl patch configmap/config-network \ diff --git a/docs/snippets/netadapter-istio.md b/docs/snippets/netadapter-istio.md index 4ef4a2598f..3de263ab94 100644 --- a/docs/snippets/netadapter-istio.md +++ b/docs/snippets/netadapter-istio.md @@ -13,6 +13,12 @@ Use the following steps to install Istio and enable its Knative integration. kubectl apply -f {{ artifact(repo="net-istio",file="net-istio.yaml")}} ``` +1. Verify the installation by having pods with the base name of `istio` and `istio-webhook` in the results. + + ```bash + kubectl get pods -n knative-serving + ``` + 1. Get the external IP address (FQDN) to configure DNS records: ```bash diff --git a/docs/snippets/netadapter-kourier.md b/docs/snippets/netadapter-kourier.md index 09e2220599..46077762d9 100644 --- a/docs/snippets/netadapter-kourier.md +++ b/docs/snippets/netadapter-kourier.md @@ -1,9 +1,9 @@ -Use the following stesp to install Kourier and enable its Knative integration. +Use the following steps to install Kourier and enable its Knative integration. 1. Install the Knative Kourier controller: ```bash - kubectl apply -f {{ artifact(repo="net-kourier",org="knative-extensions",file="kourier.yaml")}} + kubectl apply -f https://github.com/knative/net-kourier/releases/latest/download/kourier.yaml ``` 1. Configure Knative Serving to use Kourier by default: @@ -15,6 +15,12 @@ Use the following stesp to install Kourier and enable its Knative integration. --patch '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}' ``` +1. Verify the installation by having pods with the base name of `kourier-controller` and `kourier-gateway` in the results. + + ```bash + kubectl get pods -n knative-serving + ``` + 1. Get the external IP address (FQDN) to configure DNS records: ```bash diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 7b1993f885..996b6c59f8 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -13,6 +13,7 @@ This page provides installation and configuration guidance for configuring Knati Use the following command to determine which controllers are installed and their status. + ```bash kubectl get pods -n knative-serving ``` @@ -47,8 +48,6 @@ The `network-config` ConfigMap specifies the controller to be used with the ingr Designed for Knative Serving with efficient serverless function deployment is the goal. Kourier is the default ingress choice for most users, when a service mesh is not required, as it has a simple setup. - The following setup procedure automatically obtains the latest release of [net-kourier](https://github.com/knative-extensions/net-kourier/releases) on the Knative extensions. - --8<-- "netadapter-kourier.md" === "Contour" @@ -69,8 +68,6 @@ The `network-config` ConfigMap specifies the controller to be used with the ingr A good choice for clusters that already run non-Knative apps and want to reuse a single Ingress controller as well as teams who are already using Contour/Envoy and wanting Knative integration with advanced routing but not full service mesh. - The following setup procedure automatically obtains the latest release of [net-contour](https://github.com/knative-extensions/net-contour/releases) on the Knative extensions. - --8<-- "netadapter-contour.md" === "Istio" @@ -90,8 +87,6 @@ The `network-config` ConfigMap specifies the controller to be used with the ingr Note that Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying 1istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own, see [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). - The following setup procedure automatically obtains the latest release of [net-istio](https://github.com/knative-extensions/net-istio/releases) on the Knative extensions. - --8<-- "netadapter-istio.md" === "Ingress Gateway" @@ -121,21 +116,31 @@ The `network-config` ConfigMap specifies the controller to be used with the ingr theme: default --- flowchart LR - subgraph s1["Gateway API for Knative"] + subgraph net-gateway-api["net-gateway-api controller"] + GW["Gateway"] + Route["Knative Route"] HR["HTTPRoute"] - GW["Gateway listener"] end - KSvc["Knative Service"] -- owns --> Route["Route"] - Route -- creates --> HR & GW + subgraph underlying["Underlying Controller
(Contour │ Istio │ Envoy Gateway │ …)"] + Controller["GatewayClass Controller"] + end + KSvc["Knative Service"] --> Route + Route -- translates to --> GW & HR + GW --> Controller + HR --> Controller + Controller -- routes traffic to --> Pods["Your Pods"] + + style net-gateway-api fill:#e3f2fd,stroke:#1976d2 + style underlying fill:#fff3e0,stroke:#ef6c00 ``` - The Knative `net-gateway-api` is a KIngress implementation and testing for Knative integration with the Kubernetes Gateway API. + The Knative `net-gateway-api` is a KIngress implementation and testing for Knative integration with the [Kubernetes Gateway API](https://gateway-api.sigs.k8s.io/). - The Kubernetes Gateway API requires a controller or service mesh. Istio and Contour implementations are tested though other Gateway API implementations should work. For more information see [Tested Gateway API version and Ingress](https://github.com/knative-extensions/net-gateway-api/blob/main/docs/test-version.md). + Best for forward-looking teams adopting the Gateway API to unify ingress across Kubernetes, with Knative leveraging to the same standard. - Best for forward-looking teams adopting Gateway API to unify ingress across Kubernetes, with Knative leveraging the same standard. + The Kubernetes Gateway API requires a controller or service mesh. Istio and Contour implementations are tested though other Gateway API implementations should work. Currently, there is no native Gateway API support for Kourier. For more information see [Tested Gateway API version and Ingress](https://github.com/knative-extensions/net-gateway-api/blob/main/docs/test-version.md). - The following setup procedure automatically obtains the latest release of [net-gateway-api](https://github.com/knative-extensions/net-gateway-api/releases) on the Knative extensions. + The controller Knative uses is determined by which Gateway API-compatible controller you install and configure in your cluster. --8<-- "netadapter-gatewayapi.md" From d475c323ec33aa096edbe7558ddad5f66ecdd56f Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sat, 29 Nov 2025 21:38:50 -0800 Subject: [PATCH 051/146] Update config-network-adapters.md Format fix --- docs/versioned/serving/config-network-adapters.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 996b6c59f8..63839de8a4 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -9,27 +9,25 @@ function: how-to This page provides installation and configuration guidance for configuring Knative networking. These options include Ingress controls, service-meshes, and gateways. -## Network layer options - Use the following command to determine which controllers are installed and their status. - ```bash kubectl get pods -n knative-serving ``` -The controllers have the following base names: +The controllers tested for Knative have the following base names: - Kourier: `kourier-control-*`, and `kourier-gateway-*`. - Contour: `contour-*` - Istio: `istio-webhook-*` + - The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace, but Knative adds the `istio-webhook-*` pod in `knative-serving` when Istio is the chosen networking layer. + +The `network-config` ConfigMap specifies the controller to be used with the ingress controller key. This key is patched with the name of the new controller when you configure a new one, as described in these instructions. See [Changing the controller](#change-the-controller) for more information about the ingress controller key. -The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace, but Knative adds the `istio-webhook-*` pod in `knative-serving` when Istio is the chosen networking layer. +## Network layer options Review the following tabs to determine the optimal networking layer for your cluster. Knative installs the Kourier controller as the default ingress. For most users, the Kourier ingress controller is sufficient with the already installed default Istio gateway resource. You can expand your capabilities with more ingress using Contour, a full-feature service mesh with Istio, and the Kubernetes Gateway API. -The `network-config` ConfigMap specifies the controller to be used with the ingress controller key. This key is patched with the name of the new controller when you configure a new one, as described in these instructions. See [Changing the controller](#change-the-controller) for more information about the ingress controller key. - === "Kourier" ```mermaid From 6f6fb4bf6f638fbfcfa34289bfc0ebc6db1f2638 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 30 Nov 2025 13:43:16 -0800 Subject: [PATCH 052/146] Update config-network-adapters.md Refinement edits --- .../serving/config-network-adapters.md | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 63839de8a4..264e08555a 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -18,15 +18,18 @@ kubectl get pods -n knative-serving The controllers tested for Knative have the following base names: - Kourier: `kourier-control-*`, and `kourier-gateway-*`. + + Kourier is included in the Knative Serving installation should appear in the results. - Contour: `contour-*` - Istio: `istio-webhook-*` - - The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace, but Knative adds the `istio-webhook-*` pod in `knative-serving` when Istio is the chosen networking layer. -The `network-config` ConfigMap specifies the controller to be used with the ingress controller key. This key is patched with the name of the new controller when you configure a new one, as described in these instructions. See [Changing the controller](#change-the-controller) for more information about the ingress controller key. + The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace. In addition, Knative adds the `istio-webhook-*` pod in the `knative-serving` namespace when Istio is the chosen networking layer. + +The `network-config` ConfigMap specifies the controller to be used in the ingress controller key. This key is patched with the name of the new controller when you configure a new one. See [Changing the controller](#change-the-controller) for important information about using this key. ## Network layer options -Review the following tabs to determine the optimal networking layer for your cluster. Knative installs the Kourier controller as the default ingress. For most users, the Kourier ingress controller is sufficient with the already installed default Istio gateway resource. You can expand your capabilities with more ingress using Contour, a full-feature service mesh with Istio, and the Kubernetes Gateway API. +Review the following tabs to determine the optimal networking layer for your cluster. Knative installs the Kourier controller as the default ingress. For most users, the Kourier ingress controller is sufficient in conjunction the default Istio gateway that is also included in the Knative Serving installation. You can expand your capabilities with the Contour ingress, a full-feature service mesh with Istio, and the Kubernetes Gateway API. === "Kourier" @@ -42,9 +45,7 @@ Review the following tabs to determine the optimal networking layer for your clu K2 --> K3["Class: kourier.ingress.networking.knative.dev"] ``` - The Knative `net-kourier` is an Ingress for Knative Serving. Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an Envoy proxy and a control plane. - - Designed for Knative Serving with efficient serverless function deployment is the goal. Kourier is the default ingress choice for most users, when a service mesh is not required, as it has a simple setup. + The Knative `net-kourier` ingress is installed with Knative Serving. Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an Envoy proxy and a control plane. If Kourier is satisfactory, no further configurations are required. --8<-- "netadapter-kourier.md" @@ -62,9 +63,7 @@ Review the following tabs to determine the optimal networking layer for your clu C2 --> C3["Class: contour.ingress.networking.knative.dev"] ``` - The Knative `net-contour` controller enables Contour to satisfy the networking needs of Knative Serving by bridging Knative's KIngress resources to Contour's HTTPProxy resources. - - A good choice for clusters that already run non-Knative apps and want to reuse a single Ingress controller as well as teams who are already using Contour/Envoy and wanting Knative integration with advanced routing but not full service mesh. + The Knative `net-contour` controller enables Contour to satisfy the networking needs by bridging Knative's KIngress resources to Contour's HTTPProxy resources. A good choice for clusters that already run non-Knative apps, want to reuse a single Ingress controller, and for teams who are already using Contour envoy but don't need a full-feature service mesh. --8<-- "netadapter-contour.md" @@ -81,9 +80,7 @@ Review the following tabs to determine the optimal networking layer for your clu I2 --> I3["Class: istio.ingress.networking.knative.dev
No native Ingress objects"] ``` - The Knative `net-istio` defines a KIngress controller for Istio. A full-feature service mesh integrated with Knative that can also function as a Knative ingress. Best for enterprises already running Istio or needing advanced service mesh features alongside Knative. - - Note that Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying 1istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own, see [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). + The Knative `net-istio` defines a KIngress controller for Istio. It's a full-feature service mesh integrated with Knative that also functions as a Knative ingress. Good for enterprises already running Istio or needing advanced service mesh features. --8<-- "netadapter-istio.md" @@ -103,7 +100,8 @@ Review the following tabs to determine the optimal networking layer for your clu Revision --> KIGW ``` - Knative uses a shared ingress gateway to serve all incoming traffic within Knative service mesh. For information on customizing the gateway, see [Configure the Ingress Gateway](/versioned/serving/setting-up-custom-ingress-gateway.md). + Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying `istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own, see [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). + === "Gateway API" @@ -132,13 +130,11 @@ Review the following tabs to determine the optimal networking layer for your clu style underlying fill:#fff3e0,stroke:#ef6c00 ``` - The Knative `net-gateway-api` is a KIngress implementation and testing for Knative integration with the [Kubernetes Gateway API](https://gateway-api.sigs.k8s.io/). - - Best for forward-looking teams adopting the Gateway API to unify ingress across Kubernetes, with Knative leveraging to the same standard. + The Knative `net-gateway-api` is a KIngress implementation and testing for Knative integration with the [Kubernetes Gateway API](https://gateway-api.sigs.k8s.io/). Good for teams adopting the Gateway API to unify ingress across Kubernetes. The Kubernetes Gateway API requires a controller or service mesh. Istio and Contour implementations are tested though other Gateway API implementations should work. Currently, there is no native Gateway API support for Kourier. For more information see [Tested Gateway API version and Ingress](https://github.com/knative-extensions/net-gateway-api/blob/main/docs/test-version.md). - The controller Knative uses is determined by which Gateway API-compatible controller you install and configure in your cluster. + The controller that Knative uses is determined by which Gateway API-compatible controller you install and configure in your cluster. --8<-- "netadapter-gatewayapi.md" From 1eeda2e626f57b4f233dd97975482d73905b4fa6 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 30 Nov 2025 13:52:48 -0800 Subject: [PATCH 053/146] Misc fixes Fixes and refinements --- docs/snippets/netadapter-gatewayapi.md | 2 +- docs/versioned/serving/config-network-adapters.md | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index 8c277deb49..9007675b6c 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -1,4 +1,4 @@ -Use the following steps to install the Knative Gateway API controller. +Use the following steps to configure the Knative Gateway API controller. 1. Configure Knative Serving to use `net-gateway-api` controller: diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 264e08555a..554a19c9c8 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -9,13 +9,15 @@ function: how-to This page provides installation and configuration guidance for configuring Knative networking. These options include Ingress controls, service-meshes, and gateways. +### Determine current state + Use the following command to determine which controllers are installed and their status. ```bash kubectl get pods -n knative-serving ``` -The controllers tested for Knative have the following base names: +The ingress controllers tested for Knative have the following base names: - Kourier: `kourier-control-*`, and `kourier-gateway-*`. @@ -25,7 +27,7 @@ The controllers tested for Knative have the following base names: The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace. In addition, Knative adds the `istio-webhook-*` pod in the `knative-serving` namespace when Istio is the chosen networking layer. -The `network-config` ConfigMap specifies the controller to be used in the ingress controller key. This key is patched with the name of the new controller when you configure a new one. See [Changing the controller](#change-the-controller) for important information about using this key. +The `network-config` ConfigMap specifies the controller to be used in the ingress controller key. This key is patched with the name of the new controller when you configure a new one. See [Changing the ingress controller](#change-the-controller) for important information about using this key. ## Network layer options @@ -47,6 +49,8 @@ Review the following tabs to determine the optimal networking layer for your clu The Knative `net-kourier` ingress is installed with Knative Serving. Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an Envoy proxy and a control plane. If Kourier is satisfactory, no further configurations are required. + *Install and configure* + --8<-- "netadapter-kourier.md" === "Contour" @@ -62,6 +66,7 @@ Review the following tabs to determine the optimal networking layer for your clu C1["Knative
net-contour"] -- creates --> C2["Ingress objects"] C2 --> C3["Class: contour.ingress.networking.knative.dev"] ``` + *Install and configure* The Knative `net-contour` controller enables Contour to satisfy the networking needs by bridging Knative's KIngress resources to Contour's HTTPProxy resources. A good choice for clusters that already run non-Knative apps, want to reuse a single Ingress controller, and for teams who are already using Contour envoy but don't need a full-feature service mesh. @@ -82,6 +87,8 @@ Review the following tabs to determine the optimal networking layer for your clu The Knative `net-istio` defines a KIngress controller for Istio. It's a full-feature service mesh integrated with Knative that also functions as a Knative ingress. Good for enterprises already running Istio or needing advanced service mesh features. + *Install and configure* + --8<-- "netadapter-istio.md" === "Ingress Gateway" @@ -136,6 +143,8 @@ Review the following tabs to determine the optimal networking layer for your clu The controller that Knative uses is determined by which Gateway API-compatible controller you install and configure in your cluster. + *Configure* + --8<-- "netadapter-gatewayapi.md" ## Configure DNS @@ -144,5 +153,5 @@ Review the following tabs to determine the optimal networking layer for your clu --8<-- "real-dns-yaml.md" --8<-- "no-dns.md" -## Change the controller +## Changing the ingress controller From 614e2933752d7b43c788cae982bfe46cc33c3b82 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 30 Nov 2025 14:15:40 -0800 Subject: [PATCH 054/146] Small edit to rebuild --- docs/versioned/serving/config-network-adapters.md | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 554a19c9c8..50ac48a1b7 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -19,13 +19,9 @@ kubectl get pods -n knative-serving The ingress controllers tested for Knative have the following base names: -- Kourier: `kourier-control-*`, and `kourier-gateway-*`. - - Kourier is included in the Knative Serving installation should appear in the results. +- Kourier: `kourier-control-*`, and `kourier-gateway-*`. Kourier is included in the Knative Serving installation should appear in the results. - Contour: `contour-*` -- Istio: `istio-webhook-*` - - The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace. In addition, Knative adds the `istio-webhook-*` pod in the `knative-serving` namespace when Istio is the chosen networking layer. +- Istio: `istio-webhook-*`. The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace. In addition, Knative adds the `istio-webhook-*` pod in the `knative-serving` namespace when Istio is the chosen networking layer. The `network-config` ConfigMap specifies the controller to be used in the ingress controller key. This key is patched with the name of the new controller when you configure a new one. See [Changing the ingress controller](#change-the-controller) for important information about using this key. @@ -154,4 +150,3 @@ Review the following tabs to determine the optimal networking layer for your clu --8<-- "no-dns.md" ## Changing the ingress controller - From ee0d3f014978a4654f1302f637a476207cf889db Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 30 Nov 2025 23:08:49 -0800 Subject: [PATCH 055/146] Update config-network-adapters.md Refinement edits --- .../serving/config-network-adapters.md | 43 ++++++++++++++++--- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 50ac48a1b7..b0226b804a 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -7,7 +7,7 @@ function: how-to # Configure Knative networking -This page provides installation and configuration guidance for configuring Knative networking. These options include Ingress controls, service-meshes, and gateways. +This page provides installation and configuration guidance for configuring Knative networking. You can configure Ingress controls, service-meshes, and gateways. ### Determine current state @@ -17,13 +17,13 @@ Use the following command to determine which controllers are installed and their kubectl get pods -n knative-serving ``` -The ingress controllers tested for Knative have the following base names: +The ingress controllers, that have been tested for Knative, have the following base names: - Kourier: `kourier-control-*`, and `kourier-gateway-*`. Kourier is included in the Knative Serving installation should appear in the results. - Contour: `contour-*` - Istio: `istio-webhook-*`. The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace. In addition, Knative adds the `istio-webhook-*` pod in the `knative-serving` namespace when Istio is the chosen networking layer. -The `network-config` ConfigMap specifies the controller to be used in the ingress controller key. This key is patched with the name of the new controller when you configure a new one. See [Changing the ingress controller](#change-the-controller) for important information about using this key. +The `network-config` ConfigMap sets which controller to use in the ingress controller key. This key is patched with the name of any new controller. See [Changing the ingress controller](#change-the-controller) for important information about using this key. ## Network layer options @@ -45,7 +45,7 @@ Review the following tabs to determine the optimal networking layer for your clu The Knative `net-kourier` ingress is installed with Knative Serving. Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an Envoy proxy and a control plane. If Kourier is satisfactory, no further configurations are required. - *Install and configure* + **Install and configure** --8<-- "netadapter-kourier.md" @@ -62,7 +62,7 @@ Review the following tabs to determine the optimal networking layer for your clu C1["Knative
net-contour"] -- creates --> C2["Ingress objects"] C2 --> C3["Class: contour.ingress.networking.knative.dev"] ``` - *Install and configure* + **Install and configure** The Knative `net-contour` controller enables Contour to satisfy the networking needs by bridging Knative's KIngress resources to Contour's HTTPProxy resources. A good choice for clusters that already run non-Knative apps, want to reuse a single Ingress controller, and for teams who are already using Contour envoy but don't need a full-feature service mesh. @@ -83,7 +83,7 @@ Review the following tabs to determine the optimal networking layer for your clu The Knative `net-istio` defines a KIngress controller for Istio. It's a full-feature service mesh integrated with Knative that also functions as a Knative ingress. Good for enterprises already running Istio or needing advanced service mesh features. - *Install and configure* + **Install and configure** --8<-- "netadapter-istio.md" @@ -139,7 +139,7 @@ Review the following tabs to determine the optimal networking layer for your clu The controller that Knative uses is determined by which Gateway API-compatible controller you install and configure in your cluster. - *Configure* + ***Configure** --8<-- "netadapter-gatewayapi.md" @@ -150,3 +150,32 @@ Review the following tabs to determine the optimal networking layer for your clu --8<-- "no-dns.md" ## Changing the ingress controller + +If you want to change the ingress controllers, simply install and configure the new controller as shown in the [Network layer options](#network-layer-options) instructions. There is no explicit need to remove ingress controllers that are not in use. + +You can verify the controller in use by examining the `config-network.yaml`: + +```bash +kubectl get cm config-network -n knative-serving -o yaml +``` + +Look for the `ingress-class` key. It could also be the `ingress.class` key with a dot. The dash usage is more current and supersedes any key with the dot. In the following example, the `ingress.class` key was initially set for the Kourier controller, but is now set to Contour because the ingress key with a dash takes precedence. + +```yml +ingress-class: contour.ingress.networking.knative.dev +ingress.class: kourier.ingress.networking.knative.dev +``` + +If you want to switch back to a previously installed controller, patch the `config-network` ConfigMap with the new controller, as shown in the following example to switch back to Kourier but this with using the dash in `ingress-class`. + +```bash +kubectl patch cm config-network -n knative-serving \ + --type merge -p '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}' +``` + +You can remove an unused key with a dot with the following command: + +```bash +ubectl patch configmap config-network -n knative-serving \ + --type=json -p='[{"op": "remove", "path": "/data/ingress.class"}]' +``` From d70fae55fed507497887510b66c7c3d9aece5126 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 30 Nov 2025 23:15:23 -0800 Subject: [PATCH 056/146] Update config-network-adapters.md Minor edit to rebuild --- docs/versioned/serving/config-network-adapters.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index b0226b804a..088003e0ce 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -151,9 +151,9 @@ Review the following tabs to determine the optimal networking layer for your clu ## Changing the ingress controller -If you want to change the ingress controllers, simply install and configure the new controller as shown in the [Network layer options](#network-layer-options) instructions. There is no explicit need to remove ingress controllers that are not in use. +If you want to change the ingress controllers, install and configure the new controller as shown in the [Network layer options](#network-layer-options) instructions. There is no explicit need to remove ingress controllers that are not in use. -You can verify the controller in use by examining the `config-network.yaml`: +You can determine the controller in use by examining the `config-network.yaml`: ```bash kubectl get cm config-network -n knative-serving -o yaml From aa5c536da3b7ff7e4f4a40d3eed52e2785f56f19 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Mon, 1 Dec 2025 10:21:02 -0800 Subject: [PATCH 057/146] Misc updates Copy and refinement edits --- docs/snippets/netadapter-contour.md | 2 +- docs/snippets/netadapter-istio.md | 11 ++++++++++- docs/snippets/netadapter-kourier.md | 2 +- .../versioned/serving/config-network-adapters.md | 16 ++++++++-------- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/docs/snippets/netadapter-contour.md b/docs/snippets/netadapter-contour.md index 895a7ccbec..65ad62dbca 100644 --- a/docs/snippets/netadapter-contour.md +++ b/docs/snippets/netadapter-contour.md @@ -1,4 +1,4 @@ -Use the following steps to install and enable Contour and enable its Knative integration. +Use the following steps to install and enable Contour and set it as the ingress conroller. 1. Install the Knative Contour controller: diff --git a/docs/snippets/netadapter-istio.md b/docs/snippets/netadapter-istio.md index 3de263ab94..39be4d07c5 100644 --- a/docs/snippets/netadapter-istio.md +++ b/docs/snippets/netadapter-istio.md @@ -1,4 +1,4 @@ -Use the following steps to install Istio and enable its Knative integration. +Use the following steps to install Istio and set it as the ingress conroller. 1. Install a properly configured Istio: @@ -13,6 +13,15 @@ Use the following steps to install Istio and enable its Knative integration. kubectl apply -f {{ artifact(repo="net-istio",file="net-istio.yaml")}} ``` + + 1. Verify the installation by having pods with the base name of `istio` and `istio-webhook` in the results. ```bash diff --git a/docs/snippets/netadapter-kourier.md b/docs/snippets/netadapter-kourier.md index 46077762d9..6b3ff4108d 100644 --- a/docs/snippets/netadapter-kourier.md +++ b/docs/snippets/netadapter-kourier.md @@ -1,4 +1,4 @@ -Use the following steps to install Kourier and enable its Knative integration. +Use the following steps to install Kourier and set it as the ingress controller. 1. Install the Knative Kourier controller: diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 088003e0ce..507215d349 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -7,7 +7,7 @@ function: how-to # Configure Knative networking -This page provides installation and configuration guidance for configuring Knative networking. You can configure Ingress controls, service-meshes, and gateways. +This page provides installation and configuration guidance for Knative networking. You can configure Ingress controls, service-meshes, and gateways. ### Determine current state @@ -17,9 +17,9 @@ Use the following command to determine which controllers are installed and their kubectl get pods -n knative-serving ``` -The ingress controllers, that have been tested for Knative, have the following base names: +The ngress controllers, that have been tested for Knative, have the following base names: -- Kourier: `kourier-control-*`, and `kourier-gateway-*`. Kourier is included in the Knative Serving installation should appear in the results. +- Kourier: `kourier-control-*`, and `kourier-gateway-*`. Kourier is included in the Knative Serving installation should appear in the results when your cluster is first created. - Contour: `contour-*` - Istio: `istio-webhook-*`. The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace. In addition, Knative adds the `istio-webhook-*` pod in the `knative-serving` namespace when Istio is the chosen networking layer. @@ -27,7 +27,7 @@ The `network-config` ConfigMap sets which controller to use in the ingress contr ## Network layer options -Review the following tabs to determine the optimal networking layer for your cluster. Knative installs the Kourier controller as the default ingress. For most users, the Kourier ingress controller is sufficient in conjunction the default Istio gateway that is also included in the Knative Serving installation. You can expand your capabilities with the Contour ingress, a full-feature service mesh with Istio, and the Kubernetes Gateway API. +Review the following tabs to determine the optimal networking layer for your cluster. For most users, the Kourier ingress controller is sufficient in conjunction the default Istio gateway that is also included in the Knative Serving installation. You can expand your capabilities with the Contour ingress, a full-feature service mesh with Istio, and the Kubernetes Gateway API. === "Kourier" @@ -43,7 +43,7 @@ Review the following tabs to determine the optimal networking layer for your clu K2 --> K3["Class: kourier.ingress.networking.knative.dev"] ``` - The Knative `net-kourier` ingress is installed with Knative Serving. Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an Envoy proxy and a control plane. If Kourier is satisfactory, no further configurations are required. + The Knative `net-kourier` ingress is installed with Knative Serving. Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an envoy proxy and a control plane. If Kourier is satisfactory, no further configurations are required. **Install and configure** @@ -139,7 +139,7 @@ Review the following tabs to determine the optimal networking layer for your clu The controller that Knative uses is determined by which Gateway API-compatible controller you install and configure in your cluster. - ***Configure** + **Configure** --8<-- "netadapter-gatewayapi.md" @@ -151,7 +151,7 @@ Review the following tabs to determine the optimal networking layer for your clu ## Changing the ingress controller -If you want to change the ingress controllers, install and configure the new controller as shown in the [Network layer options](#network-layer-options) instructions. There is no explicit need to remove ingress controllers that are not in use. +If you want to change the ingress controllers, install and configure the new controller as instructed in the [Network layer options](#network-layer-options). There is no requirement to remove ingress controllers that are not in use. You can determine the controller in use by examining the `config-network.yaml`: @@ -166,7 +166,7 @@ ingress-class: contour.ingress.networking.knative.dev ingress.class: kourier.ingress.networking.knative.dev ``` -If you want to switch back to a previously installed controller, patch the `config-network` ConfigMap with the new controller, as shown in the following example to switch back to Kourier but this with using the dash in `ingress-class`. +If you want to switch back to a previously installed controller, patch the `config-network` ConfigMap with the new controller. In the following example Kourier is used because of the dash in `ingress-class`. ```bash kubectl patch cm config-network -n knative-serving \ From 1425f02750d5aceccd43cc9250180e5c41616faa Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Mon, 1 Dec 2025 10:46:21 -0800 Subject: [PATCH 058/146] Update config-network-adapters.md Added note about IBM Z and IBM Power platforms and Kourier. --- docs/versioned/serving/config-network-adapters.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 507215d349..4ada79395c 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -45,6 +45,10 @@ Review the following tabs to determine the optimal networking layer for your clu The Knative `net-kourier` ingress is installed with Knative Serving. Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an envoy proxy and a control plane. If Kourier is satisfactory, no further configurations are required. + Kourier is the only supported ingress controller for the IBM Z and IBM Power platforms, and requires additional steps to patch the envoy image as described [here](./install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). + +Follow the below steps to install Kourier. Post installation, patch the envoy image based on RedHat Maistra as described in this link. + **Install and configure** --8<-- "netadapter-kourier.md" From 6659e0755bb20165325ef66e72c668d300ff68b0 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Mon, 1 Dec 2025 11:25:31 -0800 Subject: [PATCH 059/146] Update config-network-adapters.md Fixed link --- docs/versioned/serving/config-network-adapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 4ada79395c..fb59c6beaf 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -45,7 +45,7 @@ Review the following tabs to determine the optimal networking layer for your clu The Knative `net-kourier` ingress is installed with Knative Serving. Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an envoy proxy and a control plane. If Kourier is satisfactory, no further configurations are required. - Kourier is the only supported ingress controller for the IBM Z and IBM Power platforms, and requires additional steps to patch the envoy image as described [here](./install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). + Kourier is the only supported ingress controller for the IBM Z and IBM Power platforms, and requires additional steps as described in [Install Serving with YAML on IBM-Z and IBM-P](/versioned/install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). Follow the below steps to install Kourier. Post installation, patch the envoy image based on RedHat Maistra as described in this link. From 9059d0d09ed752a06cf5b266bd59a3efc3d64184 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Mon, 1 Dec 2025 11:34:15 -0800 Subject: [PATCH 060/146] Update config-network-adapters.md Format fix --- docs/versioned/serving/config-network-adapters.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index fb59c6beaf..a18a5a3df0 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -47,8 +47,6 @@ Review the following tabs to determine the optimal networking layer for your clu Kourier is the only supported ingress controller for the IBM Z and IBM Power platforms, and requires additional steps as described in [Install Serving with YAML on IBM-Z and IBM-P](/versioned/install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). -Follow the below steps to install Kourier. Post installation, patch the envoy image based on RedHat Maistra as described in this link. - **Install and configure** --8<-- "netadapter-kourier.md" From 1d76ef9226ee24cd7137d65bcb5f78ea0393a5a7 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Mon, 1 Dec 2025 15:53:43 -0800 Subject: [PATCH 061/146] Update netadapter-gatewayapi.md Updated Gateway API steps --- docs/snippets/netadapter-gatewayapi.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index 9007675b6c..a17ffe7c57 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -1,6 +1,12 @@ -Use the following steps to configure the Knative Gateway API controller. +Use the following steps to install and configure the Knative Gateway API. -1. Configure Knative Serving to use `net-gateway-api` controller: +1. Install the Knative Gateway API channel: + + ```bash + kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateawy-api.yaml")}} + ``` + +1. Configure Knative Serving to use Knative Gateway API channel: ```bash kubectl patch configmap/config-network \ From 7c0cb5d63bb6dd6f76407bcea29d068681754840 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Tue, 2 Dec 2025 09:20:02 -0800 Subject: [PATCH 062/146] Update config-network-adapters.md Fixed typos and tweaking --- .../serving/config-network-adapters.md | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index a18a5a3df0..b36cf40c5e 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -17,17 +17,17 @@ Use the following command to determine which controllers are installed and their kubectl get pods -n knative-serving ``` -The ngress controllers, that have been tested for Knative, have the following base names: +The ingress controllers, that have been tested for Knative, have the following base names: - Kourier: `kourier-control-*`, and `kourier-gateway-*`. Kourier is included in the Knative Serving installation should appear in the results when your cluster is first created. - Contour: `contour-*` -- Istio: `istio-webhook-*`. The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace. In addition, Knative adds the `istio-webhook-*` pod in the `knative-serving` namespace when Istio is the chosen networking layer. +- Istio: `istio-webhook-*`. The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace. Knative adds the `istio-webhook-*` pod in the `knative-serving` namespace when Istio is the chosen networking layer. -The `network-config` ConfigMap sets which controller to use in the ingress controller key. This key is patched with the name of any new controller. See [Changing the ingress controller](#change-the-controller) for important information about using this key. +The `network-config` ConfigMap sets which controller to use with the ingress controller key. This key is patched with the name of any new controller. See [Changing the ingress controller](#change-the-controller) for important information about using this key. ## Network layer options -Review the following tabs to determine the optimal networking layer for your cluster. For most users, the Kourier ingress controller is sufficient in conjunction the default Istio gateway that is also included in the Knative Serving installation. You can expand your capabilities with the Contour ingress, a full-feature service mesh with Istio, and the Kubernetes Gateway API. +Review the following tabs to determine the optimal networking layer for your cluster. For most users, the Kourier ingress controller is sufficient in conjunction the default Istio gateway, which is also included in the Knative Serving installation. You can expand your capabilities with the Contour ingress, a full-feature service mesh with Istio, and the Kubernetes Gateway API. === "Kourier" @@ -43,11 +43,11 @@ Review the following tabs to determine the optimal networking layer for your clu K2 --> K3["Class: kourier.ingress.networking.knative.dev"] ``` - The Knative `net-kourier` ingress is installed with Knative Serving. Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an envoy proxy and a control plane. If Kourier is satisfactory, no further configurations are required. + The Kourier ingress controller, `net-kourier`, is installed with Knative Serving. Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an envoy proxy and a control plane. If Kourier is satisfactory, no further configurations are required. Kourier is the only supported ingress controller for the IBM Z and IBM Power platforms, and requires additional steps as described in [Install Serving with YAML on IBM-Z and IBM-P](/versioned/install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). - **Install and configure** + **Install and configure Kourier** --8<-- "netadapter-kourier.md" @@ -64,9 +64,9 @@ Review the following tabs to determine the optimal networking layer for your clu C1["Knative
net-contour"] -- creates --> C2["Ingress objects"] C2 --> C3["Class: contour.ingress.networking.knative.dev"] ``` - **Install and configure** + **Install and configure Contour** - The Knative `net-contour` controller enables Contour to satisfy the networking needs by bridging Knative's KIngress resources to Contour's HTTPProxy resources. A good choice for clusters that already run non-Knative apps, want to reuse a single Ingress controller, and for teams who are already using Contour envoy but don't need a full-feature service mesh. + The Contour ingress controller, `net-contour`, bridges Knative's KIngress resources to Contour's HTTPProxy resources. A good choice for clusters that already run non-Knative apps, teams who want to use a single Ingress controller, and are already using Contour envoy but don't need a full-feature service mesh. --8<-- "netadapter-contour.md" @@ -83,7 +83,7 @@ Review the following tabs to determine the optimal networking layer for your clu I2 --> I3["Class: istio.ingress.networking.knative.dev
No native Ingress objects"] ``` - The Knative `net-istio` defines a KIngress controller for Istio. It's a full-feature service mesh integrated with Knative that also functions as a Knative ingress. Good for enterprises already running Istio or needing advanced service mesh features. + The Knative `net-istio` is a KIngress controller for Istio. It's a full-feature service mesh that also functions as a Knative ingress. Good for enterprises already running Istio or needing advanced service mesh features. **Install and configure** @@ -107,7 +107,6 @@ Review the following tabs to determine the optimal networking layer for your clu Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying `istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own, see [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). - === "Gateway API" ```mermaid @@ -141,7 +140,7 @@ Review the following tabs to determine the optimal networking layer for your clu The controller that Knative uses is determined by which Gateway API-compatible controller you install and configure in your cluster. - **Configure** + **Install and configure Gateway API** --8<-- "netadapter-gatewayapi.md" From d21ff0211fe2f5fbd8cfb95f0c1e21952ff61fc1 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Tue, 2 Dec 2025 09:45:24 -0800 Subject: [PATCH 063/146] Update config-network-adapters.md Minor edit to rebuild --- docs/versioned/serving/config-network-adapters.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index b36cf40c5e..f3dffabfcb 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -11,7 +11,7 @@ This page provides installation and configuration guidance for Knative networkin ### Determine current state -Use the following command to determine which controllers are installed and their status. +Use the following command to determine which ingress controllers are installed and their status. ```bash kubectl get pods -n knative-serving @@ -45,7 +45,7 @@ Review the following tabs to determine the optimal networking layer for your clu The Kourier ingress controller, `net-kourier`, is installed with Knative Serving. Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an envoy proxy and a control plane. If Kourier is satisfactory, no further configurations are required. - Kourier is the only supported ingress controller for the IBM Z and IBM Power platforms, and requires additional steps as described in [Install Serving with YAML on IBM-Z and IBM-P](/versioned/install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). + Kourier is the only supported ingress controller for the IBM Z and IBM Power platforms, and requires additional steps as documented in [Install Serving with YAML on IBM-Z and IBM-P](/versioned/install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). **Install and configure Kourier** From 89a5b3cc839c1c60324715b9b6918f47370a15e8 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Tue, 2 Dec 2025 09:52:56 -0800 Subject: [PATCH 064/146] Update config-network-adapters.md Consistency edits --- docs/versioned/serving/config-network-adapters.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index f3dffabfcb..2ee5bb87e7 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -64,10 +64,11 @@ Review the following tabs to determine the optimal networking layer for your clu C1["Knative
net-contour"] -- creates --> C2["Ingress objects"] C2 --> C3["Class: contour.ingress.networking.knative.dev"] ``` - **Install and configure Contour** The Contour ingress controller, `net-contour`, bridges Knative's KIngress resources to Contour's HTTPProxy resources. A good choice for clusters that already run non-Knative apps, teams who want to use a single Ingress controller, and are already using Contour envoy but don't need a full-feature service mesh. + **Install and configure Contour** + --8<-- "netadapter-contour.md" === "Istio" @@ -85,7 +86,7 @@ Review the following tabs to determine the optimal networking layer for your clu The Knative `net-istio` is a KIngress controller for Istio. It's a full-feature service mesh that also functions as a Knative ingress. Good for enterprises already running Istio or needing advanced service mesh features. - **Install and configure** + **Install and configure Istio** --8<-- "netadapter-istio.md" @@ -105,7 +106,11 @@ Review the following tabs to determine the optimal networking layer for your clu Revision --> KIGW ``` - Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying `istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own, see [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). + Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying `istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own. + + **Install and configure Ingress Gateway** + + See [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). === "Gateway API" From e1b403e0054925f00e7725a70d0cd0bb37409fcc Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Fri, 5 Dec 2025 16:34:08 -0800 Subject: [PATCH 065/146] Update config-network-adapters.md Link fix --- docs/versioned/serving/config-network-adapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 2ee5bb87e7..989e8066dc 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -45,7 +45,7 @@ Review the following tabs to determine the optimal networking layer for your clu The Kourier ingress controller, `net-kourier`, is installed with Knative Serving. Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an envoy proxy and a control plane. If Kourier is satisfactory, no further configurations are required. - Kourier is the only supported ingress controller for the IBM Z and IBM Power platforms, and requires additional steps as documented in [Install Serving with YAML on IBM-Z and IBM-P](/versioned/install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). + Kourier is the only supported ingress controller for the IBM Z and IBM Power platforms, and requires additional steps as documented in [Install Serving with YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). **Install and configure Kourier** From 39b879a98888f9bfb7642899ebdd386df2d68855 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sat, 6 Dec 2025 15:45:58 -0800 Subject: [PATCH 066/146] Update docs/snippets/dns.md Co-authored-by: Evan Anderson --- docs/snippets/dns.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/snippets/dns.md b/docs/snippets/dns.md index d71142b058..2d982a90c3 100644 --- a/docs/snippets/dns.md +++ b/docs/snippets/dns.md @@ -1,4 +1,4 @@ -You can configure DNS to avoid running curl commands with a host header. +You can configure DNS to avoid specifying the host header in curl commands, or to access the content with a web browser. The following tabs show instructions for configuring DNS. Follow the procedure for the DNS of your choice: From 96c2e5d8db4afd7bb6f0ee6865872985417f330a Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 7 Dec 2025 14:10:58 -0800 Subject: [PATCH 067/146] Processed reviewer edits --- docs/snippets/netadapter-contour.md | 2 +- docs/snippets/netadapter-gatewayapi.md | 2 +- docs/snippets/netadapter-istio.md | 10 +++++----- docs/versioned/serving/config-network-adapters.md | 8 ++++---- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/snippets/netadapter-contour.md b/docs/snippets/netadapter-contour.md index 65ad62dbca..069e9f382f 100644 --- a/docs/snippets/netadapter-contour.md +++ b/docs/snippets/netadapter-contour.md @@ -3,7 +3,7 @@ Use the following steps to install and enable Contour and set it as the ingress 1. Install the Knative Contour controller: ```bash - kubectl apply -f https://github.com/knative/net-kourier/releases/latest/download/kourier.yaml + kubectl apply -f {{ artifact(org="knative-extensions", repo="net-contour", file="contour.yaml" }} ``` 1. Configure Knative Serving to use Contour: diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index a17ffe7c57..2d2f117bbe 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -3,7 +3,7 @@ Use the following steps to install and configure the Knative Gateway API. 1. Install the Knative Gateway API channel: ```bash - kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateawy-api.yaml")}} + kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateawy-api.yaml") }} ``` 1. Configure Knative Serving to use Knative Gateway API channel: diff --git a/docs/snippets/netadapter-istio.md b/docs/snippets/netadapter-istio.md index 39be4d07c5..029a62b67d 100644 --- a/docs/snippets/netadapter-istio.md +++ b/docs/snippets/netadapter-istio.md @@ -3,24 +3,24 @@ Use the following steps to install Istio and set it as the ingress conroller. 1. Install a properly configured Istio: ```bash - kubectl apply -l knative.dev/crd-install=true -f {{ artifact(repo="net-istio",org="knative-extensions",file="istio.yaml")}} - kubectl apply -f {{ artifact(repo="net-istio",org="knative-extensions",file="istio.yaml")}} + kubectl apply -l knative.dev/crd-install=true -f {{ artifact(repo="net-istio",org="knative-extensions",file="istio.yaml") }} + kubectl apply -f {{ artifact(repo="net-istio",org="knative-extensions",file="istio.yaml") }} ``` 1. Install the Knative Istio controller: ```bash - kubectl apply -f {{ artifact(repo="net-istio",file="net-istio.yaml")}} + kubectl apply -f {{ artifact(repo="net-istio",file="net-istio.yaml") }} ``` - + ``` 1. Verify the installation by having pods with the base name of `istio` and `istio-webhook` in the results. diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 989e8066dc..53efbf35d9 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -17,17 +17,17 @@ Use the following command to determine which ingress controllers are installed a kubectl get pods -n knative-serving ``` -The ingress controllers, that have been tested for Knative, have the following base names: +The Knative team tests the following ingress controllers: - Kourier: `kourier-control-*`, and `kourier-gateway-*`. Kourier is included in the Knative Serving installation should appear in the results when your cluster is first created. - Contour: `contour-*` - Istio: `istio-webhook-*`. The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace. Knative adds the `istio-webhook-*` pod in the `knative-serving` namespace when Istio is the chosen networking layer. -The `network-config` ConfigMap sets which controller to use with the ingress controller key. This key is patched with the name of any new controller. See [Changing the ingress controller](#change-the-controller) for important information about using this key. +Each ingress controller manages only those ingress objects that are annotated with its key. Knative Serving uses a default value of the key based on the `network-config` ConfigMap. See [Changing the ingress controller](#change-the-controller) for important information about using this key. ## Network layer options -Review the following tabs to determine the optimal networking layer for your cluster. For most users, the Kourier ingress controller is sufficient in conjunction the default Istio gateway, which is also included in the Knative Serving installation. You can expand your capabilities with the Contour ingress, a full-feature service mesh with Istio, and the Kubernetes Gateway API. +Review the following tabs to determine the optimal networking layer for your cluster. For most users, the Kourier ingress controller is sufficient. You can expand your capabilities with the Contour ingress, a full-feature service mesh with Istio, and the Kubernetes Gateway API. === "Kourier" @@ -45,7 +45,7 @@ Review the following tabs to determine the optimal networking layer for your clu The Kourier ingress controller, `net-kourier`, is installed with Knative Serving. Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an envoy proxy and a control plane. If Kourier is satisfactory, no further configurations are required. - Kourier is the only supported ingress controller for the IBM Z and IBM Power platforms, and requires additional steps as documented in [Install Serving with YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). + Kourier is a fine choice for all platforms, but for these IBM platforms it's the only option and requires additional steps as documented in [Install Serving with YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). **Install and configure Kourier** From de084eec2e88cc292ed3b88cbdd79a099771a3de Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 7 Dec 2025 22:08:38 -0800 Subject: [PATCH 068/146] Misc edits Moved page up in Nav, moved 'Detect current state' section down. Also format edits. --- docs/snippets/netadapter-istio.md | 12 +++--- docs/versioned/.nav.yml | 2 +- .../serving/config-network-adapters.md | 42 ++++++++++--------- 3 files changed, 29 insertions(+), 27 deletions(-) diff --git a/docs/snippets/netadapter-istio.md b/docs/snippets/netadapter-istio.md index 029a62b67d..37d7236b50 100644 --- a/docs/snippets/netadapter-istio.md +++ b/docs/snippets/netadapter-istio.md @@ -15,12 +15,12 @@ Use the following steps to install Istio and set it as the ingress conroller. 1. Set the `config-network` ConfigMap to use Istio: - ```bash - kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"istio.ingress.networking.knative.dev"}}' - ``` + ```bash + kubectl patch configmap/config-network \ + --namespace knative-serving \ + --type merge \ + --patch '{"data":{"ingress-class":"istio.ingress.networking.knative.dev"}}' + ``` 1. Verify the installation by having pods with the base name of `istio` and `istio-webhook` in the results. diff --git a/docs/versioned/.nav.yml b/docs/versioned/.nav.yml index 2c2ad9a631..a5cdc1a1a9 100644 --- a/docs/versioned/.nav.yml +++ b/docs/versioned/.nav.yml @@ -266,8 +266,8 @@ nav: - Working with ConfigMaps: admin/editing-configmaps.md - Configure high-availability components: serving/config-ha.md - Exclude namespaces from the Knative webhook: serving/webhook-customizations.md + - Configure Knative networking: serving/config-network-adapters.md - Networking Options: - - Configure Knative networking: serving/config-network-adapters.md - Configure the ingress gateway: serving/setting-up-custom-ingress-gateway.md - Configure domain names: serving/using-a-custom-domain.md - Istio Authorization: serving/istio-authorization.md diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 53efbf35d9..8ab3a3baed 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -9,26 +9,12 @@ function: how-to This page provides installation and configuration guidance for Knative networking. You can configure Ingress controls, service-meshes, and gateways. -### Determine current state - -Use the following command to determine which ingress controllers are installed and their status. - -```bash -kubectl get pods -n knative-serving -``` - -The Knative team tests the following ingress controllers: - -- Kourier: `kourier-control-*`, and `kourier-gateway-*`. Kourier is included in the Knative Serving installation should appear in the results when your cluster is first created. -- Contour: `contour-*` -- Istio: `istio-webhook-*`. The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace. Knative adds the `istio-webhook-*` pod in the `knative-serving` namespace when Istio is the chosen networking layer. - -Each ingress controller manages only those ingress objects that are annotated with its key. Knative Serving uses a default value of the key based on the `network-config` ConfigMap. See [Changing the ingress controller](#change-the-controller) for important information about using this key. - ## Network layer options Review the following tabs to determine the optimal networking layer for your cluster. For most users, the Kourier ingress controller is sufficient. You can expand your capabilities with the Contour ingress, a full-feature service mesh with Istio, and the Kubernetes Gateway API. +The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. + === "Kourier" ```mermaid @@ -39,7 +25,7 @@ Review the following tabs to determine the optimal networking layer for your clu look: neo --- flowchart LR - K1["Knative
net-kourier"] -- creates --> K2["Ingress objects"] + K1["Knative
net-kourier"] -- creates --> K2["KIngress objects"] K2 --> K3["Class: kourier.ingress.networking.knative.dev"] ``` @@ -61,7 +47,7 @@ Review the following tabs to determine the optimal networking layer for your clu look: neo --- flowchart LR - C1["Knative
net-contour"] -- creates --> C2["Ingress objects"] + C1["Knative
net-contour"] -- creates --> C2["KIngress objects"] C2 --> C3["Class: contour.ingress.networking.knative.dev"] ``` @@ -149,15 +135,31 @@ Review the following tabs to determine the optimal networking layer for your clu --8<-- "netadapter-gatewayapi.md" +### Determine current state + +Use the following command to determine which ingress controllers are installed and their status. + +```bash +kubectl get pods -n knative-serving +``` + +The Knative team tests the following ingress controllers: + +- Kourier: `kourier-control-*`, and `kourier-gateway-*`. Kourier is included in the Knative Serving installation should appear in the results when your cluster is first created. +- Contour: `contour-*` +- Istio: `istio-webhook-*`. The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace. Knative adds the `istio-webhook-*` pod in the `knative-serving` namespace when Istio is the chosen networking layer. + +Each ingress controller manages only those ingress objects that are annotated with its key. Knative Serving uses a default value of the key based on the `network-config` ConfigMap. See [Changing the ingress controller](#change-the-controller) for important information about using this key. + ## Configure DNS --8<-- "dns.md" --8<-- "real-dns-yaml.md" --8<-- "no-dns.md" -## Changing the ingress controller +## Changing the controller -If you want to change the ingress controllers, install and configure the new controller as instructed in the [Network layer options](#network-layer-options). There is no requirement to remove ingress controllers that are not in use. +If you want to change the controller, install and configure the new controller as instructed in the [Network layer options](#network-layer-options). There is no requirement to remove ingress controllers that are not in use. You can determine the controller in use by examining the `config-network.yaml`: From 4de8810e12d0fd068ee7f594d0ea1650eb6ce41d Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 7 Dec 2025 22:19:58 -0800 Subject: [PATCH 069/146] Update config-network-adapters.md H3 to H2 - Determine current state --- docs/versioned/serving/config-network-adapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 8ab3a3baed..9faa3320c8 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -135,7 +135,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred --8<-- "netadapter-gatewayapi.md" -### Determine current state +## Determine current state Use the following command to determine which ingress controllers are installed and their status. From 6240ade9f386528e96c709d170b50898c429ea8f Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Mon, 8 Dec 2025 16:07:10 -0800 Subject: [PATCH 070/146] Update docs/versioned/serving/config-network-adapters.md Co-authored-by: Evan Anderson --- docs/versioned/serving/config-network-adapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 9faa3320c8..04183a815e 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -31,7 +31,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred The Kourier ingress controller, `net-kourier`, is installed with Knative Serving. Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an envoy proxy and a control plane. If Kourier is satisfactory, no further configurations are required. - Kourier is a fine choice for all platforms, but for these IBM platforms it's the only option and requires additional steps as documented in [Install Serving with YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). + Kourier is a fine choice for all platforms, but for IBM-Z and IBM-P platforms it's the only supported option and requires additional steps as documented in [Install Serving with YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). **Install and configure Kourier** From d10aa0328975245b6fcbf7b1593ab0faf9fa42a9 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Tue, 9 Dec 2025 22:31:51 -0800 Subject: [PATCH 071/146] Reviewer udpates Removed code snippets - will only be in yaml installation Nav change Diagram work --- docs/snippets/dns.md | 3 +- docs/versioned/.nav.yml | 2 +- .../serving/config-network-adapters.md | 73 ++++++++----------- 3 files changed, 34 insertions(+), 44 deletions(-) diff --git a/docs/snippets/dns.md b/docs/snippets/dns.md index 2d982a90c3..a6709e38a7 100644 --- a/docs/snippets/dns.md +++ b/docs/snippets/dns.md @@ -10,4 +10,5 @@ The following tabs show instructions for configuring DNS. Follow the procedure f kubectl apply -f {{artifact(repo="serving",file="serving-default-domain.yaml")}} ``` - This configuration works only if the cluster `LoadBalancer` Service exposes an IPv4 address or hostname. It does not work with IPv6 clusters or local setups such as minikube, unless [`minikube tunnel`](https://minikube.sigs.k8s.io/docs/commands/tunnel/) is running, and should consider using the "Real DNS" or "No DNS" tabs. + This configuration works only if the cluster `LoadBalancer` Service exposes an IPv4 address or hostname. It does not work with IPv6 clusters or local setups such as minikube unless the [`minikube tunnel`](https://minikube.sigs.k8s.io/docs/commands/tunnel/) is running. + diff --git a/docs/versioned/.nav.yml b/docs/versioned/.nav.yml index a5cdc1a1a9..2c2ad9a631 100644 --- a/docs/versioned/.nav.yml +++ b/docs/versioned/.nav.yml @@ -266,8 +266,8 @@ nav: - Working with ConfigMaps: admin/editing-configmaps.md - Configure high-availability components: serving/config-ha.md - Exclude namespaces from the Knative webhook: serving/webhook-customizations.md - - Configure Knative networking: serving/config-network-adapters.md - Networking Options: + - Configure Knative networking: serving/config-network-adapters.md - Configure the ingress gateway: serving/setting-up-custom-ingress-gateway.md - Configure domain names: serving/using-a-custom-domain.md - Istio Authorization: serving/istio-authorization.md diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 04183a815e..4fad3aaee1 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -25,17 +25,24 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred look: neo --- flowchart LR - K1["Knative
net-kourier"] -- creates --> K2["KIngress objects"] - K2 --> K3["Class: kourier.ingress.networking.knative.dev"] - ``` - The Kourier ingress controller, `net-kourier`, is installed with Knative Serving. Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an envoy proxy and a control plane. If Kourier is satisfactory, no further configurations are required. + route["Route object"] -- "read by" --> serving-core("Serving
controller") -- creates --> KIngress["Ingress object
networking.internal.knative.dev
(KIngress)"] + ``` - Kourier is a fine choice for all platforms, but for IBM-Z and IBM-P platforms it's the only supported option and requires additional steps as documented in [Install Serving with YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). + ```mermaid + --- + config: + theme: default + layout: elk + look: neo + --- + flowchart LR + KIngress["KIngress
Class:kourier.ingress.networking.knative.dev"] -- "read by" --> controller("net-kourier
controller") -- programs --> envoy("Envoy deployment
kourier-system namespace") + ``` - **Install and configure Kourier** + Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an envoy proxy and a control plane. If Kourier is satisfactory, no further configurations are required. - --8<-- "netadapter-kourier.md" + Kourier is a fine choice for all platforms, but for IBM-Z and IBM-P platforms it's the only supported option and requires additional steps as documented in [Install Serving with YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). === "Contour" @@ -53,10 +60,6 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred The Contour ingress controller, `net-contour`, bridges Knative's KIngress resources to Contour's HTTPProxy resources. A good choice for clusters that already run non-Knative apps, teams who want to use a single Ingress controller, and are already using Contour envoy but don't need a full-feature service mesh. - **Install and configure Contour** - - --8<-- "netadapter-contour.md" - === "Istio" ```mermaid @@ -72,10 +75,6 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred The Knative `net-istio` is a KIngress controller for Istio. It's a full-feature service mesh that also functions as a Knative ingress. Good for enterprises already running Istio or needing advanced service mesh features. - **Install and configure Istio** - - --8<-- "netadapter-istio.md" - === "Ingress Gateway" ```mermaid @@ -94,7 +93,6 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying `istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own. - **Install and configure Ingress Gateway** See [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). @@ -131,17 +129,13 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred The controller that Knative uses is determined by which Gateway API-compatible controller you install and configure in your cluster. - **Install and configure Gateway API** - - --8<-- "netadapter-gatewayapi.md" - ## Determine current state Use the following command to determine which ingress controllers are installed and their status. -```bash -kubectl get pods -n knative-serving -``` + ``` bash + kubectl get pods -n knative-serving + ``` The Knative team tests the following ingress controllers: @@ -151,11 +145,6 @@ The Knative team tests the following ingress controllers: Each ingress controller manages only those ingress objects that are annotated with its key. Knative Serving uses a default value of the key based on the `network-config` ConfigMap. See [Changing the ingress controller](#change-the-controller) for important information about using this key. -## Configure DNS - ---8<-- "dns.md" ---8<-- "real-dns-yaml.md" ---8<-- "no-dns.md" ## Changing the controller @@ -163,27 +152,27 @@ If you want to change the controller, install and configure the new controller a You can determine the controller in use by examining the `config-network.yaml`: -```bash -kubectl get cm config-network -n knative-serving -o yaml -``` + ```bash + kubectl get cm config-network -n knative-serving -o yaml + ``` Look for the `ingress-class` key. It could also be the `ingress.class` key with a dot. The dash usage is more current and supersedes any key with the dot. In the following example, the `ingress.class` key was initially set for the Kourier controller, but is now set to Contour because the ingress key with a dash takes precedence. -```yml -ingress-class: contour.ingress.networking.knative.dev -ingress.class: kourier.ingress.networking.knative.dev -``` + ```yml + ingress-class: contour.ingress.networking.knative.dev + ingress.class: kourier.ingress.networking.knative.dev + ``` If you want to switch back to a previously installed controller, patch the `config-network` ConfigMap with the new controller. In the following example Kourier is used because of the dash in `ingress-class`. -```bash -kubectl patch cm config-network -n knative-serving \ - --type merge -p '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}' + ```bash + kubectl patch cm config-network -n knative-serving \ + --type merge -p '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}' ``` You can remove an unused key with a dot with the following command: -```bash -ubectl patch configmap config-network -n knative-serving \ - --type=json -p='[{"op": "remove", "path": "/data/ingress.class"}]' -``` + ```bash + kubectl patch configmap config-network -n knative-serving \ + --type=json -p='[{"op": "remove", "path": "/data/ingress.class"}]' + ``` From 845b2894b79cee7a3c1490beecccfafdae80a751 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Tue, 9 Dec 2025 22:42:36 -0800 Subject: [PATCH 072/146] Update config-network-adapters.md Minor edit to rebuild --- docs/versioned/serving/config-network-adapters.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 4fad3aaee1..1ea8b8761c 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -145,7 +145,6 @@ The Knative team tests the following ingress controllers: Each ingress controller manages only those ingress objects that are annotated with its key. Knative Serving uses a default value of the key based on the `network-config` ConfigMap. See [Changing the ingress controller](#change-the-controller) for important information about using this key. - ## Changing the controller If you want to change the controller, install and configure the new controller as instructed in the [Network layer options](#network-layer-options). There is no requirement to remove ingress controllers that are not in use. @@ -168,7 +167,7 @@ If you want to switch back to a previously installed controller, patch the `conf ```bash kubectl patch cm config-network -n knative-serving \ --type merge -p '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}' -``` + ``` You can remove an unused key with a dot with the following command: From 190f6222c24043f1d2be3604d010785bf42ff4b5 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Tue, 9 Dec 2025 23:17:21 -0800 Subject: [PATCH 073/146] Update config-network-adapters.md Test edits to rebuild --- docs/versioned/serving/config-network-adapters.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 1ea8b8761c..18836a273d 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -17,6 +17,8 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred === "Kourier" + The following diagram depicts the flow of KIngress objects, as read by Knative serving. + ```mermaid --- config: @@ -29,6 +31,8 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred route["Route object"] -- "read by" --> serving-core("Serving
controller") -- creates --> KIngress["Ingress object
networking.internal.knative.dev
(KIngress)"] ``` + The following diagram depicts the flow of KIngress objects by Kourier. + ```mermaid --- config: From 176cadf8086d097507c3e25edaf28351a966a920 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Tue, 9 Dec 2025 23:21:00 -0800 Subject: [PATCH 074/146] Update config-network-adapters.md Build test --- docs/versioned/serving/config-network-adapters.md | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 18836a273d..aff46bc0e5 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -17,20 +17,6 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred === "Kourier" - The following diagram depicts the flow of KIngress objects, as read by Knative serving. - - ```mermaid - --- - config: - theme: default - layout: elk - look: neo - --- - flowchart LR - - route["Route object"] -- "read by" --> serving-core("Serving
controller") -- creates --> KIngress["Ingress object
networking.internal.knative.dev
(KIngress)"] - ``` - The following diagram depicts the flow of KIngress objects by Kourier. ```mermaid From e77ee57373adc3e0d849f9d268c74a4bc497ac97 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Tue, 9 Dec 2025 23:30:14 -0800 Subject: [PATCH 075/146] Update config-network-adapters.md Build issue with adjacent charts? --- docs/versioned/serving/config-network-adapters.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index aff46bc0e5..18836a273d 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -17,6 +17,20 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred === "Kourier" + The following diagram depicts the flow of KIngress objects, as read by Knative serving. + + ```mermaid + --- + config: + theme: default + layout: elk + look: neo + --- + flowchart LR + + route["Route object"] -- "read by" --> serving-core("Serving
controller") -- creates --> KIngress["Ingress object
networking.internal.knative.dev
(KIngress)"] + ``` + The following diagram depicts the flow of KIngress objects by Kourier. ```mermaid From 003de74e41f80e3051d2c0a59ac2a63015fb951b Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 10 Dec 2025 15:30:15 -0800 Subject: [PATCH 076/146] Update config-network-adapters.md chart test --- .../serving/config-network-adapters.md | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 18836a273d..dd5dda5587 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -22,26 +22,38 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred ```mermaid --- config: - theme: default layout: elk - look: neo + theme: default --- flowchart LR - - route["Route object"] -- "read by" --> serving-core("Serving
controller") -- creates --> KIngress["Ingress object
networking.internal.knative.dev
(KIngress)"] + subgraph flow[" "] + direction LR + kingress1["Ingress object
networking.internal.knative.dev
(KIngress)"] + serving["Serving
controller"] + route["Route object"] + end + route -- read by --> serving + serving -- creates --> kingress1 + class kingress1 highlight + classDef highlight fill:#fff3cd,stroke:#f39c12,stroke-width:3px + style flow background:transparent, border:none ``` - The following diagram depicts the flow of KIngress objects by Kourier. - ```mermaid --- config: - theme: default layout: elk - look: neo + theme: default --- flowchart LR - KIngress["KIngress
Class:kourier.ingress.networking.knative.dev"] -- "read by" --> controller("net-kourier
controller") -- programs --> envoy("Envoy deployment
kourier-system namespace") + subgraph bottom[" "] + direction LR + envoy["Envoy deployment
kourier-system namespace"] + kourier["net-kourier
controller"] + kingress2["KIngress
Class: kourier.ingress.networking.knative.dev"] + end + kingress2 -- read by --> kourier + kourier -- programs --> envoy ``` Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an envoy proxy and a control plane. If Kourier is satisfactory, no further configurations are required. From aa645a38a7151ae125471a3faadc30cc4603d394 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 10 Dec 2025 15:36:10 -0800 Subject: [PATCH 077/146] Update config-network-adapters.md Test --- docs/versioned/serving/config-network-adapters.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index dd5dda5587..122fc1c193 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -39,6 +39,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred style flow background:transparent, border:none ``` + ```mermaid --- config: From 0f1e2c67c6b80c5a36d9f03c68ce324491fe689f Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 10 Dec 2025 18:18:06 -0800 Subject: [PATCH 078/146] Update config-network-adapters.md Mermaid chart formatting --- docs/versioned/serving/config-network-adapters.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 122fc1c193..1fd4d2483a 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -34,12 +34,12 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred end route -- read by --> serving serving -- creates --> kingress1 - class kingress1 highlight - classDef highlight fill:#fff3cd,stroke:#f39c12,stroke-width:3px - style flow background:transparent, border:none + style kingress1 fill:#BBDEFB,stroke-width:1px,stroke-dasharray: 0 + style serving fill:#FFE0B2 + style flow background:transparent, border:none,fill:transparent,stroke:#000000 ``` - + ```mermaid --- config: @@ -55,6 +55,9 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred end kingress2 -- read by --> kourier kourier -- programs --> envoy + style envoy fill:#BBDEFB + style kourier fill:#FFE0B2 + style bottom fill:transparent ``` Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an envoy proxy and a control plane. If Kourier is satisfactory, no further configurations are required. From 7806497aba79a1486fdbf847a14777eb3d5ccda6 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 10 Dec 2025 18:23:58 -0800 Subject: [PATCH 079/146] Update config-network-adapters.md Chart fix --- docs/versioned/serving/config-network-adapters.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 1fd4d2483a..3f0495dbd6 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -47,7 +47,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred theme: default --- flowchart LR - subgraph bottom[" "] + subgraph bottom[" "] direction LR envoy["Envoy deployment
kourier-system namespace"] kourier["net-kourier
controller"] @@ -55,6 +55,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred end kingress2 -- read by --> kourier kourier -- programs --> envoy + style envoy fill:#BBDEFB style kourier fill:#FFE0B2 style bottom fill:transparent From fc76a54826c82fd74ac482025fbf3bdbab596fc2 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 10 Dec 2025 18:32:23 -0800 Subject: [PATCH 080/146] Update config-network-adapters.md Chart fix --- docs/versioned/serving/config-network-adapters.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 3f0495dbd6..a623e14646 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -39,7 +39,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred style flow background:transparent, border:none,fill:transparent,stroke:#000000 ``` - + ```mermaid --- config: @@ -47,7 +47,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred theme: default --- flowchart LR - subgraph bottom[" "] + subgraph bottom[" "] direction LR envoy["Envoy deployment
kourier-system namespace"] kourier["net-kourier
controller"] From 93dc28b5366829cc9d1b83ca5e68700ba9659c50 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 10 Dec 2025 20:26:47 -0800 Subject: [PATCH 081/146] Update config-network-adapters.md Chart formatting --- docs/versioned/serving/config-network-adapters.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index a623e14646..ccb08048ba 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -26,9 +26,9 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred theme: default --- flowchart LR - subgraph flow[" "] + subgraph top[" "] direction LR - kingress1["Ingress object
networking.internal.knative.dev
(KIngress)"] + kingress1["Ingress object (KIngress)
networking.internal.knative.dev"] serving["Serving
controller"] route["Route object"] end @@ -36,7 +36,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred serving -- creates --> kingress1 style kingress1 fill:#BBDEFB,stroke-width:1px,stroke-dasharray: 0 style serving fill:#FFE0B2 - style flow background:transparent, border:none,fill:transparent,stroke:#000000 + style top fill:transparent ``` @@ -51,7 +51,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred direction LR envoy["Envoy deployment
kourier-system namespace"] kourier["net-kourier
controller"] - kingress2["KIngress
Class: kourier.ingress.networking.knative.dev"] + kingress2["KIngress class:
kourier.ingress.networking.knative.dev"] end kingress2 -- read by --> kourier kourier -- programs --> envoy From 32eb3a4785541a197e518924628cc16338ef5899 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 10 Dec 2025 20:34:15 -0800 Subject: [PATCH 082/146] Update docs/snippets/netadapter-kourier.md Co-authored-by: David Simansky --- docs/snippets/netadapter-kourier.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/snippets/netadapter-kourier.md b/docs/snippets/netadapter-kourier.md index 6b3ff4108d..6a5afbfa6c 100644 --- a/docs/snippets/netadapter-kourier.md +++ b/docs/snippets/netadapter-kourier.md @@ -3,7 +3,7 @@ Use the following steps to install Kourier and set it as the ingress controller. 1. Install the Knative Kourier controller: ```bash - kubectl apply -f https://github.com/knative/net-kourier/releases/latest/download/kourier.yaml + kubectl apply -f {{ artifact(repo="net-kourier",file="kourier.yaml") }} ``` 1. Configure Knative Serving to use Kourier by default: From b9ee495e9d7d8018a533cc41cae8ab2b8ad1c811 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 10 Dec 2025 20:46:49 -0800 Subject: [PATCH 083/146] Update config-network-adapters.md chart work --- .../serving/config-network-adapters.md | 80 +++++++++++++++++-- 1 file changed, 74 insertions(+), 6 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index ccb08048ba..bf279bf81d 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -17,7 +17,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred === "Kourier" - The following diagram depicts the flow of KIngress objects, as read by Knative serving. + Knative Serving network layer ```mermaid --- @@ -39,6 +39,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred style top fill:transparent ``` + Kourier network layer ```mermaid --- @@ -67,31 +68,98 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred === "Contour" + Knative Serving network layer + ```mermaid --- config: + layout: elk theme: default + --- + flowchart LR + subgraph top[" "] + direction LR + kingress1["Ingress object (KIngress)
networking.internal.knative.dev"] + serving["Serving
controller"] + route["Route object"] + end + route -- read by --> serving + serving -- creates --> kingress1 + style kingress1 fill:#BBDEFB,stroke-width:1px,stroke-dasharray: 0 + style serving fill:#FFE0B2 + style top fill:transparent + ``` + + Contour network layer + + ```mermaid + --- + config: layout: elk - look: neo + theme: default --- flowchart LR - C1["Knative
net-contour"] -- creates --> C2["KIngress objects"] - C2 --> C3["Class: contour.ingress.networking.knative.dev"] + subgraph bottom[" "] + direction LR + envoy["Envoy deployment
contour-system namespace"] + kourier["net-contour
controller"] + kingress2["KIngress class:
contour.ingress.networking.knative.dev"] + end + kingress2 -- read by --> kourier + kourier -- programs --> envoy + + style envoy fill:#BBDEFB + style kourier fill:#FFE0B2 + style bottom fill:transparent ``` The Contour ingress controller, `net-contour`, bridges Knative's KIngress resources to Contour's HTTPProxy resources. A good choice for clusters that already run non-Knative apps, teams who want to use a single Ingress controller, and are already using Contour envoy but don't need a full-feature service mesh. === "Istio" + Knative Serving network layer + ```mermaid --- config: + layout: elk theme: default + --- + flowchart LR + subgraph top[" "] + direction LR + kingress1["Ingress object (KIngress)
networking.internal.knative.dev"] + serving["Serving
controller"] + route["Route object"] + end + route -- read by --> serving + serving -- creates --> kingress1 + style kingress1 fill:#BBDEFB,stroke-width:1px,stroke-dasharray: 0 + style serving fill:#FFE0B2 + style top fill:transparent + ``` + + Istio network layer + + ```mermaid + --- + config: layout: elk + theme: default --- flowchart LR - I1["Knative net-istio"] -- creates --> I2["Service + Gateway"] - I2 --> I3["Class: istio.ingress.networking.knative.dev
No native Ingress objects"] + subgraph bottom[" "] + direction LR + envoy["Envoy deployment
istio-system namespace"] + kourier["net-istio
controller"] + kingress2["KIngress class:
istio.ingress.networking.knative.dev"] + end + kingress2 -- read by --> kourier + kourier -- programs --> envoy + + style envoy fill:#BBDEFB + style kourier fill:#FFE0B2 + style bottom fill:transparent ``` The Knative `net-istio` is a KIngress controller for Istio. It's a full-feature service mesh that also functions as a Knative ingress. Good for enterprises already running Istio or needing advanced service mesh features. From 99a81942993531945bbd482fde750bef9279b1e1 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 10 Dec 2025 22:24:00 -0800 Subject: [PATCH 084/146] Update config-network-adapters.md chart work --- .../serving/config-network-adapters.md | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index bf279bf81d..c07fe59cb5 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -17,7 +17,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred === "Kourier" - Knative Serving network layer + Knative Serving network layer architecture: ```mermaid --- @@ -39,7 +39,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred style top fill:transparent ``` - Kourier network layer + Kourier network layer: ```mermaid --- @@ -62,13 +62,13 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred style bottom fill:transparent ``` - Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an envoy proxy and a control plane. If Kourier is satisfactory, no further configurations are required. + Kourier is a lightweight implementation of the KIngress resource for clusters which don't need other ingress features. The Knative [Quickstart](../getting-started/README.md) installs Kourier for the network layer. Kourier is a fine choice for all platforms, but for IBM-Z and IBM-P platforms it's the only supported option and requires additional steps as documented in [Install Serving with YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). === "Contour" - Knative Serving network layer + Knative Serving network layer architecture: ```mermaid --- @@ -90,7 +90,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred style top fill:transparent ``` - Contour network layer + Contour network layer: ```mermaid --- @@ -101,15 +101,18 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred flowchart LR subgraph bottom[" "] direction LR - envoy["Envoy deployment
contour-system namespace"] - kourier["net-contour
controller"] - kingress2["KIngress class:
contour.ingress.networking.knative.dev"] + C1["KIngress objects"] + C2("Knative
net-contour") + C3["HTTPProxy
projectcontour.io"] + C4("Contour") end - kingress2 -- read by --> kourier - kourier -- programs --> envoy + C1 -- "read by" --> C2 + C2 -- "creates" --> C3 + C3 -- "read by" --> C4 style envoy fill:#BBDEFB - style kourier fill:#FFE0B2 + style C2 fill:#FFE0B2 + style C3 fill:#FFE0B2 style bottom fill:transparent ``` @@ -117,7 +120,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred === "Istio" - Knative Serving network layer + Knative Serving network layer architecture: ```mermaid --- @@ -139,7 +142,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred style top fill:transparent ``` - Istio network layer + Istio network layer: ```mermaid --- From 94f611af818d4fbb28a42871ecc73bf4b35424be Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 10 Dec 2025 22:58:43 -0800 Subject: [PATCH 085/146] Chart work and misc fixes --- docs/snippets/netadapter-gatewayapi.md | 4 +- docs/snippets/netadapter-istio.md | 2 +- .../serving/config-network-adapters.md | 51 +++++++------------ 3 files changed, 20 insertions(+), 37 deletions(-) diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index 2d2f117bbe..4e5f6fd031 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -1,6 +1,6 @@ -Use the following steps to install and configure the Knative Gateway API. +Use the following steps to install and configure the Knative Gateway API adapter. Note that you already need to have a [Gateway API implementation](https://gateway-api.sigs.k8s.io/implementations/) installed in your cluster. The Knative team currently tests the Istio, Contour, and Envoy-Gateway implementations of Gateway API. -1. Install the Knative Gateway API channel: +1. Install the Knative Gateway API: ```bash kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateawy-api.yaml") }} diff --git a/docs/snippets/netadapter-istio.md b/docs/snippets/netadapter-istio.md index 37d7236b50..b11ca4e5a1 100644 --- a/docs/snippets/netadapter-istio.md +++ b/docs/snippets/netadapter-istio.md @@ -13,7 +13,7 @@ Use the following steps to install Istio and set it as the ingress conroller. kubectl apply -f {{ artifact(repo="net-istio",file="net-istio.yaml") }} ``` -1. Set the `config-network` ConfigMap to use Istio: +1. Configure the `config-network` ConfigMap to use Istio: ```bash kubectl patch configmap/config-network \ diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index c07fe59cb5..5229ac19d7 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -99,24 +99,24 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred theme: default --- flowchart LR - subgraph bottom[" "] - direction LR - C1["KIngress objects"] - C2("Knative
net-contour") - C3["HTTPProxy
projectcontour.io"] - C4("Contour") - end - C1 -- "read by" --> C2 - C2 -- "creates" --> C3 - C3 -- "read by" --> C4 - - style envoy fill:#BBDEFB - style C2 fill:#FFE0B2 - style C3 fill:#FFE0B2 - style bottom fill:transparent + subgraph bottom[" "] + direction LR + C1["KIngress objects"] + C2("Knative
net-contour") + C3["HTTPProxy
projectcontour.io"] + C4("Contour") + end + C1 -- "read by" --> C2 + C2 -- "creates" --> C3 + C3 -- "read by" --> C4 + + style C2 fill:#FFE0B2 + style C3 fill:#BBDEFB + style C4 fill:#BBDEFB + style bottom fill:transparent ``` - The Contour ingress controller, `net-contour`, bridges Knative's KIngress resources to Contour's HTTPProxy resources. A good choice for clusters that already run non-Knative apps, teams who want to use a single Ingress controller, and are already using Contour envoy but don't need a full-feature service mesh. + The Contour ingress controller, `net-contour`, bridges Knative's KIngress resources to Contour's HTTPProxy resources. A good choice for clusters that already run non-Knative apps, teams who want to use a single Ingress controller, and are already using Contour envoy or don't need a full-feature service mesh. === "Istio" @@ -167,25 +167,8 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred The Knative `net-istio` is a KIngress controller for Istio. It's a full-feature service mesh that also functions as a Knative ingress. Good for enterprises already running Istio or needing advanced service mesh features. -=== "Ingress Gateway" - - ```mermaid - --- - config: - layout: elk - theme: default - look: neo - --- - flowchart LR - Client["External Client"] --> CGW["Custom Ingress Gateway"] - CGW --> KIGW["Knative Ingress Gateway"] & Client - KIGW --> Revision["Knative Revision"] & CGW - Revision --> KIGW - ``` - Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying `istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own. - See [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). === "Gateway API" @@ -217,7 +200,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred The Knative `net-gateway-api` is a KIngress implementation and testing for Knative integration with the [Kubernetes Gateway API](https://gateway-api.sigs.k8s.io/). Good for teams adopting the Gateway API to unify ingress across Kubernetes. - The Kubernetes Gateway API requires a controller or service mesh. Istio and Contour implementations are tested though other Gateway API implementations should work. Currently, there is no native Gateway API support for Kourier. For more information see [Tested Gateway API version and Ingress](https://github.com/knative-extensions/net-gateway-api/blob/main/docs/test-version.md). + The Kubernetes Gateway API requires a controller or service mesh. Istio and Contour implementations are tested. For more information see [Tested Gateway API version and Ingress](https://github.com/knative-extensions/net-gateway-api/blob/main/docs/test-version.md). The controller that Knative uses is determined by which Gateway API-compatible controller you install and configure in your cluster. From 73f8507b00d777d8669abaaf6bb2eea4465a633a Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Fri, 19 Dec 2025 21:02:13 -0800 Subject: [PATCH 086/146] Misc updates Formatting and installation snippets --- docs/snippets/netadapter-contour.md | 12 +++++++++++- docs/snippets/netadapter-kourier.md | 4 ++++ docs/versioned/serving/config-network-adapters.md | 11 +++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/docs/snippets/netadapter-contour.md b/docs/snippets/netadapter-contour.md index 069e9f382f..5fcd4094bb 100644 --- a/docs/snippets/netadapter-contour.md +++ b/docs/snippets/netadapter-contour.md @@ -1,11 +1,21 @@ Use the following steps to install and enable Contour and set it as the ingress conroller. -1. Install the Knative Contour controller: +1. Install the Knative Contour configuration: ```bash kubectl apply -f {{ artifact(org="knative-extensions", repo="net-contour", file="contour.yaml" }} ``` + + +1. Install the Knative Contour integration controller: + + ```bash + kubectl apply -f https://github.com/knative-extensions/net-contour/releases/download/knative-v1.20.0/net-contour.yaml + ``` + 1. Configure Knative Serving to use Contour: ```bash diff --git a/docs/snippets/netadapter-kourier.md b/docs/snippets/netadapter-kourier.md index 6a5afbfa6c..de0c1f6a3f 100644 --- a/docs/snippets/netadapter-kourier.md +++ b/docs/snippets/netadapter-kourier.md @@ -6,6 +6,10 @@ Use the following steps to install Kourier and set it as the ingress controller. kubectl apply -f {{ artifact(repo="net-kourier",file="kourier.yaml") }} ``` + + 1. Configure Knative Serving to use Kourier by default: ```bash diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 5229ac19d7..36509b3d29 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -66,6 +66,9 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred Kourier is a fine choice for all platforms, but for IBM-Z and IBM-P platforms it's the only supported option and requires additional steps as documented in [Install Serving with YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). + **Configuration options** + + === "Contour" Knative Serving network layer architecture: @@ -118,6 +121,9 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred The Contour ingress controller, `net-contour`, bridges Knative's KIngress resources to Contour's HTTPProxy resources. A good choice for clusters that already run non-Knative apps, teams who want to use a single Ingress controller, and are already using Contour envoy or don't need a full-feature service mesh. + **Configuration options** + + === "Istio" Knative Serving network layer architecture: @@ -171,6 +177,8 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred See [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). + **Configuration options** + === "Gateway API" ```mermaid @@ -204,6 +212,9 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred The controller that Knative uses is determined by which Gateway API-compatible controller you install and configure in your cluster. + **Configuration options** + + ## Determine current state Use the following command to determine which ingress controllers are installed and their status. From 47883adc55f5a3869c75d3f2050fe219b6b2990e Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Fri, 19 Dec 2025 21:27:32 -0800 Subject: [PATCH 087/146] Update config-network-adapters.md indentation test --- .../serving/config-network-adapters.md | 39 +++++++++---------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 36509b3d29..25266201cd 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -68,7 +68,6 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred **Configuration options** - === "Contour" Knative Serving network layer architecture: @@ -123,7 +122,6 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred **Configuration options** - === "Istio" Knative Serving network layer architecture: @@ -214,14 +212,13 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred **Configuration options** - ## Determine current state Use the following command to determine which ingress controllers are installed and their status. - ``` bash - kubectl get pods -n knative-serving - ``` +``` bash +kubectl get pods -n knative-serving +``` The Knative team tests the following ingress controllers: @@ -237,27 +234,27 @@ If you want to change the controller, install and configure the new controller a You can determine the controller in use by examining the `config-network.yaml`: - ```bash - kubectl get cm config-network -n knative-serving -o yaml - ``` +```bash +kubectl get cm config-network -n knative-serving -o yaml +``` Look for the `ingress-class` key. It could also be the `ingress.class` key with a dot. The dash usage is more current and supersedes any key with the dot. In the following example, the `ingress.class` key was initially set for the Kourier controller, but is now set to Contour because the ingress key with a dash takes precedence. - ```yml - ingress-class: contour.ingress.networking.knative.dev - ingress.class: kourier.ingress.networking.knative.dev - ``` +```yml +ingress-class: contour.ingress.networking.knative.dev +ingress.class: kourier.ingress.networking.knative.dev +``` If you want to switch back to a previously installed controller, patch the `config-network` ConfigMap with the new controller. In the following example Kourier is used because of the dash in `ingress-class`. - ```bash - kubectl patch cm config-network -n knative-serving \ - --type merge -p '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}' - ``` +```bash +kubectl patch cm config-network -n knative-serving \ + --type merge -p '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}' +``` You can remove an unused key with a dot with the following command: - ```bash - kubectl patch configmap config-network -n knative-serving \ - --type=json -p='[{"op": "remove", "path": "/data/ingress.class"}]' - ``` +```bash +kubectl patch configmap config-network -n knative-serving \ +--type=json -p='[{"op": "remove", "path": "/data/ingress.class"}]' +``` From f5a1367f9b36ea3feb6333789985bc8856193502 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 28 Dec 2025 21:43:18 -0800 Subject: [PATCH 088/146] Gateway additions and misc various updates --- docs/snippets/netadapter-gatewayapi.md | 24 +++++- docs/snippets/netadapter-istio.md | 9 +++ .../serving/config-network-adapters.md | 78 ++++++++++++++++--- 3 files changed, 99 insertions(+), 12 deletions(-) diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index 4e5f6fd031..5b9a161233 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -1,9 +1,29 @@ -Use the following steps to install and configure the Knative Gateway API adapter. Note that you already need to have a [Gateway API implementation](https://gateway-api.sigs.k8s.io/implementations/) installed in your cluster. The Knative team currently tests the Istio, Contour, and Envoy-Gateway implementations of Gateway API. +Use the following steps to install and configure the Knative Gateway API adapter. Note that you need to have a [Gateway API implementation](https://gateway-api.sigs.k8s.io/implementations/) installed in your cluster. The Knative team currently tests the Istio, Contour, and Envoy-Gateway implementations of Gateway API. + +1. Clone the Gateway API repo: + + ```bash + git clone https://github.com/knative-extensions/net-gateway-api.git + cd net-gateway-api + ``` + +1. Set environment variables: + + ```bash + export KO_DOCKER_REPO=kind.local + export KIND_CLUSTER_NAME=knative # (keep this if your cluster is named "knative") + ``` + +1. Deploy Gateway API resources: + + ```bash + ko apply -f config/ + ``` 1. Install the Knative Gateway API: ```bash - kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateawy-api.yaml") }} + kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateway-api.yaml") }} ``` 1. Configure Knative Serving to use Knative Gateway API channel: diff --git a/docs/snippets/netadapter-istio.md b/docs/snippets/netadapter-istio.md index b11ca4e5a1..c66ac66cf8 100644 --- a/docs/snippets/netadapter-istio.md +++ b/docs/snippets/netadapter-istio.md @@ -7,12 +7,21 @@ Use the following steps to install Istio and set it as the ingress conroller. kubectl apply -f {{ artifact(repo="net-istio",org="knative-extensions",file="istio.yaml") }} ``` + + 1. Install the Knative Istio controller: ```bash kubectl apply -f {{ artifact(repo="net-istio",file="net-istio.yaml") }} ``` + + 1. Configure the `config-network` ConfigMap to use Istio: ```bash diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 25266201cd..0b7dac7b1a 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -15,6 +15,14 @@ Review the following tabs to determine the optimal networking layer for your clu The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. +### Common ingress configurations + +All three ingress network layers, Contour, Istio, and Kourier, have the following common capabilities: + +- TLS and certificate management: Configurable secrets for encrypted traffic. +- Timeout policies: Controls for idle, and response stream timeouts. +- Traffic visibility: Mechanisms to expose services externally or cluster-locally. + === "Kourier" Knative Serving network layer architecture: @@ -66,7 +74,12 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred Kourier is a fine choice for all platforms, but for IBM-Z and IBM-P platforms it's the only supported option and requires additional steps as documented in [Install Serving with YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). - **Configuration options** + In addition to the [common configurations](#common-configurations), Kourier provides the following configuration options: + + - Access logging. + - Deep Envoy tuning including proxy-protocol, cipher suites, trusted hops, and remote address. + - External authorization, `extauthz`. + - Experimental features: CryptoMB, internal TLS. === "Contour" @@ -120,9 +133,12 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred The Contour ingress controller, `net-contour`, bridges Knative's KIngress resources to Contour's HTTPProxy resources. A good choice for clusters that already run non-Knative apps, teams who want to use a single Ingress controller, and are already using Contour envoy or don't need a full-feature service mesh. - **Configuration options** + In addition to the [common configurations](#common-configurations), Contour provides the following configuration options: + + - CORS policy configuration. + - Direct visibility classes for external and internal traffic. -=== "Istio" + === "Istio" Knative Serving network layer architecture: @@ -175,7 +191,11 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred See [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). - **Configuration options** + In addition to the [common configurations](#common-configurations), Istio provides the following configuration options: + + - Advanced gateway selection with label selectors for fine-grained routing. + - Support for mesh-aware and cluster-local access. + === "Gateway API" @@ -204,15 +224,51 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred style underlying fill:#fff3e0,stroke:#ef6c00 ``` - The Knative `net-gateway-api` is a KIngress implementation and testing for Knative integration with the [Kubernetes Gateway API](https://gateway-api.sigs.k8s.io/). Good for teams adopting the Gateway API to unify ingress across Kubernetes. + The Knative `net-gateway-api` is a KIngress implementation for Knative integration with the [Kubernetes Gateway API](https://gateway-api.sigs.k8s.io/). A good choice for teams adopting the Gateway API to unify ingress across Kubernetes. The Kubernetes Gateway API requires a controller or service mesh. Istio and Contour implementations are tested. For more information see [Tested Gateway API version and Ingress](https://github.com/knative-extensions/net-gateway-api/blob/main/docs/test-version.md). - The controller that Knative uses is determined by which Gateway API-compatible controller you install and configure in your cluster. + Knative assumes two gateways in the cluster: - **Configuration options** + - Externally exposed - Defines the Gateway to be used for external traffic. + - Internally-only exposed - Defines the Gateway to be used for cluster local traffic. + + When gateways are installed and configures, the `config-gateway` ConfigMap is updated to track these two gateways. These values can be set using the following environment variables: -## Determine current state + - class: `$GATEWAY_CLASS_NAME` + - gateway: `$NAMESPACE/$GATEWAY_NAME` + - service: `$NAMESPACE/$SERVICE_NAME` + + The variable `$SERVICE_NAME` is the Kubernetes Service name that points to the pods in the Gateway implementation. + + Use the following command to determine the current configuration: + + ```bash + kubectl describe configmaps config-gateway -n knative-serving + ``` + + The following result shows an example of an Istio gateway implementation: + + ```bash + # external-gateways defines the Gateway to be used for external traffic + external-gateways: | + - class: istio + gateway: istio-system/knative-gateway + service: istio-system/istio-ingressgateway + supported-features: + - HTTPRouteRequestTimeout + + # local-gateways defines the Gateway to be used for cluster local traffic + local-gateways: | + - class: istio + gateway: istio-system/knative-local-gateway + service: istio-system/knative-local-gateway + supported-features: + - HTTPRouteRequestTimeout + ``` + + +## Determine current ingress Use the following command to determine which ingress controllers are installed and their status. @@ -230,12 +286,14 @@ Each ingress controller manages only those ingress objects that are annotated wi ## Changing the controller -If you want to change the controller, install and configure the new controller as instructed in the [Network layer options](#network-layer-options). There is no requirement to remove ingress controllers that are not in use. +If you want to change the controller, install and configure the new controller as instructed in the [Network layer options](#network-layer-options). + +Be aware that changing the Ingress class of an existing Route can result in undefined behavior. You can determine the controller in use by examining the `config-network.yaml`: ```bash -kubectl get cm config-network -n knative-serving -o yaml +kubectl describe configmaps config-network -n knative-serving ``` Look for the `ingress-class` key. It could also be the `ingress.class` key with a dot. The dash usage is more current and supersedes any key with the dot. In the following example, the `ingress.class` key was initially set for the Kourier controller, but is now set to Contour because the ingress key with a dash takes precedence. From 9ec1cfe8ef4146ae31c5c603b04952f871d3584d Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 28 Dec 2025 22:00:51 -0800 Subject: [PATCH 089/146] Update config-network-adapters.md Minor edit to rebuild --- docs/versioned/serving/config-network-adapters.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 0b7dac7b1a..dc60d72113 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -23,6 +23,8 @@ All three ingress network layers, Contour, Istio, and Kourier, have the followin - Timeout policies: Controls for idle, and response stream timeouts. - Traffic visibility: Mechanisms to expose services externally or cluster-locally. +Review the tabs to learn about their unique configurations. + === "Kourier" Knative Serving network layer architecture: From d1fedb132354e7e016fd0667107ba73a340880e4 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Mon, 29 Dec 2025 09:50:55 -0800 Subject: [PATCH 090/146] Update config-network-adapters.md Minor edits to rebuild --- docs/versioned/serving/config-network-adapters.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index dc60d72113..5d96b0b125 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -7,7 +7,9 @@ function: how-to # Configure Knative networking -This page provides installation and configuration guidance for Knative networking. You can configure Ingress controls, service-meshes, and gateways. +This page provides configuration guidance for Knative networking. You can configure Ingress controls, service-meshes, and gateways. + +For installation instructions, see [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md) ## Network layer options From 10035add69ca141f8644d2c90e864ceb08307819 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Mon, 29 Dec 2025 10:05:29 -0800 Subject: [PATCH 091/146] Update config-network-adapters.md tab fixes and minor edits --- docs/versioned/serving/config-network-adapters.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 5d96b0b125..63f56da13b 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -11,12 +11,6 @@ This page provides configuration guidance for Knative networking. You can config For installation instructions, see [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md) -## Network layer options - -Review the following tabs to determine the optimal networking layer for your cluster. For most users, the Kourier ingress controller is sufficient. You can expand your capabilities with the Contour ingress, a full-feature service mesh with Istio, and the Kubernetes Gateway API. - -The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. - ### Common ingress configurations All three ingress network layers, Contour, Istio, and Kourier, have the following common capabilities: @@ -25,7 +19,11 @@ All three ingress network layers, Contour, Istio, and Kourier, have the followin - Timeout policies: Controls for idle, and response stream timeouts. - Traffic visibility: Mechanisms to expose services externally or cluster-locally. -Review the tabs to learn about their unique configurations. +## Network layer options + +Review the following tabs to determine the optimal networking layer for your cluster and their unique configurations. For most users, the Kourier ingress controller is sufficient. You can expand your capabilities with the Contour ingress, a full-feature service mesh with Istio, and the Kubernetes Gateway API. + +The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. === "Kourier" @@ -142,7 +140,7 @@ Review the tabs to learn about their unique configurations. - CORS policy configuration. - Direct visibility classes for external and internal traffic. - === "Istio" +=== "Istio" Knative Serving network layer architecture: @@ -200,7 +198,6 @@ Review the tabs to learn about their unique configurations. - Advanced gateway selection with label selectors for fine-grained routing. - Support for mesh-aware and cluster-local access. - === "Gateway API" ```mermaid From 19480794c4939d183aecbe13844a3ba143efc54a Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Mon, 29 Dec 2025 10:23:34 -0800 Subject: [PATCH 092/146] Update config-network-adapters.md Minor edit to rebuild --- docs/versioned/serving/config-network-adapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 63f56da13b..04b9e8dce0 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -9,7 +9,7 @@ function: how-to This page provides configuration guidance for Knative networking. You can configure Ingress controls, service-meshes, and gateways. -For installation instructions, see [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md) +For installation instructions, see [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md). ### Common ingress configurations From 48664a323fe5102b7fcf5b48b8e614e86bff7457 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Mon, 29 Dec 2025 21:55:26 -0800 Subject: [PATCH 093/146] Update config-network-adapters.md Restructuring refinements --- .../serving/config-network-adapters.md | 115 +++++++++--------- 1 file changed, 55 insertions(+), 60 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 04b9e8dce0..96457f3364 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -11,18 +11,16 @@ This page provides configuration guidance for Knative networking. You can config For installation instructions, see [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md). -### Common ingress configurations +## Network layer options + +Review the tabbed content in this section to determine the optimal networking layer for your cluster. For most users, the Kourier ingress controller is sufficient. You can expand your capabilities with the Contour ingress, a full-feature service mesh with Istio, and the Kubernetes Gateway API. -All three ingress network layers, Contour, Istio, and Kourier, have the following common capabilities: +The Knative tested ingress controllers (Contour, Istio, and Kourier) have the following common configurations: -- TLS and certificate management: Configurable secrets for encrypted traffic. +- Certificate management: Configurable secrets for TLS encrypted traffic. - Timeout policies: Controls for idle, and response stream timeouts. - Traffic visibility: Mechanisms to expose services externally or cluster-locally. -## Network layer options - -Review the following tabs to determine the optimal networking layer for your cluster and their unique configurations. For most users, the Kourier ingress controller is sufficient. You can expand your capabilities with the Contour ingress, a full-feature service mesh with Istio, and the Kubernetes Gateway API. - The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. === "Kourier" @@ -72,11 +70,11 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred style bottom fill:transparent ``` - Kourier is a lightweight implementation of the KIngress resource for clusters which don't need other ingress features. The Knative [Quickstart](../getting-started/README.md) installs Kourier for the network layer. + Kourier is a lightweight implementation of the KIngress resource for clusters that don't need other ingress features and is optimal for learning and prototyping. The Knative [Quickstart](../getting-started/README.md) installs Kourier for the network layer. - Kourier is a fine choice for all platforms, but for IBM-Z and IBM-P platforms it's the only supported option and requires additional steps as documented in [Install Serving with YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). + Kourier is a fine choice for all platforms. It is the only supported option for IBM-Z and IBM-P platforms. These platforms require additional steps as documented in [Install Serving th YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). - In addition to the [common configurations](#common-configurations), Kourier provides the following configuration options: + Kourier provides the following additional configuration options: - Access logging. - Deep Envoy tuning including proxy-protocol, cipher suites, trusted hops, and remote address. @@ -133,9 +131,9 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred style bottom fill:transparent ``` - The Contour ingress controller, `net-contour`, bridges Knative's KIngress resources to Contour's HTTPProxy resources. A good choice for clusters that already run non-Knative apps, teams who want to use a single Ingress controller, and are already using Contour envoy or don't need a full-feature service mesh. + The Contour ingress controller, `net-contour`, bridges Knative's KIngress resources to Contour's HTTPProxy resources. A good choice for clusters that already run non-Knative apps, are already using Contour envoy, or don't need a full-feature service mesh. - In addition to the [common configurations](#common-configurations), Contour provides the following configuration options: + Contour provides the following additional configuration options: - CORS policy configuration. - Direct visibility classes for external and internal traffic. @@ -189,11 +187,9 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred The Knative `net-istio` is a KIngress controller for Istio. It's a full-feature service mesh that also functions as a Knative ingress. Good for enterprises already running Istio or needing advanced service mesh features. - Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying `istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own. - - See [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). + Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying `istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own. See [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). - In addition to the [common configurations](#common-configurations), Istio provides the following configuration options: + Istio provides the following additional configuration options: - Advanced gateway selection with label selectors for fine-grained routing. - Support for mesh-aware and cluster-local access. @@ -229,47 +225,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred The Kubernetes Gateway API requires a controller or service mesh. Istio and Contour implementations are tested. For more information see [Tested Gateway API version and Ingress](https://github.com/knative-extensions/net-gateway-api/blob/main/docs/test-version.md). - Knative assumes two gateways in the cluster: - - - Externally exposed - Defines the Gateway to be used for external traffic. - - Internally-only exposed - Defines the Gateway to be used for cluster local traffic. - - When gateways are installed and configures, the `config-gateway` ConfigMap is updated to track these two gateways. These values can be set using the following environment variables: - - - class: `$GATEWAY_CLASS_NAME` - - gateway: `$NAMESPACE/$GATEWAY_NAME` - - service: `$NAMESPACE/$SERVICE_NAME` - - The variable `$SERVICE_NAME` is the Kubernetes Service name that points to the pods in the Gateway implementation. - - Use the following command to determine the current configuration: - - ```bash - kubectl describe configmaps config-gateway -n knative-serving - ``` - - The following result shows an example of an Istio gateway implementation: - - ```bash - # external-gateways defines the Gateway to be used for external traffic - external-gateways: | - - class: istio - gateway: istio-system/knative-gateway - service: istio-system/istio-ingressgateway - supported-features: - - HTTPRouteRequestTimeout - - # local-gateways defines the Gateway to be used for cluster local traffic - local-gateways: | - - class: istio - gateway: istio-system/knative-local-gateway - service: istio-system/knative-local-gateway - supported-features: - - HTTPRouteRequestTimeout - ``` - - -## Determine current ingress +## Ingress configurations Use the following command to determine which ingress controllers are installed and their status. @@ -285,9 +241,7 @@ The Knative team tests the following ingress controllers: Each ingress controller manages only those ingress objects that are annotated with its key. Knative Serving uses a default value of the key based on the `network-config` ConfigMap. See [Changing the ingress controller](#change-the-controller) for important information about using this key. -## Changing the controller - -If you want to change the controller, install and configure the new controller as instructed in the [Network layer options](#network-layer-options). +If you want to change the controller, install [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md). Be aware that changing the Ingress class of an existing Route can result in undefined behavior. @@ -317,3 +271,44 @@ You can remove an unused key with a dot with the following command: kubectl patch configmap config-network -n knative-serving \ --type=json -p='[{"op": "remove", "path": "/data/ingress.class"}]' ``` +## Gateway configurations + +Knative assumes two gateways in the cluster: + +- Externally exposed - Defines the Gateway to be used for external traffic. +- Internally-only exposed - Defines the Gateway to be used for cluster local traffic. + +When gateways are installed and configures, the `config-gateway` ConfigMap is updated to track these two gateways. These values can be set using the following environment variables: + +- class: `$GATEWAY_CLASS_NAME` +- gateway: `$NAMESPACE/$GATEWAY_NAME` +- service: `$NAMESPACE/$SERVICE_NAME` + +The variable `$SERVICE_NAME` is the Kubernetes Service name that points to the pods in the Gateway implementation. + +Use the following command to determine the current configuration: + +```bash +kubectl describe configmaps config-gateway -n knative-serving +``` + +The following `config-gateway` keys shows an example of an Istio gateway implementation: + +```bash +# external-gateways defines the Gateway to be used for external traffic +external-gateways: | +- class: istio + gateway: istio-system/knative-gateway + service: istio-system/istio-ingressgateway + supported-features: + - HTTPRouteRequestTimeout + +# local-gateways defines the Gateway to be used for cluster local traffic +local-gateways: | + - class: istio + gateway: istio-system/knative-local-gateway + service: istio-system/knative-local-gateway + supported-features: + - HTTPRouteRequestTimeout +``` + From 031fec08560f9501bdb5906a5877cb028cb47ef1 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Mon, 29 Dec 2025 22:50:43 -0800 Subject: [PATCH 094/146] Update config-network-adapters.md Refinements --- .../serving/config-network-adapters.md | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 96457f3364..bcfa66c864 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -70,9 +70,9 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred style bottom fill:transparent ``` - Kourier is a lightweight implementation of the KIngress resource for clusters that don't need other ingress features and is optimal for learning and prototyping. The Knative [Quickstart](../getting-started/README.md) installs Kourier for the network layer. + Kourier is a lightweight implementation of the KIngress resource and is suitable for clusters that don't need other ingress features. Kourier is optimal for learning and prototyping, and the Knative [Quickstart](../getting-started/README.md) installs it for the network layer. - Kourier is a fine choice for all platforms. It is the only supported option for IBM-Z and IBM-P platforms. These platforms require additional steps as documented in [Install Serving th YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). + Kourier is is the only supported option for IBM-Z and IBM-P platforms. These platforms require additional steps as documented in [Install Serving th YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). Kourier provides the following additional configuration options: @@ -131,7 +131,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred style bottom fill:transparent ``` - The Contour ingress controller, `net-contour`, bridges Knative's KIngress resources to Contour's HTTPProxy resources. A good choice for clusters that already run non-Knative apps, are already using Contour envoy, or don't need a full-feature service mesh. + The Contour ingress controller, `net-contour`, bridges Knative's KIngress resources to Contour's HTTPProxy resources. A good choice for clusters that already run non-Knative apps, are already using a Contour envoy, or don't need a full-feature service mesh. Contour provides the following additional configuration options: @@ -185,7 +185,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred style bottom fill:transparent ``` - The Knative `net-istio` is a KIngress controller for Istio. It's a full-feature service mesh that also functions as a Knative ingress. Good for enterprises already running Istio or needing advanced service mesh features. + The Knative `net-istio` is a KIngress controller for Istio. It's a full-feature service mesh that also functions as a Knative ingress. Good for enterprises already running Istio or who need advanced service mesh features. Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying `istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own. See [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). @@ -239,11 +239,7 @@ The Knative team tests the following ingress controllers: - Contour: `contour-*` - Istio: `istio-webhook-*`. The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace. Knative adds the `istio-webhook-*` pod in the `knative-serving` namespace when Istio is the chosen networking layer. -Each ingress controller manages only those ingress objects that are annotated with its key. Knative Serving uses a default value of the key based on the `network-config` ConfigMap. See [Changing the ingress controller](#change-the-controller) for important information about using this key. - -If you want to change the controller, install [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md). - -Be aware that changing the Ingress class of an existing Route can result in undefined behavior. +Each ingress controller manages only those ingress objects that are annotated with its key. Knative Serving uses the controller based on the `network-config` ConfigMap. You can determine the controller in use by examining the `config-network.yaml`: @@ -258,7 +254,7 @@ ingress-class: contour.ingress.networking.knative.dev ingress.class: kourier.ingress.networking.knative.dev ``` -If you want to switch back to a previously installed controller, patch the `config-network` ConfigMap with the new controller. In the following example Kourier is used because of the dash in `ingress-class`. +If you want to switch to a controller that is already installed, patch the `config-network` ConfigMap with the new controller. In the following example Kourier is used because of the dash in `ingress-class`. ```bash kubectl patch cm config-network -n knative-serving \ @@ -271,14 +267,17 @@ You can remove an unused key with a dot with the following command: kubectl patch configmap config-network -n knative-serving \ --type=json -p='[{"op": "remove", "path": "/data/ingress.class"}]' ``` + +If you want to change the controller, install it by following [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md). Be aware that changing the Ingress class of an existing Route can result in undefined behavior. + ## Gateway configurations Knative assumes two gateways in the cluster: -- Externally exposed - Defines the Gateway to be used for external traffic. -- Internally-only exposed - Defines the Gateway to be used for cluster local traffic. +- Externally exposed - defines the gateway for external traffic. +- Internally-only exposed - defines the gateway for cluster local traffic. -When gateways are installed and configures, the `config-gateway` ConfigMap is updated to track these two gateways. These values can be set using the following environment variables: +When gateways are installed, the `config-gateway` ConfigMap is updated to track these two gateways. These values can be set using the following environment variables: - class: `$GATEWAY_CLASS_NAME` - gateway: `$NAMESPACE/$GATEWAY_NAME` From 2d0b90d4c2c2db1c4c1917f3f72346a05b2faac9 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Tue, 30 Dec 2025 17:35:47 -0800 Subject: [PATCH 095/146] Update config-network-adapters.md Grammer refinements --- .../serving/config-network-adapters.md | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index bcfa66c864..cfce225d09 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -23,6 +23,8 @@ The Knative tested ingress controllers (Contour, Istio, and Kourier) have the fo The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. +There are also third-party Knative networking options and Knative products available but are not tested or managed by the Knative community. For more information, see [Knative offerings](../install/knative-offerings.md). + === "Kourier" Knative Serving network layer architecture: @@ -70,9 +72,9 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred style bottom fill:transparent ``` - Kourier is a lightweight implementation of the KIngress resource and is suitable for clusters that don't need other ingress features. Kourier is optimal for learning and prototyping, and the Knative [Quickstart](../getting-started/README.md) installs it for the network layer. + Kourier is a lightweight implementation of the KIngress resource and is suitable for clusters that don't need other ingress features. Kourier is optimal for learning and prototyping, and is installed by the Knative [Quickstart](../getting-started/README.md). - Kourier is is the only supported option for IBM-Z and IBM-P platforms. These platforms require additional steps as documented in [Install Serving th YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). + Kourier is is the only supported option for IBM-Z and IBM-P platforms. These IBM platforms require additional steps as documented in [Install Serving th YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). Kourier provides the following additional configuration options: @@ -185,7 +187,7 @@ The Knative `networking.internal.knative.dev` Ingress type is generally referred style bottom fill:transparent ``` - The Knative `net-istio` is a KIngress controller for Istio. It's a full-feature service mesh that also functions as a Knative ingress. Good for enterprises already running Istio or who need advanced service mesh features. + The Knative `net-istio` is a KIngress controller for Istio. It's a full-feature service mesh that also functions as a Knative ingress. Well suited for enterprises already running Istio or who need advanced service mesh features. Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying `istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own. See [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). @@ -233,7 +235,7 @@ Use the following command to determine which ingress controllers are installed a kubectl get pods -n knative-serving ``` -The Knative team tests the following ingress controllers: +The ingress controllers have the following names: - Kourier: `kourier-control-*`, and `kourier-gateway-*`. Kourier is included in the Knative Serving installation should appear in the results when your cluster is first created. - Contour: `contour-*` @@ -254,7 +256,7 @@ ingress-class: contour.ingress.networking.knative.dev ingress.class: kourier.ingress.networking.knative.dev ``` -If you want to switch to a controller that is already installed, patch the `config-network` ConfigMap with the new controller. In the following example Kourier is used because of the dash in `ingress-class`. +If you want to switch to a controller that is already installed, patch the `config-network` ConfigMap with the new controller as shown in the following example using Kourier. ```bash kubectl patch cm config-network -n knative-serving \ @@ -268,16 +270,16 @@ kubectl patch configmap config-network -n knative-serving \ --type=json -p='[{"op": "remove", "path": "/data/ingress.class"}]' ``` -If you want to change the controller, install it by following [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md). Be aware that changing the Ingress class of an existing Route can result in undefined behavior. +If you want to install a new controller, see [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md). Be aware that changing the Ingress class of an existing Route may result in undefined behavior. ## Gateway configurations Knative assumes two gateways in the cluster: - Externally exposed - defines the gateway for external traffic. -- Internally-only exposed - defines the gateway for cluster local traffic. +- Internally-only exposed - defines the gateway for local traffic. -When gateways are installed, the `config-gateway` ConfigMap is updated to track these two gateways. These values can be set using the following environment variables: +When gateways are installed, the `config-gateway` ConfigMap is updated to track these two gateways set to the following environment variables: - class: `$GATEWAY_CLASS_NAME` - gateway: `$NAMESPACE/$GATEWAY_NAME` @@ -291,7 +293,7 @@ Use the following command to determine the current configuration: kubectl describe configmaps config-gateway -n knative-serving ``` -The following `config-gateway` keys shows an example of an Istio gateway implementation: +The following `config-gateway` example shows an Istio implementation: ```bash # external-gateways defines the Gateway to be used for external traffic From 065b020b02aedadf1fd88fed73387c9625b6f595 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 4 Jan 2026 15:30:18 -0800 Subject: [PATCH 096/146] Tab test with snippets --- docs/snippets/netadapter-kourier.md | 2 +- .../serving/install-serving-with-yaml.md | 35 ++----------------- 2 files changed, 3 insertions(+), 34 deletions(-) diff --git a/docs/snippets/netadapter-kourier.md b/docs/snippets/netadapter-kourier.md index de0c1f6a3f..d79675d292 100644 --- a/docs/snippets/netadapter-kourier.md +++ b/docs/snippets/netadapter-kourier.md @@ -3,7 +3,7 @@ Use the following steps to install Kourier and set it as the ingress controller. 1. Install the Knative Kourier controller: ```bash - kubectl apply -f {{ artifact(repo="net-kourier",file="kourier.yaml") }} + kubectl apply -f {{ artifact(repo="net-kourier",org="knative-extensions", file="kourier.yaml") }} ``` - - -=== "Kourier (Choose this if you are not sure)" - - The following commands install Kourier and enable its Knative integration. - - 1. Install the Knative Kourier controller by running the command: - ```bash - kubectl apply -f {{ artifact(repo="net-kourier",org="knative-extensions",file="kourier.yaml")}} - ``` - - 1. Configure Knative Serving to use Kourier by default by running the command: - ```bash - kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}' - ``` - - 1. Fetch the External IP address or CNAME by running the command: - - ```bash - kubectl --namespace kourier-system get service kourier - ``` - - !!! tip - Save this to use in the following [Configure DNS](#configure-dns) section. +=== "Kourier" + --8<-- "netadapter-kourier.md" === "Istio" From daab253aab81d18063a7c7f91c718bc4bb89a195 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 4 Jan 2026 20:17:46 -0800 Subject: [PATCH 097/146] Configured snippets Configured snippets to conform with install-serving-with-yaml --- docs/snippets/netadapter-contour.md | 4 +- docs/snippets/netadapter-istio.md | 2 +- .../serving/install-serving-with-yaml.md | 60 ++----------------- 3 files changed, 8 insertions(+), 58 deletions(-) diff --git a/docs/snippets/netadapter-contour.md b/docs/snippets/netadapter-contour.md index 5fcd4094bb..bdb28a16fb 100644 --- a/docs/snippets/netadapter-contour.md +++ b/docs/snippets/netadapter-contour.md @@ -3,7 +3,7 @@ Use the following steps to install and enable Contour and set it as the ingress 1. Install the Knative Contour configuration: ```bash - kubectl apply -f {{ artifact(org="knative-extensions", repo="net-contour", file="contour.yaml" }} + kubectl apply -f {{ artifact(repo="net-contour",org="knative-extensions",file="contour.yaml")}} ``` - - 1. Install the Knative Contour controller by running the command: - ```bash - kubectl apply -f {{ artifact(repo="net-contour",org="knative-extensions",file="net-contour.yaml")}} - ``` - - 1. Configure Knative Serving to use Contour by default by running the command: - ```bash - kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"contour.ingress.networking.knative.dev"}}' - ``` - - 1. Fetch the External IP address or CNAME by running the command: - - ```bash - kubectl --namespace contour-external get service envoy - ``` + --8<-- "netadapter-contour.md" - !!! tip - Save this to use in the following [Configure DNS](#configure-dns) section. +=== "Gateway API" + --8<-- "netadapter-gatewayapi.md" ## Verify the installation From 4dc3ea2546266a3795b39f1fd3ff43c7d879ae12 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 4 Jan 2026 20:29:10 -0800 Subject: [PATCH 098/146] Update install-serving-with-yaml.md Provided guidance to refer to the configuration topic --- .../install/yaml-install/serving/install-serving-with-yaml.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index 0bde61d7e0..bb0aff613f 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -41,7 +41,7 @@ To install the Knative Serving component: ## Install a networking layer -The following tabs expand to show instructions for installing a networking layer. For an overview of network layer options, architecture, and configurations see [Configuring Knative networking](../../../serving/config-network-adapters.md) +Expand the following tabs expand to show instructions for installing a networking layer. For an overview of network layer options, architecture, and configurations see [Configuring Knative networking](../../../serving/config-network-adapters.md) === "Kourier" From dd6e4be94ec06087411bb93ed71431d0583ec8f4 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 4 Jan 2026 20:44:12 -0800 Subject: [PATCH 099/146] Snippet code formatting --- docs/snippets/netadapter-contour.md | 16 +++++----------- docs/snippets/netadapter-istio.md | 10 ++-------- docs/snippets/netadapter-kourier.md | 8 +------- 3 files changed, 8 insertions(+), 26 deletions(-) diff --git a/docs/snippets/netadapter-contour.md b/docs/snippets/netadapter-contour.md index bdb28a16fb..c143635359 100644 --- a/docs/snippets/netadapter-contour.md +++ b/docs/snippets/netadapter-contour.md @@ -18,20 +18,14 @@ Use the following steps to install and enable Contour and set it as the ingress 1. Configure Knative Serving to use Contour: - ```bash - kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"contour.ingress.networking.knative.dev"}}' - ``` - -1. Verify the installation by having a pod with the base name of `contour` in the results. - ```bash - kubectl get pods -n knative-serving + kubectl patch configmap/config-network \ + --namespace knative-serving \ + --type merge \ + --patch '{"data":{"ingress-class":"contour.ingress.networking.knative.dev"}}' ``` -1. Get the external IP address (FQDN) to configure DNS records: +1. Get the external IP address (FQDN) to later configure DNS: ```bash kubectl --namespace contour-external get service envoy diff --git a/docs/snippets/netadapter-istio.md b/docs/snippets/netadapter-istio.md index 4e8ebfdc8a..5dacb4ff70 100644 --- a/docs/snippets/netadapter-istio.md +++ b/docs/snippets/netadapter-istio.md @@ -31,14 +31,8 @@ Use the following steps to install Istio and set it as the ingress conroller. --patch '{"data":{"ingress-class":"istio.ingress.networking.knative.dev"}}' ``` -1. Verify the installation by having pods with the base name of `istio` and `istio-webhook` in the results. - - ```bash - kubectl get pods -n knative-serving - ``` - -1. Get the external IP address (FQDN) to configure DNS records: +1. Get the external IP address (FQDN) to later configure DNS: ```bash kubectl --namespace istio-system get service istio-ingressgateway - ``` \ No newline at end of file + ``` diff --git a/docs/snippets/netadapter-kourier.md b/docs/snippets/netadapter-kourier.md index d79675d292..5032c0b85f 100644 --- a/docs/snippets/netadapter-kourier.md +++ b/docs/snippets/netadapter-kourier.md @@ -19,13 +19,7 @@ Use the following steps to install Kourier and set it as the ingress controller. --patch '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}' ``` -1. Verify the installation by having pods with the base name of `kourier-controller` and `kourier-gateway` in the results. - - ```bash - kubectl get pods -n knative-serving - ``` - -1. Get the external IP address (FQDN) to configure DNS records: +1. Get the external IP address (FQDN) to later configure DNS: ```bash kubectl --namespace kourier-system get service kourier From 7e94de4bb8bc1fdd371d2858fcb291ffeda55722 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 4 Jan 2026 21:20:38 -0800 Subject: [PATCH 100/146] Update install-serving-with-yaml.md minor edits --- .../install/yaml-install/serving/install-serving-with-yaml.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index bb0aff613f..de30e7f45d 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -41,7 +41,7 @@ To install the Knative Serving component: ## Install a networking layer -Expand the following tabs expand to show instructions for installing a networking layer. For an overview of network layer options, architecture, and configurations see [Configuring Knative networking](../../../serving/config-network-adapters.md) +Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see [Configure Knative networking](../../../serving/config-network-adaptersmd). === "Kourier" From 1af887024bbc6bdb04bee3a9b810d6ce8186c382 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 4 Jan 2026 21:32:28 -0800 Subject: [PATCH 101/146] Update install-serving-with-yaml.md Link fix --- .../install/yaml-install/serving/install-serving-with-yaml.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index de30e7f45d..8c412f7581 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -41,7 +41,7 @@ To install the Knative Serving component: ## Install a networking layer -Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see [Configure Knative networking](../../../serving/config-network-adaptersmd). +Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see [Configure Knative networking](../../../serving/config-network-adapters.md). === "Kourier" From 33a0b7ab9c5c3cf27b4ff4946c66dd3d4734911d Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 7 Jan 2026 16:43:43 -0800 Subject: [PATCH 102/146] Update docs/versioned/serving/config-network-adapters.md Co-authored-by: Evan Anderson --- docs/versioned/serving/config-network-adapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index cfce225d09..78ee3203a7 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -13,7 +13,7 @@ For installation instructions, see [Install serving with YAML](../install/yaml-i ## Network layer options -Review the tabbed content in this section to determine the optimal networking layer for your cluster. For most users, the Kourier ingress controller is sufficient. You can expand your capabilities with the Contour ingress, a full-feature service mesh with Istio, and the Kubernetes Gateway API. +Review the tabbed content in this section to determine the optimal networking layer for your cluster. If you already have one of the ingress controllers installed in your cluster, we recommend using your existing installation. For most users without a supported ingress, the Kourier ingress controller is sufficient. You can expand your capabilities with the Contour ingress, a full-feature service mesh with Istio, and the Kubernetes Gateway API. The Knative tested ingress controllers (Contour, Istio, and Kourier) have the following common configurations: From c489ded7015bca410a665e31c3e3f76dbc6db63d Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 7 Jan 2026 16:45:56 -0800 Subject: [PATCH 103/146] Update docs/versioned/serving/config-network-adapters.md Co-authored-by: Evan Anderson --- docs/versioned/serving/config-network-adapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 78ee3203a7..f09a21ed02 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -7,7 +7,7 @@ function: how-to # Configure Knative networking -This page provides configuration guidance for Knative networking. You can configure Ingress controls, service-meshes, and gateways. +This page provides configuration guidance for Knative Serving's integration with Kubernetes ingress controllers. Knative leverages existing ingress controls in your Kubernetes cluster, allowing you to use the same monitoring, . For installation instructions, see [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md). From 2b6b3f3795c0fc1b758198ad14e41d2d2f8071bf Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 7 Jan 2026 16:48:20 -0800 Subject: [PATCH 104/146] Update docs/versioned/serving/config-network-adapters.md Co-authored-by: Evan Anderson --- docs/versioned/serving/config-network-adapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index f09a21ed02..42a18a6364 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -74,7 +74,7 @@ There are also third-party Knative networking options and Knative products avail Kourier is a lightweight implementation of the KIngress resource and is suitable for clusters that don't need other ingress features. Kourier is optimal for learning and prototyping, and is installed by the Knative [Quickstart](../getting-started/README.md). - Kourier is is the only supported option for IBM-Z and IBM-P platforms. These IBM platforms require additional steps as documented in [Install Serving th YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). + Kourier is is the only supported option for IBM-Z and IBM-P platforms. These IBM platforms require additional steps as documented in [Install Serving with YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). Kourier provides the following additional configuration options: From dd061d9cfad71441699afbd42b276d6b4637d409 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 7 Jan 2026 16:48:48 -0800 Subject: [PATCH 105/146] Update docs/versioned/serving/config-network-adapters.md Co-authored-by: Evan Anderson --- docs/versioned/serving/config-network-adapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 42a18a6364..aca72fafc4 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -241,7 +241,7 @@ The ingress controllers have the following names: - Contour: `contour-*` - Istio: `istio-webhook-*`. The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace. Knative adds the `istio-webhook-*` pod in the `knative-serving` namespace when Istio is the chosen networking layer. -Each ingress controller manages only those ingress objects that are annotated with its key. Knative Serving uses the controller based on the `network-config` ConfigMap. +Each ingress controller manages only those ingress objects that are annotated with its key. Knative Serving selects the controller based on the rules in the `network-config` ConfigMap. You can determine the controller in use by examining the `config-network.yaml`: From 15884c6e8e0feb6b96ad2370e31bf860b49ba5ab Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 7 Jan 2026 20:47:08 -0800 Subject: [PATCH 106/146] Update config-network-adapters.md Processed reviewer edits --- .../serving/config-network-adapters.md | 62 +++++++++++++++---- 1 file changed, 51 insertions(+), 11 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index aca72fafc4..f84f1dfd9e 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -7,7 +7,7 @@ function: how-to # Configure Knative networking -This page provides configuration guidance for Knative Serving's integration with Kubernetes ingress controllers. Knative leverages existing ingress controls in your Kubernetes cluster, allowing you to use the same monitoring, . +This page provides configuration guidance for Knative Serving's integration with Kubernetes ingress controllers. Knative leverages existing ingress controls in your Kubernetes cluster, allowing you to use the same monitoring. For installation instructions, see [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md). @@ -17,12 +17,14 @@ Review the tabbed content in this section to determine the optimal networking la The Knative tested ingress controllers (Contour, Istio, and Kourier) have the following common configurations: -- Certificate management: Configurable secrets for TLS encrypted traffic. -- Timeout policies: Controls for idle, and response stream timeouts. -- Traffic visibility: Mechanisms to expose services externally or cluster-locally. +- Certificate management: Configurable secrets for TLS encrypted traffic. See [Using a custom TLS certificate for DomainMapping](./services/custom-tls-certificate-domain-mapping.md) +- Timeout policies: Controls for idle, and response stream timeouts. See [Configuring the Defaults ConfigMap](./configuration/config-defaults.md) to review timeout settings. +- Traffic visibility: Mechanisms to expose services externally or cluster-locally. See [Traffic management](./traffic-management.md). The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. +In scenarios where there are multiple networking implementations, you can create a custom ingress class to specify different ingress class annotations for each service. For more information, see [Configuring Services custom ingress class](./services/ingress-class.md) + There are also third-party Knative networking options and Knative products available but are not tested or managed by the Knative community. For more information, see [Knative offerings](../install/knative-offerings.md). === "Kourier" @@ -277,15 +279,54 @@ If you want to install a new controller, see [Install serving with YAML](../inst Knative assumes two gateways in the cluster: - Externally exposed - defines the gateway for external traffic. -- Internally-only exposed - defines the gateway for local traffic. +- Internally exposed - defines the gateway for local traffic. -When gateways are installed, the `config-gateway` ConfigMap is updated to track these two gateways set to the following environment variables: +Both gateways route traffic to the Knative services inside the cluster. -- class: `$GATEWAY_CLASS_NAME` -- gateway: `$NAMESPACE/$GATEWAY_NAME` -- service: `$NAMESPACE/$SERVICE_NAME` +```mermaid +--- +config: + look: neo + theme: redux +--- +flowchart TD + subgraph Cluster[Knative Cluster] + direction TB + + ExtGateway[External Gateway\nExposed to external traffic] + IntGateway[Internal Gateway\nOnly for local/cluster-internal traffic] + + KServe[Knative Services\nExamples include Serving and Eventing] + + ExtGateway -->|Routes external HTTP/HTTPS traffic| KServe + IntGateway -->|Routes internal traffic| KServe + end + + ExternalClient[External Client\nInternet / Outside cluster] -->|Ingress| ExtGateway + InternalClient[Internal Client\nPod / Service inside cluster] -->|Cluster-internal| IntGateway + + style ExternalClient fill:#f0f8ff,stroke:#333 + style InternalClient fill:#f0fff0,stroke:#333 + style ExtGateway fill:#ffe4e1,stroke:#ff0000,stroke-width:2px + style IntGateway fill:#e6ffe6,stroke:#008000,stroke-width:2px + style Cluster stroke:#333,stroke-width:3px,stroke-dasharray: 5 5 +``` -The variable `$SERVICE_NAME` is the Kubernetes Service name that points to the pods in the Gateway implementation. +Use the following command to list Kubernetes GatewayClass resources cluster-wide. + +```bash +kubectl get gatewayclass +``` + +Example results: + +```bash +NAME CONTROLLER ACCEPTED AGE +istio istio.io/gateway-controller True 11d +istio-remote istio.io/unmanaged-gateway True 11d +``` + +When gateways are installed, the `config-gateway` ConfigMap is updated to track the `class`, `gateway`, and `service`. The service is the Kubernetes Service name that points to the pods in the Gateway implementation. Use the following command to determine the current configuration: @@ -312,4 +353,3 @@ local-gateways: | supported-features: - HTTPRouteRequestTimeout ``` - From 5b132e92ae8534cf9f46ab9d165a01d70403ae41 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 7 Jan 2026 21:48:21 -0800 Subject: [PATCH 107/146] Update config-network-adapters.md Review edits cont'd. --- .../serving/config-network-adapters.md | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index f84f1dfd9e..942b36d796 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -7,7 +7,7 @@ function: how-to # Configure Knative networking -This page provides configuration guidance for Knative Serving's integration with Kubernetes ingress controllers. Knative leverages existing ingress controls in your Kubernetes cluster, allowing you to use the same monitoring. +This page provides configuration guidance for Knative Serving's integration with Kubernetes ingress controllers. Knative leverages existing ingress controls in your Kubernetes cluster, allowing you to use the same monitoring features and capabilities. For installation instructions, see [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md). @@ -17,9 +17,10 @@ Review the tabbed content in this section to determine the optimal networking la The Knative tested ingress controllers (Contour, Istio, and Kourier) have the following common configurations: -- Certificate management: Configurable secrets for TLS encrypted traffic. See [Using a custom TLS certificate for DomainMapping](./services/custom-tls-certificate-domain-mapping.md) +- Certificate management: Configurable secrets for TLS encrypted traffic. See [Using a custom TLS certificate for DomainMapping](./services/custom-tls-certificate-domain-mapping.md). - Timeout policies: Controls for idle, and response stream timeouts. See [Configuring the Defaults ConfigMap](./configuration/config-defaults.md) to review timeout settings. - Traffic visibility: Mechanisms to expose services externally or cluster-locally. See [Traffic management](./traffic-management.md). +- The mapping of Route objects to `networking.internal.knative.dev` objects. The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. @@ -42,9 +43,7 @@ There are also third-party Knative networking options and Knative products avail direction LR kingress1["Ingress object (KIngress)
networking.internal.knative.dev"] serving["Serving
controller"] - route["Route object"] end - route -- read by --> serving serving -- creates --> kingress1 style kingress1 fill:#BBDEFB,stroke-width:1px,stroke-dasharray: 0 style serving fill:#FFE0B2 @@ -100,9 +99,7 @@ There are also third-party Knative networking options and Knative products avail direction LR kingress1["Ingress object (KIngress)
networking.internal.knative.dev"] serving["Serving
controller"] - route["Route object"] end - route -- read by --> serving serving -- creates --> kingress1 style kingress1 fill:#BBDEFB,stroke-width:1px,stroke-dasharray: 0 style serving fill:#FFE0B2 @@ -157,9 +154,7 @@ There are also third-party Knative networking options and Knative products avail direction LR kingress1["Ingress object (KIngress)
networking.internal.knative.dev"] serving["Serving
controller"] - route["Route object"] end - route -- read by --> serving serving -- creates --> kingress1 style kingress1 fill:#BBDEFB,stroke-width:1px,stroke-dasharray: 0 style serving fill:#FFE0B2 @@ -206,6 +201,7 @@ There are also third-party Knative networking options and Knative products avail layout: elk theme: default --- + %%{init: {'theme': 'base', 'themeVariables': { 'fontSize': '12px' }, 'flowchart': {'nodeSpacing': 30, 'rankSpacing': 40} }}%% flowchart LR subgraph net-gateway-api["net-gateway-api controller"] GW["Gateway"] @@ -289,21 +285,23 @@ config: look: neo theme: redux --- -flowchart TD +%%{init: {'theme': 'base', 'themeVariables': { 'fontSize': '12px' }, 'flowchart': {'nodeSpacing': 30, 'rankSpacing': 40} }}%% + +graph TD subgraph Cluster[Knative Cluster] direction TB - ExtGateway[External Gateway\nExposed to external traffic] - IntGateway[Internal Gateway\nOnly for local/cluster-internal traffic] + ExtGateway[External Gateway
Exposed to external traffic] + IntGateway[Internal Gateway
Only for local/cluster-internal traffic] - KServe[Knative Services\nExamples include Serving and Eventing] + KServe[Knative Services
(e.g., Serving, Eventing, etc.)] ExtGateway -->|Routes external HTTP/HTTPS traffic| KServe IntGateway -->|Routes internal traffic| KServe end - ExternalClient[External Client\nInternet / Outside cluster] -->|Ingress| ExtGateway - InternalClient[Internal Client\nPod / Service inside cluster] -->|Cluster-internal| IntGateway + ExternalClient[External Client
Internet / Outside cluster] -->|Ingress| ExtGateway + InternalClient[Internal Client
Pod / Service inside cluster] -->|Cluster-internal| IntGateway style ExternalClient fill:#f0f8ff,stroke:#333 style InternalClient fill:#f0fff0,stroke:#333 From bcc347a8c8ce742f4d96a8aae76e8cc06c5a8725 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 7 Jan 2026 21:59:06 -0800 Subject: [PATCH 108/146] Update config-network-adapters.md mermaid tweaks --- docs/versioned/serving/config-network-adapters.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 942b36d796..83cf2db921 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -201,7 +201,7 @@ There are also third-party Knative networking options and Knative products avail layout: elk theme: default --- - %%{init: {'theme': 'base', 'themeVariables': { 'fontSize': '12px' }, 'flowchart': {'nodeSpacing': 30, 'rankSpacing': 40} }}%% + %%{init: {'theme': 'base', 'themeVariables': { 'fontSize': '13px' }, 'flowchart': {'nodeSpacing': 30, 'rankSpacing': 40} }}%% flowchart LR subgraph net-gateway-api["net-gateway-api controller"] GW["Gateway"] @@ -286,8 +286,7 @@ config: theme: redux --- %%{init: {'theme': 'base', 'themeVariables': { 'fontSize': '12px' }, 'flowchart': {'nodeSpacing': 30, 'rankSpacing': 40} }}%% - -graph TD +flowchart TD subgraph Cluster[Knative Cluster] direction TB From aba1034a39639ffc11ee8eac405ac7e63e0193ca Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 7 Jan 2026 22:13:12 -0800 Subject: [PATCH 109/146] Update config-network-adapters.md Mermaid fixes --- .../serving/config-network-adapters.md | 34 ++++++++----------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 83cf2db921..5bfe3bb658 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -284,28 +284,24 @@ Both gateways route traffic to the Knative services inside the cluster. config: look: neo theme: redux + layout: dagre --- -%%{init: {'theme': 'base', 'themeVariables': { 'fontSize': '12px' }, 'flowchart': {'nodeSpacing': 30, 'rankSpacing': 40} }}%% -flowchart TD - subgraph Cluster[Knative Cluster] - direction TB - - ExtGateway[External Gateway
Exposed to external traffic] - IntGateway[Internal Gateway
Only for local/cluster-internal traffic] - - KServe[Knative Services
(e.g., Serving, Eventing, etc.)] - - ExtGateway -->|Routes external HTTP/HTTPS traffic| KServe - IntGateway -->|Routes internal traffic| KServe - end - - ExternalClient[External Client
Internet / Outside cluster] -->|Ingress| ExtGateway - InternalClient[Internal Client
Pod / Service inside cluster] -->|Cluster-internal| IntGateway - - style ExternalClient fill:#f0f8ff,stroke:#333 - style InternalClient fill:#f0fff0,stroke:#333 +flowchart TB + subgraph Cluster["Knative Cluster"] + direction TB + ExtGateway["External Gateway\nExposed to external traffic"] + IntGateway["Internal Gateway\nOnly for local/cluster-internal traffic"] + KServe["Knative Services\nExamples include Serving and Eventing"] + end + ExtGateway -- Routes external HTTP/HTTPS traffic --> KServe + IntGateway -- Routes internal traffic --> KServe + ExternalClient["External Client\nInternet / Outside cluster"] -- Ingress --> ExtGateway + InternalClient["Internal Client\nPod / Service inside cluster"] -- "Cluster-internal" --> IntGateway + style ExtGateway fill:#ffe4e1,stroke:#ff0000,stroke-width:2px style IntGateway fill:#e6ffe6,stroke:#008000,stroke-width:2px + style ExternalClient fill:#f0f8ff,stroke:#333 + style InternalClient fill:#f0fff0,stroke:#333 style Cluster stroke:#333,stroke-width:3px,stroke-dasharray: 5 5 ``` From d2af6d9b67ff2af801df9eb98c6b25d67a241b11 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Wed, 7 Jan 2026 22:24:42 -0800 Subject: [PATCH 110/146] Update config-network-adapters.md Mermaid adjustments --- docs/versioned/serving/config-network-adapters.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 5bfe3bb658..b2753ab4ff 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -284,19 +284,19 @@ Both gateways route traffic to the Knative services inside the cluster. config: look: neo theme: redux - layout: dagre + layout: elk --- -flowchart TB +flowchart LR subgraph Cluster["Knative Cluster"] direction TB - ExtGateway["External Gateway\nExposed to external traffic"] - IntGateway["Internal Gateway\nOnly for local/cluster-internal traffic"] - KServe["Knative Services\nExamples include Serving and Eventing"] + ExtGateway["External Gateway
Exposed to external traffic"] + IntGateway["Internal Gateway
Only for local internal traffic"] + KServe["Knative Services
Serving and Eventing"] end ExtGateway -- Routes external HTTP/HTTPS traffic --> KServe IntGateway -- Routes internal traffic --> KServe - ExternalClient["External Client\nInternet / Outside cluster"] -- Ingress --> ExtGateway - InternalClient["Internal Client\nPod / Service inside cluster"] -- "Cluster-internal" --> IntGateway + ExternalClient["External Client
Internet / Outside cluster"] -- Ingress --> ExtGateway + InternalClient["Internal Client
Pod / Service inside cluster"] -- "Cluster-internal" --> IntGateway style ExtGateway fill:#ffe4e1,stroke:#ff0000,stroke-width:2px style IntGateway fill:#e6ffe6,stroke:#008000,stroke-width:2px From c988447c7ebe70cc933748dd92bbaa3f6131a724 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 00:30:52 -0800 Subject: [PATCH 111/146] Snippet references and fixes Also name change to "Configure Istio's ingress gateway" --- docs/snippets/netadapter-contour.md | 4 --- docs/snippets/netadapter-gatewayapi.md | 34 ++++++++++++++++++- docs/snippets/netadapter-istio.md | 5 --- docs/snippets/netadapter-kourier.md | 4 --- docs/versioned/.nav.yml | 2 +- .../serving/install-serving-with-yaml.md | 12 +++---- .../serving/config-network-adapters.md | 8 ++--- .../setting-up-custom-ingress-gateway.md | 2 +- 8 files changed, 45 insertions(+), 26 deletions(-) diff --git a/docs/snippets/netadapter-contour.md b/docs/snippets/netadapter-contour.md index c143635359..6f24f927d9 100644 --- a/docs/snippets/netadapter-contour.md +++ b/docs/snippets/netadapter-contour.md @@ -6,10 +6,6 @@ Use the following steps to install and enable Contour and set it as the ingress kubectl apply -f {{ artifact(repo="net-contour",org="knative-extensions",file="contour.yaml")}} ``` - - 1. Install the Knative Contour integration controller: ```bash diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index 5b9a161233..46453702c2 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -26,7 +26,7 @@ Use the following steps to install and configure the Knative Gateway API adapter kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateway-api.yaml") }} ``` -1. Configure Knative Serving to use Knative Gateway API channel: +1. Configure Knative Serving to use the Knative Gateway API ingress class: ```bash kubectl patch configmap/config-network \ @@ -35,8 +35,40 @@ Use the following steps to install and configure the Knative Gateway API adapter --patch '{"data":{"ingress-class":"gateway-api.ingress.networking.knative.dev"}}' ``` +1. Edit the `config-gateway` ConfigMap in the knative-serving namespace to specify gateway resources for external and local traffic. For the `external-gateways` key, specify the value for `name` and for `service` as needed. Do the same for the `local gateways`. The `namespace` should be kept at `knative-serving`. + + ```bash + cat < - 1. Install the Knative Istio controller: ```bash diff --git a/docs/snippets/netadapter-kourier.md b/docs/snippets/netadapter-kourier.md index 5032c0b85f..ffc83f268a 100644 --- a/docs/snippets/netadapter-kourier.md +++ b/docs/snippets/netadapter-kourier.md @@ -6,10 +6,6 @@ Use the following steps to install Kourier and set it as the ingress controller. kubectl apply -f {{ artifact(repo="net-kourier",org="knative-extensions", file="kourier.yaml") }} ``` - - 1. Configure Knative Serving to use Kourier by default: ```bash diff --git a/docs/versioned/.nav.yml b/docs/versioned/.nav.yml index 2c2ad9a631..e7e6fdd657 100644 --- a/docs/versioned/.nav.yml +++ b/docs/versioned/.nav.yml @@ -268,7 +268,7 @@ nav: - Exclude namespaces from the Knative webhook: serving/webhook-customizations.md - Networking Options: - Configure Knative networking: serving/config-network-adapters.md - - Configure the ingress gateway: serving/setting-up-custom-ingress-gateway.md + - Configure Istio's ingress gateway: serving/setting-up-custom-ingress-gateway.md - Configure domain names: serving/using-a-custom-domain.md - Istio Authorization: serving/istio-authorization.md - Extending Queue Proxy image with QPOptions: serving/queue-extensions.md diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index 8c412f7581..8aee255395 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -45,19 +45,19 @@ Expand the following tabs for instructions on installing network layers. For an === "Kourier" - --8<-- "netadapter-kourier.md" + {% include "netadapter-kourier.md" %} -=== "Istio" +=== "Contour" - --8<-- "netadapter-istio.md" + {% include "netadapter-contour.md" %} -=== "Contour" +=== "Istio" - --8<-- "netadapter-contour.md" + {% include "netadapter-istio.md" %} === "Gateway API" - --8<-- "netadapter-gatewayapi.md" + {% include "netadapter-gatewayapi.md" %} ## Verify the installation diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index b2753ab4ff..5c7f9e7e4d 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -18,13 +18,13 @@ Review the tabbed content in this section to determine the optimal networking la The Knative tested ingress controllers (Contour, Istio, and Kourier) have the following common configurations: - Certificate management: Configurable secrets for TLS encrypted traffic. See [Using a custom TLS certificate for DomainMapping](./services/custom-tls-certificate-domain-mapping.md). -- Timeout policies: Controls for idle, and response stream timeouts. See [Configuring the Defaults ConfigMap](./configuration/config-defaults.md) to review timeout settings. +- Timeout policies: Controls for idle, and response stream timeouts. To review timeout settings, see [Configuring the Defaults ConfigMap](./configuration/config-defaults.md). - Traffic visibility: Mechanisms to expose services externally or cluster-locally. See [Traffic management](./traffic-management.md). -- The mapping of Route objects to `networking.internal.knative.dev` objects. +- The mapping of Route objects to `networking.internal.knative.dev` objects is common to these controllers. The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. -In scenarios where there are multiple networking implementations, you can create a custom ingress class to specify different ingress class annotations for each service. For more information, see [Configuring Services custom ingress class](./services/ingress-class.md) +In scenarios where there are multiple networking implementations, you can create a custom ingress class to specify different ingress class annotations for each service. For more information, see [Configuring Services custom ingress class](./services/ingress-class.md). There are also third-party Knative networking options and Knative products available but are not tested or managed by the Knative community. For more information, see [Knative offerings](../install/knative-offerings.md). @@ -186,7 +186,7 @@ There are also third-party Knative networking options and Knative products avail The Knative `net-istio` is a KIngress controller for Istio. It's a full-feature service mesh that also functions as a Knative ingress. Well suited for enterprises already running Istio or who need advanced service mesh features. - Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying `istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own. See [Configuring the Ingress gateway](setting-up-custom-ingress-gateway.md). + Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying `istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own. See [Configure Istio's ingress gateway](setting-up-custom-ingress-gateway.md). Istio provides the following additional configuration options: diff --git a/docs/versioned/serving/setting-up-custom-ingress-gateway.md b/docs/versioned/serving/setting-up-custom-ingress-gateway.md index 27945ad6a0..143a94dbf1 100644 --- a/docs/versioned/serving/setting-up-custom-ingress-gateway.md +++ b/docs/versioned/serving/setting-up-custom-ingress-gateway.md @@ -5,7 +5,7 @@ components: function: how-to --- -# Configuring the ingress gateway +# Configure Istio's ingress gateway Knative uses a shared ingress Gateway to serve all incoming traffic within Knative service mesh, which is the `knative-ingress-gateway` Gateway under From 214e7ba6c021ddc1158a338bba9da274ebf67958 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 01:31:14 -0800 Subject: [PATCH 112/146] Misc edits And tab test with snippet references --- docs/snippets/no-dns.md | 4 ++ .../serving/install-serving-with-yaml.md | 4 +- .../serving/config-network-adapters.md | 70 +++++++++++-------- 3 files changed, 46 insertions(+), 32 deletions(-) diff --git a/docs/snippets/no-dns.md b/docs/snippets/no-dns.md index a0826e5284..2a6bbd1f95 100644 --- a/docs/snippets/no-dns.md +++ b/docs/snippets/no-dns.md @@ -1,3 +1,7 @@ + === "No DNS" If you are using `curl` to access [the sample applications](/docs/getting-started/first-service/), or your own Knative app, and are unable to use the "Magic DNS (sslip.io)" or "Real DNS" methods, there is a temporary approach. This is useful for those who wish to evaluate Knative without altering their DNS configuration, as per the "Real DNS" method, or cannot use the "Magic DNS" method due to using, diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index 8aee255395..ff576a2f14 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -45,7 +45,7 @@ Expand the following tabs for instructions on installing network layers. For an === "Kourier" - {% include "netadapter-kourier.md" %} + --8<-- "netadapter.kourier.md" === "Contour" @@ -53,7 +53,7 @@ Expand the following tabs for instructions on installing network layers. For an === "Istio" - {% include "netadapter-istio.md" %} + --8<-- "netadapter-istio.md" === "Gateway API" diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 5c7f9e7e4d..6afaa948ba 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -132,13 +132,15 @@ There are also third-party Knative networking options and Knative products avail style bottom fill:transparent ``` - The Contour ingress controller, `net-contour`, bridges Knative's KIngress resources to Contour's HTTPProxy resources. A good choice for clusters that already run non-Knative apps, are already using a Contour envoy, or don't need a full-feature service mesh. + The Contour ingress controller, `net-contour`, bridges Knative's KIngress resources to Contour's HTTPProxy resources. Contour is a good choice for clusters that already run non-Knative apps, are already using a Contour envoy, or don't need a full-feature service mesh. Contour provides the following additional configuration options: - CORS policy configuration. - Direct visibility classes for external and internal traffic. + Contour also supports several cluster-wide configuration options. For more information see the [Contour Configuration Reference](https://projectcontour.io/docs/1.33/configuration/). + === "Istio" Knative Serving network layer architecture: @@ -170,21 +172,24 @@ There are also third-party Knative networking options and Knative products avail theme: default --- flowchart LR - subgraph bottom[" "] - direction LR - envoy["Envoy deployment
istio-system namespace"] - kourier["net-istio
controller"] - kingress2["KIngress class:
istio.ingress.networking.knative.dev"] - end - kingress2 -- read by --> kourier - kourier -- programs --> envoy - - style envoy fill:#BBDEFB - style kourier fill:#FFE0B2 - style bottom fill:transparent + subgraph bottom[" "] + direction LR + VirtualService["Istio
VirtualService"] + istiod("Istio") + net-istio("net-istio
controller") + kingress["KIngress class:
istio.ingress.networking.knative.dev"] + end + kingress -- read by --> net-istio + net-istio -- creates --> VirtualService + VirtualService -- read by --> istiod + + style VirtualService fill:#BBDEFB + style istiod fill:#BBDEFB + style net-istio fill:#FFE0B2 + style bottom fill:transparent ``` - The Knative `net-istio` is a KIngress controller for Istio. It's a full-feature service mesh that also functions as a Knative ingress. Well suited for enterprises already running Istio or who need advanced service mesh features. + The Knative `net-istio` is a KIngress controller for Istio. Istio is a full-feature service mesh that also functions as a Knative ingress. `net-istio` is well suited for enterprises already running Istio or who need advanced service mesh features. Knative has a default Istio integration without the full-feature service mesh. The `knative-ingress-gateway` in the `knative-serving` namespace is a shared Istio gateway resource that handles all incoming (north-south) traffic to Knative services. This gateway points to the underlying `istio-ingressgateway` service in the `istio-system` namespace. You can replace this gateway with one of your own. See [Configure Istio's ingress gateway](setting-up-custom-ingress-gateway.md). @@ -192,6 +197,11 @@ There are also third-party Knative networking options and Knative products avail - Advanced gateway selection with label selectors for fine-grained routing. - Support for mesh-aware and cluster-local access. + + In addition to [Istio's configuration options](https://istio.io/latest/docs/reference/config/), `net-istio` provides the following additional configuration options for mapping Knative Routes to Istio VirtualServices: + + - Advanced gateway selection with label selectors for fine-grained routing. + - Support for mesh-aware and cluster-local access. === "Gateway API" @@ -201,27 +211,27 @@ There are also third-party Knative networking options and Knative products avail layout: elk theme: default --- - %%{init: {'theme': 'base', 'themeVariables': { 'fontSize': '13px' }, 'flowchart': {'nodeSpacing': 30, 'rankSpacing': 40} }}%% flowchart LR - subgraph net-gateway-api["net-gateway-api controller"] - GW["Gateway"] - Route["Knative Route"] - HR["HTTPRoute"] + net-gateway["net-gateway-api controller"] + GW["Gateway"] + KIngress["KIngress objects"] + HR["HTTPRoute"] + subgraph underlying["Gateway-API Implementation
(Contour, Istio, Envoy Gateway, …)"] + Controller("GatewayClass Controller") end - subgraph underlying["Underlying Controller
(Contour │ Istio │ Envoy Gateway │ …)"] - Controller["GatewayClass Controller"] - end - KSvc["Knative Service"] --> Route - Route -- translates to --> GW & HR - GW --> Controller - HR --> Controller - Controller -- routes traffic to --> Pods["Your Pods"] - - style net-gateway-api fill:#e3f2fd,stroke:#1976d2 + KIngress -- read by --> net-gateway + net-gateway -- updates --> GW + net-gateway -- creates --> HR + GW -- read by --> Controller + HR -- read by --> Controller + style net-gateway fill:#FFE0B2 + style GW fill:#BBDEFB + style HR fill:#BBDEFB + style Controller fill:#BBDEFB style underlying fill:#fff3e0,stroke:#ef6c00 ``` - The Knative `net-gateway-api` is a KIngress implementation for Knative integration with the [Kubernetes Gateway API](https://gateway-api.sigs.k8s.io/). A good choice for teams adopting the Gateway API to unify ingress across Kubernetes. + The Knative `net-gateway-api` is a KIngress implementation for Knative integration with the [Kubernetes Gateway API](https://gateway-api.sigs.k8s.io/). A recommended choice for many teams adopting the Gateway API to unify ingress across Kubernetes. Clusters with large numbers of Knative Services however, may experience limitations. The Kubernetes Gateway API requires a controller or service mesh. Istio and Contour implementations are tested. For more information see [Tested Gateway API version and Ingress](https://github.com/knative-extensions/net-gateway-api/blob/main/docs/test-version.md). From 4df6d8cebb599d2ddb76c2fb197b5966f19bd051 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 01:36:45 -0800 Subject: [PATCH 113/146] Update install-serving-with-yaml.md tabs with snippet references fix --- .../install/yaml-install/serving/install-serving-with-yaml.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index ff576a2f14..8aee255395 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -45,7 +45,7 @@ Expand the following tabs for instructions on installing network layers. For an === "Kourier" - --8<-- "netadapter.kourier.md" + {% include "netadapter-kourier.md" %} === "Contour" @@ -53,7 +53,7 @@ Expand the following tabs for instructions on installing network layers. For an === "Istio" - --8<-- "netadapter-istio.md" + {% include "netadapter-istio.md" %} === "Gateway API" From 92670a881d4c71b6f088590eef7ef217f5f5147c Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 01:42:25 -0800 Subject: [PATCH 114/146] Update install-serving-with-yaml.md tab test again --- .../install/yaml-install/serving/install-serving-with-yaml.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index 8aee255395..7a72c1a1a5 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -53,7 +53,7 @@ Expand the following tabs for instructions on installing network layers. For an === "Istio" - {% include "netadapter-istio.md" %} + --8<-- "netadapter-istio.md" === "Gateway API" From edea5c3f3d63aae3ae382bab5c4ca7aa41c31843 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 12:42:35 -0800 Subject: [PATCH 115/146] Snippet and Tab fixes Formatting tasks --- docs/snippets/dns.md | 4 + docs/snippets/netadapter-contour.md | 61 +++---- docs/snippets/netadapter-gatewayapi.md | 154 +++++++++--------- docs/snippets/netadapter-istio.md | 71 ++++---- docs/snippets/netadapter-kourier.md | 47 +++--- .../serving/install-serving-with-yaml.md | 19 +-- 6 files changed, 185 insertions(+), 171 deletions(-) diff --git a/docs/snippets/dns.md b/docs/snippets/dns.md index a6709e38a7..bd04975545 100644 --- a/docs/snippets/dns.md +++ b/docs/snippets/dns.md @@ -1,3 +1,7 @@ + You can configure DNS to avoid specifying the host header in curl commands, or to access the content with a web browser. The following tabs show instructions for configuring DNS. Follow the procedure for the DNS of your choice: diff --git a/docs/snippets/netadapter-contour.md b/docs/snippets/netadapter-contour.md index 6f24f927d9..b475336dbd 100644 --- a/docs/snippets/netadapter-contour.md +++ b/docs/snippets/netadapter-contour.md @@ -1,28 +1,33 @@ -Use the following steps to install and enable Contour and set it as the ingress conroller. - -1. Install the Knative Contour configuration: - - ```bash - kubectl apply -f {{ artifact(repo="net-contour",org="knative-extensions",file="contour.yaml")}} - ``` - -1. Install the Knative Contour integration controller: - - ```bash - kubectl apply -f {{ artifact(repo="net-contour",org="knative-extensions",file="net-contour.yaml")}} - ``` - -1. Configure Knative Serving to use Contour: - - ```bash - kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"contour.ingress.networking.knative.dev"}}' - ``` - -1. Get the external IP address (FQDN) to later configure DNS: - - ```bash - kubectl --namespace contour-external get service envoy - ``` + +=== "Contour" + + Use the following steps to install and enable Contour and set it as the ingress controller. + + 1. Install the Knative Contour configuration: + + ```bash + kubectl apply -f {{ artifact(repo="net-contour",org="knative-extensions",file="contour.yaml")}} + ``` + + 1. Install the Knative Contour integration controller: + + ```bash + kubectl apply -f {{ artifact(repo="net-contour",org="knative-extensions",file="net-contour.yaml")}} + ``` + + 1. Configure Knative Serving to use Contour: + + ```bash + kubectl patch configmap/config-network \ + --namespace knative-serving \ + --type merge \ + --patch '{"data":{"ingress-class":"contour.ingress.networking.knative.dev"}}' + ``` + + 1. Get the external IP address (FQDN) to later configure DNS: + + ```bash + kubectl --namespace contour-external get service envoy + ``` diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index 46453702c2..7424870016 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -1,74 +1,80 @@ -Use the following steps to install and configure the Knative Gateway API adapter. Note that you need to have a [Gateway API implementation](https://gateway-api.sigs.k8s.io/implementations/) installed in your cluster. The Knative team currently tests the Istio, Contour, and Envoy-Gateway implementations of Gateway API. - -1. Clone the Gateway API repo: - - ```bash - git clone https://github.com/knative-extensions/net-gateway-api.git - cd net-gateway-api - ``` - -1. Set environment variables: - - ```bash - export KO_DOCKER_REPO=kind.local - export KIND_CLUSTER_NAME=knative # (keep this if your cluster is named "knative") - ``` - -1. Deploy Gateway API resources: - - ```bash - ko apply -f config/ - ``` - -1. Install the Knative Gateway API: - - ```bash - kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateway-api.yaml") }} - ``` - -1. Configure Knative Serving to use the Knative Gateway API ingress class: - - ```bash - kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"gateway-api.ingress.networking.knative.dev"}}' - ``` - -1. Edit the `config-gateway` ConfigMap in the knative-serving namespace to specify gateway resources for external and local traffic. For the `external-gateways` key, specify the value for `name` and for `service` as needed. Do the same for the `local gateways`. The `namespace` should be kept at `knative-serving`. - - ```bash - cat < +=== "Gateway API" + + Use the following steps to install and configure the Knative Gateway API adapter. Note that you need to have a [Gateway API implementation](https://gateway-api.sigs.k8s.io/implementations/) installed in your cluster. The Knative team currently tests the Istio, Contour, and Envoy-Gateway implementations of Gateway API. + + 1. Clone the Gateway API repo: + + ```bash + git clone https://github.com/knative-extensions/net-gateway-api.git + cd net-gateway-api + ``` + + 1. Set environment variables: + + ```bash + export KO_DOCKER_REPO=kind.local + export KIND_CLUSTER_NAME=knative # (keep this if your cluster is named "knative") + ``` + + 1. Deploy Gateway API resources: + + ```bash + ko apply -f config/ + ``` + + 1. Install the Knative Gateway API: + + ```bash + kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateway-api.yaml") }} + ``` + + 1. Configure Knative Serving to use the Knative Gateway API ingress class: + + ```bash + kubectl patch configmap/config-network \ + --namespace knative-serving \ + --type merge \ + --patch '{"data":{"ingress-class":"gateway-api.ingress.networking.knative.dev"}}' + ``` + + 1. Edit the `config-gateway` ConfigMap in the knative-serving namespace to specify gateway resources for external and local traffic. For the `external-gateways` key, specify the value for `name` and for `service` as needed. Do the same for the `local gateways`. The `namespace` should be kept at `knative-serving`. + + ```bash + cat < - -1. Configure the `config-network` ConfigMap to use Istio: - - ```bash - kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"istio.ingress.networking.knative.dev"}}' - ``` - -1. Get the external IP address (FQDN) to later configure DNS: - - ```bash - kubectl --namespace istio-system get service istio-ingressgateway - ``` + +=== "Istio" + + Use the following steps to install Istio and set it as the ingress controller. + + 1. Install a properly configured Istio: + + ```bash + kubectl apply -l knative.dev/crd-install=true -f {{ artifact(repo="net-istio",org="knative-extensions",file="istio.yaml") }} + kubectl apply -f {{ artifact(repo="net-istio",org="knative-extensions",file="istio.yaml") }} + ``` + + 1. Install the Knative Istio controller: + + ```bash + kubectl apply -f {{ artifact(repo="net-istio",org="knative-extensions", file="net-istio.yaml") }} + ``` + + + + 1. Configure the `config-network` ConfigMap to use Istio: + + ```bash + kubectl patch configmap/config-network \ + --namespace knative-serving \ + --type merge \ + --patch '{"data":{"ingress-class":"istio.ingress.networking.knative.dev"}}' + ``` + + 1. Get the external IP address (FQDN) to later configure DNS: + + ```bash + kubectl --namespace istio-system get service istio-ingressgateway + ``` diff --git a/docs/snippets/netadapter-kourier.md b/docs/snippets/netadapter-kourier.md index ffc83f268a..d2e20f11c7 100644 --- a/docs/snippets/netadapter-kourier.md +++ b/docs/snippets/netadapter-kourier.md @@ -1,22 +1,27 @@ -Use the following steps to install Kourier and set it as the ingress controller. + +=== "Kourier" -1. Install the Knative Kourier controller: - - ```bash - kubectl apply -f {{ artifact(repo="net-kourier",org="knative-extensions", file="kourier.yaml") }} - ``` - -1. Configure Knative Serving to use Kourier by default: - - ```bash - kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}' - ``` - -1. Get the external IP address (FQDN) to later configure DNS: - - ```bash - kubectl --namespace kourier-system get service kourier - ``` + Use the following steps to install Kourier and set it as the ingress controller. + + 1. Install the Knative Kourier controller: + + ```bash + kubectl apply -f {{ artifact(repo="net-kourier",org="knative-extensions", file="kourier.yaml") }} + ``` + + 1. Configure Knative Serving to use Kourier by default: + + ```bash + kubectl patch configmap/config-network \ + --namespace knative-serving \ + --type merge \ + --patch '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}' + ``` + + 1. Get the external IP address (FQDN) to later configure DNS: + + ```bash + kubectl --namespace kourier-system get service kourier + ``` diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index 7a72c1a1a5..4beb6ee904 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -43,21 +43,10 @@ To install the Knative Serving component: Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see [Configure Knative networking](../../../serving/config-network-adapters.md). -=== "Kourier" - - {% include "netadapter-kourier.md" %} - -=== "Contour" - - {% include "netadapter-contour.md" %} - -=== "Istio" - - --8<-- "netadapter-istio.md" - -=== "Gateway API" - - {% include "netadapter-gatewayapi.md" %} +{% include "netadapter-kourier.md" %} +{% include "netadapter-contour.md" %} +{% include "netadapter-istio.md" %} +{% include "netadapter-gatewayapi.md" %} ## Verify the installation From 25438ddbbf7470281795f6e79de71dac10c971b7 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 13:07:33 -0800 Subject: [PATCH 116/146] Tab fixes --- docs/snippets/dns.md | 2 +- docs/snippets/netadapter-contour.md | 1 + docs/snippets/netadapter-gatewayapi.md | 2 +- docs/snippets/netadapter-istio.md | 1 + docs/snippets/netadapter-kourier.md | 1 + docs/snippets/no-dns.md | 1 + docs/snippets/real-dns-yaml.md | 4 ++++ 7 files changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/snippets/dns.md b/docs/snippets/dns.md index bd04975545..609e19a266 100644 --- a/docs/snippets/dns.md +++ b/docs/snippets/dns.md @@ -15,4 +15,4 @@ The following tabs show instructions for configuring DNS. Follow the procedure f ``` This configuration works only if the cluster `LoadBalancer` Service exposes an IPv4 address or hostname. It does not work with IPv6 clusters or local setups such as minikube unless the [`minikube tunnel`](https://minikube.sigs.k8s.io/docs/commands/tunnel/) is running. - + \ No newline at end of file diff --git a/docs/snippets/netadapter-contour.md b/docs/snippets/netadapter-contour.md index b475336dbd..7033974cf7 100644 --- a/docs/snippets/netadapter-contour.md +++ b/docs/snippets/netadapter-contour.md @@ -31,3 +31,4 @@ ```bash kubectl --namespace contour-external get service envoy ``` + \ No newline at end of file diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index 7424870016..f5cbcd2381 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -77,4 +77,4 @@ ``` Look for the external Gateway (`knative-ingress-gateway`) to get status and address for DNS configuration. - \ No newline at end of file + \ No newline at end of file diff --git a/docs/snippets/netadapter-istio.md b/docs/snippets/netadapter-istio.md index 1a40fb4461..926bbd6850 100644 --- a/docs/snippets/netadapter-istio.md +++ b/docs/snippets/netadapter-istio.md @@ -36,3 +36,4 @@ ```bash kubectl --namespace istio-system get service istio-ingressgateway ``` + \ No newline at end of file diff --git a/docs/snippets/netadapter-kourier.md b/docs/snippets/netadapter-kourier.md index d2e20f11c7..b611a752c8 100644 --- a/docs/snippets/netadapter-kourier.md +++ b/docs/snippets/netadapter-kourier.md @@ -25,3 +25,4 @@ ```bash kubectl --namespace kourier-system get service kourier ``` + \ No newline at end of file diff --git a/docs/snippets/no-dns.md b/docs/snippets/no-dns.md index 2a6bbd1f95..69385aa2a1 100644 --- a/docs/snippets/no-dns.md +++ b/docs/snippets/no-dns.md @@ -39,3 +39,4 @@ Hello Go Sample v1! ``` Refer to the "Real DNS" method for a permanent solution. + \ No newline at end of file diff --git a/docs/snippets/real-dns-yaml.md b/docs/snippets/real-dns-yaml.md index d0ec6cf0e7..e542950927 100644 --- a/docs/snippets/real-dns-yaml.md +++ b/docs/snippets/real-dns-yaml.md @@ -1,3 +1,6 @@ + === "Real DNS" To configure DNS for Knative, take the External IP @@ -28,3 +31,4 @@ --type merge \ --patch '{"data":{"knative.example.com":""}}' ``` + \ No newline at end of file From b77528c8119717a5e04cc5e7cd1e1e93fb070e57 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 14:06:11 -0800 Subject: [PATCH 117/146] Tab fixes and reviewer edits Misc fixes and edits --- docs/snippets/netadapter-gatewayapi.md | 29 ++++--------------- .../serving/install-serving-with-yaml.md | 2 ++ .../serving/config-network-adapters.md | 18 ++---------- 3 files changed, 10 insertions(+), 39 deletions(-) diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index f5cbcd2381..ee6ce3a330 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -5,31 +5,13 @@ Use the following steps to install and configure the Knative Gateway API adapter. Note that you need to have a [Gateway API implementation](https://gateway-api.sigs.k8s.io/implementations/) installed in your cluster. The Knative team currently tests the Istio, Contour, and Envoy-Gateway implementations of Gateway API. - 1. Clone the Gateway API repo: - - ```bash - git clone https://github.com/knative-extensions/net-gateway-api.git - cd net-gateway-api - ``` - - 1. Set environment variables: - - ```bash - export KO_DOCKER_REPO=kind.local - export KIND_CLUSTER_NAME=knative # (keep this if your cluster is named "knative") - ``` - - 1. Deploy Gateway API resources: - - ```bash - ko apply -f config/ - ``` - 1. Install the Knative Gateway API: ```bash kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateway-api.yaml") }} ``` + + Alternatively, you can also install a preconfigured Gateways for either Contour or Istio. Replace the filename in this step with either `contour-gateway.yaml` or `istio-gateway.yaml`. If you do this, you can skip step 3. 1. Configure Knative Serving to use the Knative Gateway API ingress class: @@ -40,7 +22,9 @@ --patch '{"data":{"ingress-class":"gateway-api.ingress.networking.knative.dev"}}' ``` - 1. Edit the `config-gateway` ConfigMap in the knative-serving namespace to specify gateway resources for external and local traffic. For the `external-gateways` key, specify the value for `name` and for `service` as needed. Do the same for the `local gateways`. The `namespace` should be kept at `knative-serving`. + 1. Create Gateway resources for use by external ("north-south") Knative traffic, and local ("east-west") traffic. If you do not need separate routing for local traffic (or [private Knative services](../../../serving/services/private-services.md)), you can use the external Gateway for both. + + Knative verifies traffic settings according to the Kubernetes namespace, the name of the Gateways, and an underlying DNS name such as a Kubernetes service DNS name that corresponds to the Gateway. ```bash cat <Exposed to external traffic"] IntGateway["Internal Gateway
Only for local internal traffic"] - KServe["Knative Services
Serving and Eventing"] + KServe["Knative Services"] + InternalClient["Internal Client
Pod / Service inside cluster"] -- "Cluster-internal" --> IntGateway end ExtGateway -- Routes external HTTP/HTTPS traffic --> KServe IntGateway -- Routes internal traffic --> KServe ExternalClient["External Client
Internet / Outside cluster"] -- Ingress --> ExtGateway - InternalClient["Internal Client
Pod / Service inside cluster"] -- "Cluster-internal" --> IntGateway style ExtGateway fill:#ffe4e1,stroke:#ff0000,stroke-width:2px style IntGateway fill:#e6ffe6,stroke:#008000,stroke-width:2px @@ -315,19 +315,7 @@ flowchart LR style Cluster stroke:#333,stroke-width:3px,stroke-dasharray: 5 5 ``` -Use the following command to list Kubernetes GatewayClass resources cluster-wide. - -```bash -kubectl get gatewayclass -``` - -Example results: - -```bash -NAME CONTROLLER ACCEPTED AGE -istio istio.io/gateway-controller True 11d -istio-remote istio.io/unmanaged-gateway True 11d -``` +To install the Gateway API and configure the gateways, see the Gateway API tab in [Install a networking layer](../install/yaml-install/serving/install-serving-with-yaml.md#install-a-networking-layer). When gateways are installed, the `config-gateway` ConfigMap is updated to track the `class`, `gateway`, and `service`. The service is the Kubernetes Service name that points to the pods in the Gateway implementation. From 6365583338c0fe4f3ea950bcf75b5ce59d71ee85 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 14:19:28 -0800 Subject: [PATCH 118/146] tab tweaks --- docs/snippets/netadapter-contour.md | 8 ++++---- docs/snippets/netadapter-gatewayapi.md | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/snippets/netadapter-contour.md b/docs/snippets/netadapter-contour.md index 7033974cf7..8536e232a5 100644 --- a/docs/snippets/netadapter-contour.md +++ b/docs/snippets/netadapter-contour.md @@ -20,10 +20,10 @@ 1. Configure Knative Serving to use Contour: ```bash - kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"contour.ingress.networking.knative.dev"}}' + kubectl patch configmap/config-network \ + --namespace knative-serving \ + --type merge \ + --patch '{"data":{"ingress-class":"contour.ingress.networking.knative.dev"}}' ``` 1. Get the external IP address (FQDN) to later configure DNS: diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index ee6ce3a330..7f212500e7 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -4,14 +4,14 @@ === "Gateway API" Use the following steps to install and configure the Knative Gateway API adapter. Note that you need to have a [Gateway API implementation](https://gateway-api.sigs.k8s.io/implementations/) installed in your cluster. The Knative team currently tests the Istio, Contour, and Envoy-Gateway implementations of Gateway API. - + 1. Install the Knative Gateway API: ```bash kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateway-api.yaml") }} ``` - - Alternatively, you can also install a preconfigured Gateways for either Contour or Istio. Replace the filename in this step with either `contour-gateway.yaml` or `istio-gateway.yaml`. If you do this, you can skip step 3. + + Alternatively, you can also install a preconfigured Gateways for either Contour or Istio. Replace the filename in this step with either `contour-gateway.yaml` or `istio-gateway.yaml`. If you do this, you can skip step 3. 1. Configure Knative Serving to use the Knative Gateway API ingress class: From b6c8203f958a7a08251243987eaf9420d404253d Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 14:26:55 -0800 Subject: [PATCH 119/146] tab and include test --- .../install/yaml-install/serving/install-serving-with-yaml.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index d0b7a6cb9a..f369b92cc1 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -43,8 +43,8 @@ To install the Knative Serving component: Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see [Configure Knative networking](../../../serving/config-network-adapters.md). -{% filter indent(width=4) %} {% include "netadapter-kourier.md" %} +{% filter indent(width=4) %} {% include "netadapter-contour.md" %} {% include "netadapter-istio.md" %} {% include "netadapter-gatewayapi.md" %} From 0bd21222442980007600f8bda9799d1078f8a07e Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 14:30:04 -0800 Subject: [PATCH 120/146] tab include test testing... --- .../install/yaml-install/serving/install-serving-with-yaml.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index f369b92cc1..4beb6ee904 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -44,11 +44,9 @@ To install the Knative Serving component: Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see [Configure Knative networking](../../../serving/config-network-adapters.md). {% include "netadapter-kourier.md" %} -{% filter indent(width=4) %} {% include "netadapter-contour.md" %} {% include "netadapter-istio.md" %} {% include "netadapter-gatewayapi.md" %} -{% endfilter %} ## Verify the installation From 0674346b3c9d93ebbb4618abe375ad9bd19919cd Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 14:40:00 -0800 Subject: [PATCH 121/146] tab test --- docs/snippets/netadapter-contour.md | 2 +- docs/snippets/netadapter-gatewayapi.md | 2 +- docs/snippets/netadapter-istio.md | 2 +- docs/snippets/netadapter-kourier.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/snippets/netadapter-contour.md b/docs/snippets/netadapter-contour.md index 8536e232a5..326fbeb8c0 100644 --- a/docs/snippets/netadapter-contour.md +++ b/docs/snippets/netadapter-contour.md @@ -1,7 +1,7 @@ -=== "Contour" + === "Contour" Use the following steps to install and enable Contour and set it as the ingress controller. diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index 7f212500e7..0208eee699 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -1,7 +1,7 @@ -=== "Gateway API" + === "Gateway API" Use the following steps to install and configure the Knative Gateway API adapter. Note that you need to have a [Gateway API implementation](https://gateway-api.sigs.k8s.io/implementations/) installed in your cluster. The Knative team currently tests the Istio, Contour, and Envoy-Gateway implementations of Gateway API. diff --git a/docs/snippets/netadapter-istio.md b/docs/snippets/netadapter-istio.md index 926bbd6850..9607f5f1c8 100644 --- a/docs/snippets/netadapter-istio.md +++ b/docs/snippets/netadapter-istio.md @@ -1,7 +1,7 @@ -=== "Istio" + === "Istio" Use the following steps to install Istio and set it as the ingress controller. diff --git a/docs/snippets/netadapter-kourier.md b/docs/snippets/netadapter-kourier.md index b611a752c8..8539e05e8a 100644 --- a/docs/snippets/netadapter-kourier.md +++ b/docs/snippets/netadapter-kourier.md @@ -1,7 +1,7 @@ -=== "Kourier" + === "Kourier" Use the following steps to install Kourier and set it as the ingress controller. From 57ac62fa29a5742cb7bbf1731ca78f92fb15ae01 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 14:45:22 -0800 Subject: [PATCH 122/146] A hopeful test --- docs/snippets/netadapter-contour.md | 2 -- docs/snippets/netadapter-gatewayapi.md | 2 -- docs/snippets/netadapter-istio.md | 2 -- docs/snippets/netadapter-kourier.md | 2 -- .../install/yaml-install/serving/install-serving-with-yaml.md | 4 ++++ 5 files changed, 4 insertions(+), 8 deletions(-) diff --git a/docs/snippets/netadapter-contour.md b/docs/snippets/netadapter-contour.md index 326fbeb8c0..6702652b09 100644 --- a/docs/snippets/netadapter-contour.md +++ b/docs/snippets/netadapter-contour.md @@ -1,8 +1,6 @@ - === "Contour" - Use the following steps to install and enable Contour and set it as the ingress controller. 1. Install the Knative Contour configuration: diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index 0208eee699..7e72ee6e85 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -1,8 +1,6 @@ - === "Gateway API" - Use the following steps to install and configure the Knative Gateway API adapter. Note that you need to have a [Gateway API implementation](https://gateway-api.sigs.k8s.io/implementations/) installed in your cluster. The Knative team currently tests the Istio, Contour, and Envoy-Gateway implementations of Gateway API. 1. Install the Knative Gateway API: diff --git a/docs/snippets/netadapter-istio.md b/docs/snippets/netadapter-istio.md index 9607f5f1c8..ed9eac9bcd 100644 --- a/docs/snippets/netadapter-istio.md +++ b/docs/snippets/netadapter-istio.md @@ -1,8 +1,6 @@ - === "Istio" - Use the following steps to install Istio and set it as the ingress controller. 1. Install a properly configured Istio: diff --git a/docs/snippets/netadapter-kourier.md b/docs/snippets/netadapter-kourier.md index 8539e05e8a..9133013b39 100644 --- a/docs/snippets/netadapter-kourier.md +++ b/docs/snippets/netadapter-kourier.md @@ -1,8 +1,6 @@ - === "Kourier" - Use the following steps to install Kourier and set it as the ingress controller. 1. Install the Knative Kourier controller: diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index 4beb6ee904..a791cbd61c 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -43,9 +43,13 @@ To install the Knative Serving component: Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see [Configure Knative networking](../../../serving/config-network-adapters.md). +=== "Kourier" {% include "netadapter-kourier.md" %} +=== "Contour" {% include "netadapter-contour.md" %} +=== "Istio" {% include "netadapter-istio.md" %} +=== "Gateway API" {% include "netadapter-gatewayapi.md" %} ## Verify the installation From 7f0a3cdae5a0e8d50ee79a500680608545865e45 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 14:58:52 -0800 Subject: [PATCH 123/146] Tab test with indent filter --- docs/snippets/netadapter-contour.md | 5 ++--- docs/snippets/netadapter-gatewayapi.md | 4 ++-- docs/snippets/netadapter-istio.md | 10 +++++----- docs/snippets/netadapter-kourier.md | 4 ++-- .../yaml-install/serving/install-serving-with-yaml.md | 9 +++++++++ 5 files changed, 20 insertions(+), 12 deletions(-) diff --git a/docs/snippets/netadapter-contour.md b/docs/snippets/netadapter-contour.md index 6702652b09..5945a4e969 100644 --- a/docs/snippets/netadapter-contour.md +++ b/docs/snippets/netadapter-contour.md @@ -1,8 +1,8 @@ - Use the following steps to install and enable Contour and set it as the ingress controller. - +Use the following steps to install and enable Contour and set it as the ingress controller. + 1. Install the Knative Contour configuration: ```bash @@ -29,4 +29,3 @@ ```bash kubectl --namespace contour-external get service envoy ``` - \ No newline at end of file diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index 7e72ee6e85..59eb2a1586 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -1,8 +1,8 @@ - Use the following steps to install and configure the Knative Gateway API adapter. Note that you need to have a [Gateway API implementation](https://gateway-api.sigs.k8s.io/implementations/) installed in your cluster. The Knative team currently tests the Istio, Contour, and Envoy-Gateway implementations of Gateway API. - +Use the following steps to install and configure the Knative Gateway API adapter. Note that you need to have a [Gateway API implementation](https://gateway-api.sigs.k8s.io/implementations/) installed in your cluster. The Knative team currently tests the Istio, Contour, and Envoy-Gateway implementations of Gateway API. + 1. Install the Knative Gateway API: ```bash diff --git a/docs/snippets/netadapter-istio.md b/docs/snippets/netadapter-istio.md index ed9eac9bcd..373e61e46e 100644 --- a/docs/snippets/netadapter-istio.md +++ b/docs/snippets/netadapter-istio.md @@ -1,7 +1,7 @@ - Use the following steps to install Istio and set it as the ingress controller. +Use the following steps to install Istio and set it as the ingress controller. 1. Install a properly configured Istio: @@ -23,10 +23,10 @@ 1. Configure the `config-network` ConfigMap to use Istio: ```bash - kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"istio.ingress.networking.knative.dev"}}' + kubectl patch configmap/config-network \ + --namespace knative-serving \ + --type merge \ + --patch '{"data":{"ingress-class":"istio.ingress.networking.knative.dev"}}' ``` 1. Get the external IP address (FQDN) to later configure DNS: diff --git a/docs/snippets/netadapter-kourier.md b/docs/snippets/netadapter-kourier.md index 9133013b39..4ace502e64 100644 --- a/docs/snippets/netadapter-kourier.md +++ b/docs/snippets/netadapter-kourier.md @@ -1,12 +1,12 @@ - Use the following steps to install Kourier and set it as the ingress controller. +Use the following steps to install Kourier and set it as the ingress controller. 1. Install the Knative Kourier controller: ```bash - kubectl apply -f {{ artifact(repo="net-kourier",org="knative-extensions", file="kourier.yaml") }} + kubectl apply -f {{ artifact(repo="net-kourier",org="knative-extensions", file="kourier.yaml") }} ``` 1. Configure Knative Serving to use Kourier by default: diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index a791cbd61c..c231e8e5cb 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -44,13 +44,22 @@ To install the Knative Serving component: Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see [Configure Knative networking](../../../serving/config-network-adapters.md). === "Kourier" +{% filter indent(width=4) %} {% include "netadapter-kourier.md" %} +{% endfilter %} === "Contour" +{% filter indent(width=4) %} {% include "netadapter-contour.md" %} +{% endfilter %} === "Istio" +{% filter indent(width=4) %} {% include "netadapter-istio.md" %} +{% endfilter %} === "Gateway API" +{% filter indent(width=4) %} {% include "netadapter-gatewayapi.md" %} +{% endfilter %} + ## Verify the installation From 087728b65d15dd193d9b73e68ce6a33d4a1177db Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 17:20:44 -0800 Subject: [PATCH 124/146] Indent test --- docs/snippets/netadapter-contour.md | 52 ++++++++++++++--------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/snippets/netadapter-contour.md b/docs/snippets/netadapter-contour.md index 5945a4e969..a1d56ef23f 100644 --- a/docs/snippets/netadapter-contour.md +++ b/docs/snippets/netadapter-contour.md @@ -3,29 +3,29 @@ --> Use the following steps to install and enable Contour and set it as the ingress controller. - 1. Install the Knative Contour configuration: - - ```bash - kubectl apply -f {{ artifact(repo="net-contour",org="knative-extensions",file="contour.yaml")}} - ``` - - 1. Install the Knative Contour integration controller: - - ```bash - kubectl apply -f {{ artifact(repo="net-contour",org="knative-extensions",file="net-contour.yaml")}} - ``` - - 1. Configure Knative Serving to use Contour: - - ```bash - kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"contour.ingress.networking.knative.dev"}}' - ``` - - 1. Get the external IP address (FQDN) to later configure DNS: - - ```bash - kubectl --namespace contour-external get service envoy - ``` +1. Install the Knative Contour configuration: + + ```bash + kubectl apply -f {{ artifact(repo="net-contour",org="knative-extensions",file="contour.yaml")}} + ``` + +1. Install the Knative Contour integration controller: + + ```bash + kubectl apply -f {{ artifact(repo="net-contour",org="knative-extensions",file="net-contour.yaml")}} + ``` + +1. Configure Knative Serving to use Contour: + + ```bash + kubectl patch configmap/config-network \ + --namespace knative-serving \ + --type merge \ + --patch '{"data":{"ingress-class":"contour.ingress.networking.knative.dev"}}' + ``` + +1. Get the external IP address (FQDN) to later configure DNS: + + ```bash + kubectl --namespace contour-external get service envoy + ``` From c8d8a94202e9e3cad648cba6887f21bf6a7d6c7d Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 18:31:24 -0800 Subject: [PATCH 125/146] Test edit to rebuild --- docs/snippets/netadapter-kourier.md | 41 ++++++++++++++--------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/docs/snippets/netadapter-kourier.md b/docs/snippets/netadapter-kourier.md index 4ace502e64..9316f06b06 100644 --- a/docs/snippets/netadapter-kourier.md +++ b/docs/snippets/netadapter-kourier.md @@ -3,24 +3,23 @@ --> Use the following steps to install Kourier and set it as the ingress controller. - 1. Install the Knative Kourier controller: - - ```bash - kubectl apply -f {{ artifact(repo="net-kourier",org="knative-extensions", file="kourier.yaml") }} - ``` - - 1. Configure Knative Serving to use Kourier by default: - - ```bash - kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}' - ``` - - 1. Get the external IP address (FQDN) to later configure DNS: - - ```bash - kubectl --namespace kourier-system get service kourier - ``` - \ No newline at end of file +1. Install the Knative Kourier controller: + + ```bash + kubectl apply -f {{ artifact(repo="net-kourier",org="knative-extensions", file="kourier.yaml") }} + ``` + +1. Configure Knative Serving to use Kourier by default: + + ```bash + kubectl patch configmap/config-network \ + --namespace knative-serving \ + --type merge \ + --patch '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}' + ``` + +1. Get the external IP address (FQDN) to later configure DNS: + + ```bash + kubectl --namespace kourier-system get service kourier + ``` \ No newline at end of file From 07f9f94f543d01711abc54727abcb0c865b060d3 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 19:40:02 -0800 Subject: [PATCH 126/146] Install snippets and DNS snippets Indentation formatting, wordsmithing --- docs/snippets/dns.md | 17 +-- docs/snippets/netadapter-gatewayapi.md | 107 +++++++++--------- docs/snippets/netadapter-istio.md | 59 +++++----- docs/snippets/netadapter-kourier.md | 2 +- docs/snippets/no-dns.md | 7 +- docs/snippets/real-dns-yaml.md | 44 ++++--- .../serving/install-serving-with-yaml.md | 16 ++- 7 files changed, 124 insertions(+), 128 deletions(-) diff --git a/docs/snippets/dns.md b/docs/snippets/dns.md index 609e19a266..5b1d1219a5 100644 --- a/docs/snippets/dns.md +++ b/docs/snippets/dns.md @@ -2,17 +2,10 @@ - install/operator/knative-with-operators.md - install/yaml-install/serving/install-serving-with-yaml.md --> -You can configure DNS to avoid specifying the host header in curl commands, or to access the content with a web browser. +Knative provides a Kubernetes Job called `default-domain` that configures Knative Serving to use [sslip.io](http://sslip.io) as the default DNS suffix. -The following tabs show instructions for configuring DNS. Follow the procedure for the DNS of your choice: +```bash +kubectl apply -f {{artifact(repo="serving",file="serving-default-domain.yaml")}} +``` -=== "Magic DNS (sslip.io)" - - Knative provides a Kubernetes Job called `default-domain` that configures Knative Serving to use [sslip.io](http://sslip.io) as the default DNS suffix. - - ```bash - kubectl apply -f {{artifact(repo="serving",file="serving-default-domain.yaml")}} - ``` - - This configuration works only if the cluster `LoadBalancer` Service exposes an IPv4 address or hostname. It does not work with IPv6 clusters or local setups such as minikube unless the [`minikube tunnel`](https://minikube.sigs.k8s.io/docs/commands/tunnel/) is running. - \ No newline at end of file +This configuration works only if the cluster `LoadBalancer` Service exposes an IPv4 address or hostname. It does not work with IPv6 clusters or local setups such as minikube unless the [`minikube tunnel`](https://minikube.sigs.k8s.io/docs/commands/tunnel/) is running. diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index 59eb2a1586..06194eec5d 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -3,57 +3,56 @@ --> Use the following steps to install and configure the Knative Gateway API adapter. Note that you need to have a [Gateway API implementation](https://gateway-api.sigs.k8s.io/implementations/) installed in your cluster. The Knative team currently tests the Istio, Contour, and Envoy-Gateway implementations of Gateway API. - 1. Install the Knative Gateway API: - - ```bash - kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateway-api.yaml") }} - ``` - - Alternatively, you can also install a preconfigured Gateways for either Contour or Istio. Replace the filename in this step with either `contour-gateway.yaml` or `istio-gateway.yaml`. If you do this, you can skip step 3. - - 1. Configure Knative Serving to use the Knative Gateway API ingress class: - - ```bash - kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"gateway-api.ingress.networking.knative.dev"}}' - ``` - - 1. Create Gateway resources for use by external ("north-south") Knative traffic, and local ("east-west") traffic. If you do not need separate routing for local traffic (or [private Knative services](../../../serving/services/private-services.md)), you can use the external Gateway for both. - - Knative verifies traffic settings according to the Kubernetes namespace, the name of the Gateways, and an underlying DNS name such as a Kubernetes service DNS name that corresponds to the Gateway. - - ```bash - cat < \ No newline at end of file +1. Install the Knative Gateway API: + + ```bash + kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateway-api.yaml") }} + ``` + + Alternatively, you can also install a preconfigured Gateways for either Contour or Istio. Replace the filename in this step with either `contour-gateway.yaml` or `istio-gateway.yaml`. If you do this, you can skip step 3. + +1. Configure Knative Serving to use the Knative Gateway API ingress class: + + ```bash + kubectl patch configmap/config-network \ + --namespace knative-serving \ + --type merge \ + --patch '{"data":{"ingress-class":"gateway-api.ingress.networking.knative.dev"}}' + ``` + +1. Create Gateway resources for use by external ("north-south") Knative traffic, and local ("east-west") traffic. If you do not need separate routing for local traffic (or [private Knative services](../../../serving/services/private-services.md)), you can use the external Gateway for both. + + Knative verifies traffic settings according to the Kubernetes namespace, the name of the Gateways, and an underlying DNS name such as a Kubernetes service DNS name that corresponds to the Gateway. + + ```bash + cat < Use the following steps to install Istio and set it as the ingress controller. - 1. Install a properly configured Istio: - - ```bash - kubectl apply -l knative.dev/crd-install=true -f {{ artifact(repo="net-istio",org="knative-extensions",file="istio.yaml") }} - kubectl apply -f {{ artifact(repo="net-istio",org="knative-extensions",file="istio.yaml") }} - ``` - - 1. Install the Knative Istio controller: - - ```bash - kubectl apply -f {{ artifact(repo="net-istio",org="knative-extensions", file="net-istio.yaml") }} - ``` - - - - 1. Configure the `config-network` ConfigMap to use Istio: - - ```bash - kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"istio.ingress.networking.knative.dev"}}' - ``` - - 1. Get the external IP address (FQDN) to later configure DNS: - - ```bash - kubectl --namespace istio-system get service istio-ingressgateway - ``` - \ No newline at end of file +1. Install a properly configured Istio: + + ```bash + kubectl apply -l knative.dev/crd-install=true -f {{ artifact(repo="net-istio",org="knative-extensions",file="istio.yaml") }} + kubectl apply -f {{ artifact(repo="net-istio",org="knative-extensions",file="istio.yaml") }} + ``` + +1. Install the Knative Istio controller: + + ```bash + kubectl apply -f {{ artifact(repo="net-istio",org="knative-extensions", file="net-istio.yaml") }} + ``` + +1. Configure the `config-network` ConfigMap to use Istio: + + ```bash + kubectl patch configmap/config-network \ + --namespace knative-serving \ + --type merge \ + --patch '{"data":{"ingress-class":"istio.ingress.networking.knative.dev"}}' + ``` + +1. Get the external IP address (FQDN) to later configure DNS: + + ```bash + kubectl --namespace istio-system get service istio-ingressgateway + ``` diff --git a/docs/snippets/netadapter-kourier.md b/docs/snippets/netadapter-kourier.md index 9316f06b06..50d47057d3 100644 --- a/docs/snippets/netadapter-kourier.md +++ b/docs/snippets/netadapter-kourier.md @@ -22,4 +22,4 @@ Use the following steps to install Kourier and set it as the ingress controller. ```bash kubectl --namespace kourier-system get service kourier - ``` \ No newline at end of file + ``` diff --git a/docs/snippets/no-dns.md b/docs/snippets/no-dns.md index 69385aa2a1..558903b59d 100644 --- a/docs/snippets/no-dns.md +++ b/docs/snippets/no-dns.md @@ -4,12 +4,12 @@ --> === "No DNS" - If you are using `curl` to access [the sample applications](/docs/getting-started/first-service/), or your own Knative app, and are unable to use the "Magic DNS (sslip.io)" or "Real DNS" methods, there is a temporary approach. This is useful for those who wish to evaluate Knative without altering their DNS configuration, as per the "Real DNS" method, or cannot use the "Magic DNS" method due to using, - for example, minikube locally or IPv6 clusters. + If you are using `curl` to access [the sample applications](/docs/getting-started/first-service/), or your own Knative app, and are unable to use the "Magic DNS (sslip.io)" or "Real DNS" methods, you can evaluate Knative without altering your DNS configuration. You might have this need if minikube locally or IPv6 clusters. To access your application using `curl` using this method: 1. Configure Knative to use a domain reachable from outside the cluster: + ```bash kubectl patch configmap/config-domain \ --namespace knative-serving \ @@ -18,6 +18,7 @@ ``` 1. After starting your application, get the URL of your application: + ```bash kubectl get ksvc ``` @@ -31,6 +32,7 @@ networking layer mentioned in section 3, and use the `-H "Host:"` command-line option to specify the Knative application's host name. For example, if the networking layer defines your External IP and port to be `http://192.168.39.228:32198` and you wish to access the `helloworld-go` application mentioned earlier, use: + ```bash curl -H "Host: helloworld-go.default.example.com" http://192.168.39.228:32198 ``` @@ -39,4 +41,3 @@ Hello Go Sample v1! ``` Refer to the "Real DNS" method for a permanent solution. - \ No newline at end of file diff --git a/docs/snippets/real-dns-yaml.md b/docs/snippets/real-dns-yaml.md index e542950927..8e64c90de0 100644 --- a/docs/snippets/real-dns-yaml.md +++ b/docs/snippets/real-dns-yaml.md @@ -1,34 +1,28 @@ -=== "Real DNS" +To configure DNS for Knative, take the External IP +or CNAME from setting up networking, and configure it with your DNS provider as +follows: - To configure DNS for Knative, take the External IP - or CNAME from setting up networking, and configure it with your DNS provider as - follows: +- If the networking layer produced an External IP address, then configure a wildcard `A` record for the domain. In the following example, `knative.example.com` is the domain suffix for a cluster. - - If the networking layer produced an External IP address, then configure a - wildcard `A` record for the domain: + ```bash + *.knative.example.com == A 35.233.41.212 + ``` - ``` - # Here knative.example.com is the domain suffix for your cluster - *.knative.example.com == A 35.233.41.212 - ``` +- If the networking layer produced a CNAME, then configure a CNAME record for the domain. In the following example, `knative.example.com` is the domain suffix for a cluster. - - If the networking layer produced a CNAME, then configure a CNAME record for the domain: + ```bash + *.knative.example.com == CNAME a317a278525d111e89f272a164fd35fb-1510370581.eu-central-1.elb.amazonaws.com + ``` - ``` - # Here knative.example.com is the domain suffix for your cluster - *.knative.example.com == CNAME a317a278525d111e89f272a164fd35fb-1510370581.eu-central-1.elb.amazonaws.com - ``` +- After your DNS provider has been configured, direct Knative to use that domain: - - Once your DNS provider has been configured, direct Knative to use that domain: - - ```yaml - # Replace knative.example.com with your domain suffix - kubectl patch configmap/config-domain \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"knative.example.com":""}}' - ``` - \ No newline at end of file + ```yaml + # Replace knative.example.com with your domain suffix + kubectl patch configmap/config-domain \ + --namespace knative-serving \ + --type merge \ + --patch '{"data":{"knative.example.com":""}}' + ``` diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index c231e8e5cb..410eb3bdd9 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -84,9 +84,23 @@ Expand the following tabs for instructions on installing network layers. For an ## Configure DNS +You can configure DNS to avoid specifying the host header in curl commands, or to access the content with a web browser. + +The following tabs show instructions for configuring DNS. Follow the procedure for the DNS of your choice. + +=== "Magic DNS (sslip.io)" +{% filter indent(width=4) %} {% include "dns.md" %} +{% endfilter %} +=== "Real DNS" +{% filter indent(width=4) %} {% include "real-dns-yaml.md" %} -{% include "no-dns.md" %} +{% endfilter %} +=== "No DNS" +{% filter indent(width=4) %} +{% include "nodns.md" %} +{% endfilter %} + ## Install optional Serving extensions From 726cb825733a5068a5d73012125c181ddc982863 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 19:54:58 -0800 Subject: [PATCH 127/146] Update install-serving-with-yaml.md minor edit to rebuld --- .../install/yaml-install/serving/install-serving-with-yaml.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index 410eb3bdd9..9ff2f04acf 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -101,7 +101,6 @@ The following tabs show instructions for configuring DNS. Follow the procedure f {% include "nodns.md" %} {% endfilter %} - ## Install optional Serving extensions The following tabs expand to show instructions for installing each Serving extension. From cb169ef16950cc7da5f06ec8a3e6c5f1fe26e8a0 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 20:00:59 -0800 Subject: [PATCH 128/146] file name fix --- .../install/yaml-install/serving/install-serving-with-yaml.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index 9ff2f04acf..017681a425 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -98,7 +98,7 @@ The following tabs show instructions for configuring DNS. Follow the procedure f {% endfilter %} === "No DNS" {% filter indent(width=4) %} -{% include "nodns.md" %} +{% include "no-dns.md" %} {% endfilter %} ## Install optional Serving extensions From 75ba64cd2141455c124059dc3942fc9c3307d451 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 21:01:30 -0800 Subject: [PATCH 129/146] Format fixes and rerognization Misc edits --- docs/snippets/no-dns.md | 78 +++++++++---------- .../serving/config-network-adapters.md | 33 ++++---- 2 files changed, 53 insertions(+), 58 deletions(-) diff --git a/docs/snippets/no-dns.md b/docs/snippets/no-dns.md index 558903b59d..74314c0588 100644 --- a/docs/snippets/no-dns.md +++ b/docs/snippets/no-dns.md @@ -2,42 +2,42 @@ - install/operator/knative-with-operators.md - install/yaml-install/serving/install-serving-with-yaml.md --> -=== "No DNS" - - If you are using `curl` to access [the sample applications](/docs/getting-started/first-service/), or your own Knative app, and are unable to use the "Magic DNS (sslip.io)" or "Real DNS" methods, you can evaluate Knative without altering your DNS configuration. You might have this need if minikube locally or IPv6 clusters. - - To access your application using `curl` using this method: - - 1. Configure Knative to use a domain reachable from outside the cluster: - - ```bash - kubectl patch configmap/config-domain \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"example.com":""}}' - ``` - - 1. After starting your application, get the URL of your application: - - ```bash - kubectl get ksvc - ``` - The output should be similar to: - ```bash - NAME URL LATESTCREATED LATESTREADY READY REASON - helloworld-go http://helloworld-go.default.example.com helloworld-go-vqjlf helloworld-go-vqjlf True - ``` - - 1. Instruct `curl` to connect to the External IP or CNAME defined by the - networking layer mentioned in section 3, and use the `-H "Host:"` command-line - option to specify the Knative application's host name. - For example, if the networking layer defines your External IP and port to be `http://192.168.39.228:32198` and you wish to access the `helloworld-go` application mentioned earlier, use: - - ```bash - curl -H "Host: helloworld-go.default.example.com" http://192.168.39.228:32198 - ``` - In the case of the provided `helloworld-go` sample application, using the default configuration, the output is: - ``` - Hello Go Sample v1! - ``` - Refer to the "Real DNS" method for a permanent solution. +If you are using `curl` to access [the sample applications](/docs/getting-started/first-service/), or your own Knative app, and are unable to use the "Magic DNS (sslip.io)" or "Real DNS" methods, you can evaluate Knative without altering your DNS configuration. You might have this need if minikube locally or IPv6 clusters. + +To access your application using `curl` using this method: + +1. Configure Knative to use a domain reachable from outside the cluster: + + ```bash + kubectl patch configmap/config-domain \ + --namespace knative-serving \ + --type merge \ + --patch '{"data":{"example.com":""}}' + ``` + +1. After starting your application, get the URL of your application: + + ```bash + kubectl get ksvc + ``` + + The output should be similar to: + + ```bash + NAME URL LATESTCREATED LATESTREADY READY REASON + helloworld-go http://helloworld-go.default.example.com helloworld-go-vqjlf helloworld-go-vqjlf True + ``` + +1. Instruct `curl` to connect to the External IP or CNAME defined by the networking layer mentioned in section 3, and use the `-H "Host:"` command-line option to specify the Knative application's host name. For example, if the networking layer defines your External IP and port to be `http://192.168.39.228:32198` and you wish to access the `helloworld-go` application mentioned earlier, use: + + ```bash + curl -H "Host: helloworld-go.default.example.com" http://192.168.39.228:32198 + ``` + + In the case of the provided `helloworld-go` sample application, using the default configuration, the output is: + + ```bash + Hello Go Sample v1! + ``` + + Refer to the "Real DNS" method for a permanent solution. diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 6cee6be69e..c7b368f9a0 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -15,19 +15,6 @@ For installation instructions, see [Install serving with YAML](../install/yaml-i Review the tabbed content in this section to determine the optimal networking layer for your cluster. If you already have one of the ingress controllers installed in your cluster, we recommend using your existing installation. For most users without a supported ingress, the Kourier ingress controller is sufficient. You can expand your capabilities with the Contour ingress, a full-feature service mesh with Istio, and the Kubernetes Gateway API. -The Knative tested ingress controllers (Contour, Istio, and Kourier) have the following common configurations: - -- Certificate management: Configurable secrets for TLS encrypted traffic. See [Using a custom TLS certificate for DomainMapping](./services/custom-tls-certificate-domain-mapping.md). -- Timeout policies: Controls for idle, and response stream timeouts. To review timeout settings, see [Configuring the Defaults ConfigMap](./configuration/config-defaults.md). -- Traffic visibility: Mechanisms to expose services externally or cluster-locally. See [Traffic management](./traffic-management.md). -- The mapping of Route objects to `networking.internal.knative.dev` objects is common to these controllers. - -The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. - -In scenarios where there are multiple networking implementations, you can create a custom ingress class to specify different ingress class annotations for each service. For more information, see [Configuring Services custom ingress class](./services/ingress-class.md). - -There are also third-party Knative networking options and Knative products available but are not tested or managed by the Knative community. For more information, see [Knative offerings](../install/knative-offerings.md). - === "Kourier" Knative Serving network layer architecture: @@ -134,12 +121,7 @@ There are also third-party Knative networking options and Knative products avail The Contour ingress controller, `net-contour`, bridges Knative's KIngress resources to Contour's HTTPProxy resources. Contour is a good choice for clusters that already run non-Knative apps, are already using a Contour envoy, or don't need a full-feature service mesh. - Contour provides the following additional configuration options: - - - CORS policy configuration. - - Direct visibility classes for external and internal traffic. - - Contour also supports several cluster-wide configuration options. For more information see the [Contour Configuration Reference](https://projectcontour.io/docs/1.33/configuration/). + You can include the full native Contour configuration as described in the [Contour Configuration Reference](https://projectcontour.io/docs/1.33/configuration/). Capabilities include CORS policy configuration, direct visibility classes for external and internal traffic, and several cluster-wide configuration options. === "Istio" @@ -237,6 +219,15 @@ There are also third-party Knative networking options and Knative products avail ## Ingress configurations +The Knative tested ingress controllers (Contour, Istio, and Kourier) have the following common configurations: + +- Certificate management: Configurable secrets for TLS encrypted traffic. See [Using a custom TLS certificate for DomainMapping](./services/custom-tls-certificate-domain-mapping.md). +- Timeout policies: Controls for idle, and response stream timeouts. To review timeout settings, see [Configuring the Defaults ConfigMap](./configuration/config-defaults.md). +- Traffic visibility: Mechanisms to expose services externally or cluster-locally. See [Traffic management](./traffic-management.md). +- The mapping of Route objects to `networking.internal.knative.dev` objects is common to these controllers. + +The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. + Use the following command to determine which ingress controllers are installed and their status. ``` bash @@ -280,6 +271,10 @@ kubectl patch configmap config-network -n knative-serving \ If you want to install a new controller, see [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md). Be aware that changing the Ingress class of an existing Route may result in undefined behavior. +In scenarios where there are multiple networking implementations, you can create a custom ingress class to specify different ingress class annotations for each service. For more information, see [Configuring Services custom ingress class](./services/ingress-class.md). + +There are also third-party Knative networking options and Knative products available but are not tested or managed by the Knative community. For more information, see [Knative offerings](../install/knative-offerings.md). + ## Gateway configurations Knative assumes two gateways in the cluster: From d804895e917161e4e62e75100e5ab3177fffdc63 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 21:18:08 -0800 Subject: [PATCH 130/146] formatting fixes --- .../install/yaml-install/serving/install-serving-with-yaml.md | 3 +-- docs/versioned/serving/config-network-adapters.md | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index 017681a425..6ffd7e3107 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -41,7 +41,7 @@ To install the Knative Serving component: ## Install a networking layer -Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see [Configure Knative networking](../../../serving/config-network-adapters.md). +Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see the Network layer options in [Configure Knative networking](../../../serving/config-network-adapters.md#network-layer-options). === "Kourier" {% filter indent(width=4) %} @@ -60,7 +60,6 @@ Expand the following tabs for instructions on installing network layers. For an {% include "netadapter-gatewayapi.md" %} {% endfilter %} - ## Verify the installation !!! success diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index c7b368f9a0..22267ddc58 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -308,7 +308,7 @@ flowchart LR style ExternalClient fill:#f0f8ff,stroke:#333 style InternalClient fill:#f0fff0,stroke:#333 style Cluster stroke:#333,stroke-width:3px,stroke-dasharray: 5 5 -``` +``` To install the Gateway API and configure the gateways, see the Gateway API tab in [Install a networking layer](../install/yaml-install/serving/install-serving-with-yaml.md#install-a-networking-layer). From ce7742ed144653a214617ce4ced40678cb1bc461 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 21:25:01 -0800 Subject: [PATCH 131/146] Link improvment minor edit --- docs/versioned/serving/config-network-adapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 22267ddc58..edad357807 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -9,7 +9,7 @@ function: how-to This page provides configuration guidance for Knative Serving's integration with Kubernetes ingress controllers. Knative leverages existing ingress controls in your Kubernetes cluster, allowing you to use the same monitoring features and capabilities. -For installation instructions, see [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md). +For installation instructions, see the network layer install instructions in [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md#install-a-networking-layer). ## Network layer options From 1927664988decaba9303c62b34736b5470954c27 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 21:55:38 -0800 Subject: [PATCH 132/146] link format edits Edit to rebuild --- .../install/yaml-install/serving/install-serving-with-yaml.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index 6ffd7e3107..657e29b75b 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -41,7 +41,7 @@ To install the Knative Serving component: ## Install a networking layer -Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see the Network layer options in [Configure Knative networking](../../../serving/config-network-adapters.md#network-layer-options). +Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see the network layer options in [Configure Knative networking](../../../serving/config-network-adapters.md#network-layer-options). === "Kourier" {% filter indent(width=4) %} From 1a4ba6c7db7ac389ea735edd230be59527f059b3 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Thu, 8 Jan 2026 22:10:40 -0800 Subject: [PATCH 133/146] Update netadapter-gatewayapi.md Steps rearrangement --- docs/snippets/netadapter-gatewayapi.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index 06194eec5d..f536831317 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -9,18 +9,9 @@ Use the following steps to install and configure the Knative Gateway API adapter kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateway-api.yaml") }} ``` - Alternatively, you can also install a preconfigured Gateways for either Contour or Istio. Replace the filename in this step with either `contour-gateway.yaml` or `istio-gateway.yaml`. If you do this, you can skip step 3. + Alternatively, you can also install a preconfigured Gateways for either Contour or Istio. Replace the filename in this step with either `contour-gateway.yaml` or `istio-gateway.yaml`. If you use either file you can skip the next step to configure gateway resources. -1. Configure Knative Serving to use the Knative Gateway API ingress class: - - ```bash - kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"gateway-api.ingress.networking.knative.dev"}}' - ``` - -1. Create Gateway resources for use by external ("north-south") Knative traffic, and local ("east-west") traffic. If you do not need separate routing for local traffic (or [private Knative services](../../../serving/services/private-services.md)), you can use the external Gateway for both. +1. Configure Gateway resources for use by external ("north-south") Knative traffic, and local ("east-west") traffic. If you do not need separate routing for local traffic (or [private Knative services](../../../serving/services/private-services.md)), you can use the external Gateway for both. Knative verifies traffic settings according to the Kubernetes namespace, the name of the Gateways, and an underlying DNS name such as a Kubernetes service DNS name that corresponds to the Gateway. @@ -43,6 +34,15 @@ Use the following steps to install and configure the Knative Gateway API adapter EOF ``` +1. Configure Knative Serving to use the Knative Gateway API ingress class: + + ```bash + kubectl patch configmap/config-network \ + --namespace knative-serving \ + --type merge \ + --patch '{"data":{"ingress-class":"gateway-api.ingress.networking.knative.dev"}}' + ``` + 1. Verify the `config-gateway` ConfigMap: ```bash From 2db4fc10b79041ff150632ef64716820fa801194 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 11 Jan 2026 15:22:19 -0800 Subject: [PATCH 134/146] Processed reviewer edits --- docs/snippets/netadapter-gatewayapi.md | 8 +++++-- .../serving/config-network-adapters.md | 22 +++++++++++++------ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index f536831317..19f88558dc 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -1,6 +1,8 @@ +This component in beta. For the latest information including supported implementations, see the [Knative net-gateway-api](https://github.com/knative-extensions/net-gateway-api). + Use the following steps to install and configure the Knative Gateway API adapter. Note that you need to have a [Gateway API implementation](https://gateway-api.sigs.k8s.io/implementations/) installed in your cluster. The Knative team currently tests the Istio, Contour, and Envoy-Gateway implementations of Gateway API. 1. Install the Knative Gateway API: @@ -9,7 +11,7 @@ Use the following steps to install and configure the Knative Gateway API adapter kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateway-api.yaml") }} ``` - Alternatively, you can also install a preconfigured Gateways for either Contour or Istio. Replace the filename in this step with either `contour-gateway.yaml` or `istio-gateway.yaml`. If you use either file you can skip the next step to configure gateway resources. + 1. Configure Gateway resources for use by external ("north-south") Knative traffic, and local ("east-west") traffic. If you do not need separate routing for local traffic (or [private Knative services](../../../serving/services/private-services.md)), you can use the external Gateway for both. @@ -46,9 +48,11 @@ Use the following steps to install and configure the Knative Gateway API adapter 1. Verify the `config-gateway` ConfigMap: ```bash - kubectl get configmap config-gateway -n knative-serving -o yaml + kubectl describe configmaps config-gateway -n knative-serving ``` + Examine the values for the `externals-gateways` and `local-gateways` keys. + 1. Get the external IP address (FQDN) to configure DNS records: ```bash diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index edad357807..c8dd5abdf2 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -11,6 +11,9 @@ This page provides configuration guidance for Knative Serving's integration with For installation instructions, see the network layer install instructions in [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md#install-a-networking-layer). +The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. KIngress is a common abstraction used to support all the different ingress implementations. It is a custom resource with the name ingresses and apiGroup `networking.internal.knative.dev`. + + ## Network layer options Review the tabbed content in this section to determine the optimal networking layer for your cluster. If you already have one of the ingress controllers installed in your cluster, we recommend using your existing installation. For most users without a supported ingress, the Kourier ingress controller is sufficient. You can expand your capabilities with the Contour ingress, a full-feature service mesh with Istio, and the Kubernetes Gateway API. @@ -48,8 +51,8 @@ Review the tabbed content in this section to determine the optimal networking la flowchart LR subgraph bottom[" "] direction LR - envoy["Envoy deployment
kourier-system namespace"] - kourier["net-kourier
controller"] + envoy("Envoy deployment
kourier-system namespace") + kourier("net-kourier
controller") kingress2["KIngress class:
kourier.ingress.networking.knative.dev"] end kingress2 -- read by --> kourier @@ -60,7 +63,7 @@ Review the tabbed content in this section to determine the optimal networking la style bottom fill:transparent ``` - Kourier is a lightweight implementation of the KIngress resource and is suitable for clusters that don't need other ingress features. Kourier is optimal for learning and prototyping, and is installed by the Knative [Quickstart](../getting-started/README.md). + [Kourier](https://github.com/knative-extensions/net-kourier/blob/main/README.md#deployment), a Knative extension, is a lightweight implementation of the KIngress resource and is suitable for clusters that don't need other ingress features. Kourier is optimal for learning and prototyping, and is installed by the Knative [Quickstart](../getting-started/README.md). Kourier is is the only supported option for IBM-Z and IBM-P platforms. These IBM platforms require additional steps as documented in [Install Serving with YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). @@ -194,7 +197,7 @@ Review the tabbed content in this section to determine the optimal networking la theme: default --- flowchart LR - net-gateway["net-gateway-api controller"] + net-gateway("net-gateway-api
controller") GW["Gateway"] KIngress["KIngress objects"] HR["HTTPRoute"] @@ -215,7 +218,9 @@ Review the tabbed content in this section to determine the optimal networking la The Knative `net-gateway-api` is a KIngress implementation for Knative integration with the [Kubernetes Gateway API](https://gateway-api.sigs.k8s.io/). A recommended choice for many teams adopting the Gateway API to unify ingress across Kubernetes. Clusters with large numbers of Knative Services however, may experience limitations. - The Kubernetes Gateway API requires a controller or service mesh. Istio and Contour implementations are tested. For more information see [Tested Gateway API version and Ingress](https://github.com/knative-extensions/net-gateway-api/blob/main/docs/test-version.md). + The Kubernetes Gateway API supports a number of implementations. Istio, Contour, and Envoy-Gateway implementations are tested. For more information see [Tested Gateway API version and Ingress](https://github.com/knative-extensions/net-gateway-api/blob/main/docs/test-version.md). + + Knative is designed to support attaching Gateway API policies to both Knative-created HTTPRoutes and the existing Gateway resources which manage with those routes. ## Ingress configurations @@ -226,7 +231,7 @@ The Knative tested ingress controllers (Contour, Istio, and Kourier) have the fo - Traffic visibility: Mechanisms to expose services externally or cluster-locally. See [Traffic management](./traffic-management.md). - The mapping of Route objects to `networking.internal.knative.dev` objects is common to these controllers. -The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. + Use the following command to determine which ingress controllers are installed and their status. @@ -237,8 +242,9 @@ kubectl get pods -n knative-serving The ingress controllers have the following names: - Kourier: `kourier-control-*`, and `kourier-gateway-*`. Kourier is included in the Knative Serving installation should appear in the results when your cluster is first created. -- Contour: `contour-*` +- Contour: `contour-*`. - Istio: `istio-webhook-*`. The main Istio control plane pods such as `istiod-*` are in the `istio-system` namespace. Knative adds the `istio-webhook-*` pod in the `knative-serving` namespace when Istio is the chosen networking layer. +- Gateway API: `net-gateway-api-*`. Created whenever Gateway API KIngress class is available. Each ingress controller manages only those ingress objects that are annotated with its key. Knative Serving selects the controller based on the rules in the `network-config` ConfigMap. @@ -277,6 +283,8 @@ There are also third-party Knative networking options and Knative products avail ## Gateway configurations +The configurations in this section apply only to an Gateway API implementation. + Knative assumes two gateways in the cluster: - Externally exposed - defines the gateway for external traffic. From 4f928232268b940be23da235010aa65ce9baca25 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 11 Jan 2026 17:41:30 -0800 Subject: [PATCH 135/146] Chart updates And misc edits --- docs/snippets/netadapter-gatewayapi.md | 10 +- .../serving/install-serving-with-yaml.md | 2 +- .../serving/config-network-adapters.md | 94 +++++-------------- 3 files changed, 30 insertions(+), 76 deletions(-) diff --git a/docs/snippets/netadapter-gatewayapi.md b/docs/snippets/netadapter-gatewayapi.md index 19f88558dc..e6c92ac8e8 100644 --- a/docs/snippets/netadapter-gatewayapi.md +++ b/docs/snippets/netadapter-gatewayapi.md @@ -1,19 +1,19 @@ -This component in beta. For the latest information including supported implementations, see the [Knative net-gateway-api](https://github.com/knative-extensions/net-gateway-api). +This component is in beta. For the latest information including supported implementations, see the [Knative net-gateway-api](https://github.com/knative-extensions/net-gateway-api). -Use the following steps to install and configure the Knative Gateway API adapter. Note that you need to have a [Gateway API implementation](https://gateway-api.sigs.k8s.io/implementations/) installed in your cluster. The Knative team currently tests the Istio, Contour, and Envoy-Gateway implementations of Gateway API. +Use the following steps to install and configure the Knative Gateway API controller. Note that you need to have a [Gateway API implementation](https://gateway-api.sigs.k8s.io/implementations/) installed in your cluster. The Knative team currently tests the Istio, Contour, and Envoy-Gateway implementations of Gateway API. 1. Install the Knative Gateway API: ```bash - kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateway-api.yaml") }} + kubectl apply -f {{ artifact(repo="net-gateway-api",org="knative-extensions",file="net-gateway-api.yaml") }} ``` -1. Configure Gateway resources for use by external ("north-south") Knative traffic, and local ("east-west") traffic. If you do not need separate routing for local traffic (or [private Knative services](../../../serving/services/private-services.md)), you can use the external Gateway for both. +1. Configure Gateway resources for external ("north-south") and local ("east-west") Knative traffic. If you do not need separate routing for local traffic (or [private Knative services](../../../serving/services/private-services.md)), you can use the external Gateway for both. Knative verifies traffic settings according to the Kubernetes namespace, the name of the Gateways, and an underlying DNS name such as a Kubernetes service DNS name that corresponds to the Gateway. @@ -59,4 +59,4 @@ Use the following steps to install and configure the Knative Gateway API adapter kubectl get gateway --all-namespaces ``` - Look for the external Gateway (`knative-ingress-gateway`) to get status and address for DNS configuration. + Look for the external Gateway (`knative-ingress-gateway`) to get status and address for DNS configurations. diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index 657e29b75b..57feb3df76 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -41,7 +41,7 @@ To install the Knative Serving component: ## Install a networking layer -Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see the network layer options in [Configure Knative networking](../../../serving/config-network-adapters.md#network-layer-options). +Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see the ingress providers in [Configure Knative networking](../../../serving/config-network-adapters.md#network-layer-options). === "Kourier" {% filter indent(width=4) %} diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index c8dd5abdf2..9d3bbd5338 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -11,36 +11,36 @@ This page provides configuration guidance for Knative Serving's integration with For installation instructions, see the network layer install instructions in [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md#install-a-networking-layer). -The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. KIngress is a common abstraction used to support all the different ingress implementations. It is a custom resource with the name ingresses and apiGroup `networking.internal.knative.dev`. +The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. KIngress is a common abstraction used to support all the different ingress implementations. It is a custom resource with the name ingresses and apiGroup `networking.internal.knative.dev`. This architecture is shown in following diagram. +```mermaid +--- +config: + layout: elk + theme: default +--- +flowchart LR + subgraph top[" "] + direction LR + kingress1["Ingress object (KIngress)
networking.internal.knative.dev"] + serving("Serving
controller") + route["Route object
serving.knative.dev"] + end + route -- read by --> serving + serving -- creates --> kingress1 -## Network layer options - -Review the tabbed content in this section to determine the optimal networking layer for your cluster. If you already have one of the ingress controllers installed in your cluster, we recommend using your existing installation. For most users without a supported ingress, the Kourier ingress controller is sufficient. You can expand your capabilities with the Contour ingress, a full-feature service mesh with Istio, and the Kubernetes Gateway API. + style kingress1 fill:#BBDEFB,stroke-width:1px,stroke-dasharray: 0 + style serving fill:#FFE0B2 + style top fill:transparent +``` -=== "Kourier" +Although Knative uses the same interface for different ingress providers, they behave differently according to their native configurations and additional Knative options specific to the ingress provider. - Knative Serving network layer architecture: +## Ingress providers - ```mermaid - --- - config: - layout: elk - theme: default - --- - flowchart LR - subgraph top[" "] - direction LR - kingress1["Ingress object (KIngress)
networking.internal.knative.dev"] - serving["Serving
controller"] - end - serving -- creates --> kingress1 - style kingress1 fill:#BBDEFB,stroke-width:1px,stroke-dasharray: 0 - style serving fill:#FFE0B2 - style top fill:transparent - ``` +Review the tabbed content in this section to determine the optimal networking layer for your cluster. If you already have one of the ingress controllers installed in your cluster, we recommend using your existing installation. For most users without a supported ingress, the Kourier ingress controller is sufficient. You can expand your capabilities with the Contour ingress, a full-feature service mesh with Istio, and the Kubernetes Gateway API. - Kourier network layer: +=== "Kourier" ```mermaid --- @@ -76,28 +76,6 @@ Review the tabbed content in this section to determine the optimal networking la === "Contour" - Knative Serving network layer architecture: - - ```mermaid - --- - config: - layout: elk - theme: default - --- - flowchart LR - subgraph top[" "] - direction LR - kingress1["Ingress object (KIngress)
networking.internal.knative.dev"] - serving["Serving
controller"] - end - serving -- creates --> kingress1 - style kingress1 fill:#BBDEFB,stroke-width:1px,stroke-dasharray: 0 - style serving fill:#FFE0B2 - style top fill:transparent - ``` - - Contour network layer: - ```mermaid --- config: @@ -128,28 +106,6 @@ Review the tabbed content in this section to determine the optimal networking la === "Istio" - Knative Serving network layer architecture: - - ```mermaid - --- - config: - layout: elk - theme: default - --- - flowchart LR - subgraph top[" "] - direction LR - kingress1["Ingress object (KIngress)
networking.internal.knative.dev"] - serving["Serving
controller"] - end - serving -- creates --> kingress1 - style kingress1 fill:#BBDEFB,stroke-width:1px,stroke-dasharray: 0 - style serving fill:#FFE0B2 - style top fill:transparent - ``` - - Istio network layer: - ```mermaid --- config: @@ -231,8 +187,6 @@ The Knative tested ingress controllers (Contour, Istio, and Kourier) have the fo - Traffic visibility: Mechanisms to expose services externally or cluster-locally. See [Traffic management](./traffic-management.md). - The mapping of Route objects to `networking.internal.knative.dev` objects is common to these controllers. - - Use the following command to determine which ingress controllers are installed and their status. ``` bash From 7b140b752d1ec699b68f340605b86379283cc00e Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 11 Jan 2026 17:55:36 -0800 Subject: [PATCH 136/146] Added diagram headings --- docs/versioned/serving/config-network-adapters.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 9d3bbd5338..27f8e09abe 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -11,7 +11,9 @@ This page provides configuration guidance for Knative Serving's integration with For installation instructions, see the network layer install instructions in [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md#install-a-networking-layer). -The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. KIngress is a common abstraction used to support all the different ingress implementations. It is a custom resource with the name ingresses and apiGroup `networking.internal.knative.dev`. This architecture is shown in following diagram. +The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. KIngress is a common abstraction used to support all the different ingress implementations. It is a custom resource with the name ingresses and apiGroup `networking.internal.knative.dev`. + +Knative Ingress architecture: ```mermaid --- @@ -42,6 +44,8 @@ Review the tabbed content in this section to determine the optimal networking la === "Kourier" + Kourier ingress provider architecture: + ```mermaid --- config: @@ -76,6 +80,8 @@ Review the tabbed content in this section to determine the optimal networking la === "Contour" + Courier ingress provider architecture: + ```mermaid --- config: @@ -106,6 +112,8 @@ Review the tabbed content in this section to determine the optimal networking la === "Istio" + Istio ingress provider architecture: + ```mermaid --- config: @@ -146,6 +154,8 @@ Review the tabbed content in this section to determine the optimal networking la === "Gateway API" + Knative Gateway APU architecture: + ```mermaid --- config: @@ -172,7 +182,7 @@ Review the tabbed content in this section to determine the optimal networking la style underlying fill:#fff3e0,stroke:#ef6c00 ``` - The Knative `net-gateway-api` is a KIngress implementation for Knative integration with the [Kubernetes Gateway API](https://gateway-api.sigs.k8s.io/). A recommended choice for many teams adopting the Gateway API to unify ingress across Kubernetes. Clusters with large numbers of Knative Services however, may experience limitations. + The [Knative net-gateway-api](https://github.com/knative-extensions/net-gateway-api) is a KIngress implementation for Knative integration with the [Kubernetes Gateway API](https://gateway-api.sigs.k8s.io/). A recommended choice for many teams adopting the Gateway API to unify ingress across Kubernetes. Clusters with large numbers of Knative Services however, may experience limitations. The Kubernetes Gateway API supports a number of implementations. Istio, Contour, and Envoy-Gateway implementations are tested. For more information see [Tested Gateway API version and Ingress](https://github.com/knative-extensions/net-gateway-api/blob/main/docs/test-version.md). From c144687ff69de457ed8cea1977e70fcfa9a15b4a Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 11 Jan 2026 17:59:11 -0800 Subject: [PATCH 137/146] minor edit to rebuild --- docs/versioned/serving/config-network-adapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 27f8e09abe..817f533978 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -7,7 +7,7 @@ function: how-to # Configure Knative networking -This page provides configuration guidance for Knative Serving's integration with Kubernetes ingress controllers. Knative leverages existing ingress controls in your Kubernetes cluster, allowing you to use the same monitoring features and capabilities. +This page provides configuration guidance for Knative Serving's integration with Kubernetes ingress controllers and gateway implementations. Knative leverages existing ingress controls in your Kubernetes cluster, allowing you to use the same monitoring features and capabilities. For installation instructions, see the network layer install instructions in [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md#install-a-networking-layer). From 1936a6924381e467a7086062e5dda0bc80e574ca Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 11 Jan 2026 18:14:24 -0800 Subject: [PATCH 138/146] Copy edits --- docs/versioned/serving/config-network-adapters.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 817f533978..b0b89b9a76 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -69,7 +69,7 @@ Review the tabbed content in this section to determine the optimal networking la [Kourier](https://github.com/knative-extensions/net-kourier/blob/main/README.md#deployment), a Knative extension, is a lightweight implementation of the KIngress resource and is suitable for clusters that don't need other ingress features. Kourier is optimal for learning and prototyping, and is installed by the Knative [Quickstart](../getting-started/README.md). - Kourier is is the only supported option for IBM-Z and IBM-P platforms. These IBM platforms require additional steps as documented in [Install Serving with YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). + Kourier is the only supported option for IBM-Z and IBM-P platforms. These IBM platforms require additional steps as documented in [Install Serving with YAML on IBM-Z and IBM-P](../install/yaml-install/serving/install-serving-with-yaml-on-IBM-Z-and-IBM-P.md). Kourier provides the following additional configuration options: @@ -190,13 +190,15 @@ Review the tabbed content in this section to determine the optimal networking la ## Ingress configurations -The Knative tested ingress controllers (Contour, Istio, and Kourier) have the following common configurations: +The Knative tested ingress controllers (Kourier, Contour, and Istio) have the following common configurations: - Certificate management: Configurable secrets for TLS encrypted traffic. See [Using a custom TLS certificate for DomainMapping](./services/custom-tls-certificate-domain-mapping.md). - Timeout policies: Controls for idle, and response stream timeouts. To review timeout settings, see [Configuring the Defaults ConfigMap](./configuration/config-defaults.md). - Traffic visibility: Mechanisms to expose services externally or cluster-locally. See [Traffic management](./traffic-management.md). - The mapping of Route objects to `networking.internal.knative.dev` objects is common to these controllers. +#### Ascertain status and settings + Use the following command to determine which ingress controllers are installed and their status. ``` bash @@ -225,6 +227,8 @@ ingress-class: contour.ingress.networking.knative.dev ingress.class: kourier.ingress.networking.knative.dev ``` +### Changing the controller + If you want to switch to a controller that is already installed, patch the `config-network` ConfigMap with the new controller as shown in the following example using Kourier. ```bash @@ -256,6 +260,8 @@ Knative assumes two gateways in the cluster: Both gateways route traffic to the Knative services inside the cluster. +Knative Gateway API architecture: + ```mermaid --- config: From 5a32d834c8455b740b073aaa59132d58d7f4c11c Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 11 Jan 2026 18:21:30 -0800 Subject: [PATCH 139/146] minor edit to rebuild --- docs/versioned/serving/config-network-adapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index b0b89b9a76..650bed4906 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -11,7 +11,7 @@ This page provides configuration guidance for Knative Serving's integration with For installation instructions, see the network layer install instructions in [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md#install-a-networking-layer). -The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. KIngress is a common abstraction used to support all the different ingress implementations. It is a custom resource with the name ingresses and apiGroup `networking.internal.knative.dev`. +The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. KIngress is a common abstraction used to support different ingress implementations. It is a custom resource with the name ingresses and apiGroup `networking.internal.knative.dev`. Knative Ingress architecture: From 07e51626f7fb889714b5551bb009c226caa74d5b Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 11 Jan 2026 18:31:13 -0800 Subject: [PATCH 140/146] link improvement --- .../install/yaml-install/serving/install-serving-with-yaml.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index 57feb3df76..313228799f 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -41,7 +41,7 @@ To install the Knative Serving component: ## Install a networking layer -Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see the ingress providers in [Configure Knative networking](../../../serving/config-network-adapters.md#network-layer-options). +Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see the [Ingress providers](../../../serving/config-network-adapters.md#ingres-providers) on the Configure Knative Networking page. === "Kourier" {% filter indent(width=4) %} From f6ea3258dfebba1be0c9119f9515458af68d9052 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 11 Jan 2026 18:42:17 -0800 Subject: [PATCH 141/146] Removed erroneous para --- docs/versioned/serving/config-network-adapters.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 650bed4906..a1c3177bd6 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -290,8 +290,6 @@ flowchart LR To install the Gateway API and configure the gateways, see the Gateway API tab in [Install a networking layer](../install/yaml-install/serving/install-serving-with-yaml.md#install-a-networking-layer). -When gateways are installed, the `config-gateway` ConfigMap is updated to track the `class`, `gateway`, and `service`. The service is the Kubernetes Service name that points to the pods in the Gateway implementation. - Use the following command to determine the current configuration: ```bash From 04860527170e26f8424adb69569e701a79a4f6dc Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 11 Jan 2026 18:47:26 -0800 Subject: [PATCH 142/146] link fix --- .../install/yaml-install/serving/install-serving-with-yaml.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index 313228799f..25f9981243 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -41,7 +41,7 @@ To install the Knative Serving component: ## Install a networking layer -Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see the [Ingress providers](../../../serving/config-network-adapters.md#ingres-providers) on the Configure Knative Networking page. +Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see the [ingress providers](../../../serving/config-network-adapters.md##ingress-providers) on the Configure Knative Networking page. === "Kourier" {% filter indent(width=4) %} From 2286c51a7ca3e9fbe2e855a83b24b07e2edfae08 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 11 Jan 2026 18:53:03 -0800 Subject: [PATCH 143/146] link fix again --- .../install/yaml-install/serving/install-serving-with-yaml.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index 25f9981243..97daee897b 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -41,7 +41,7 @@ To install the Knative Serving component: ## Install a networking layer -Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see the [ingress providers](../../../serving/config-network-adapters.md##ingress-providers) on the Configure Knative Networking page. +Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see the [ingress providers](../../../serving/config-network-adapters.md#ingress-providers) on the Configure Knative Networking page. === "Kourier" {% filter indent(width=4) %} From c5de903608f84681797b5582419631089351d059 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 11 Jan 2026 19:01:13 -0800 Subject: [PATCH 144/146] Link tweak --- docs/versioned/serving/config-network-adapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index a1c3177bd6..556f040796 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -9,7 +9,7 @@ function: how-to This page provides configuration guidance for Knative Serving's integration with Kubernetes ingress controllers and gateway implementations. Knative leverages existing ingress controls in your Kubernetes cluster, allowing you to use the same monitoring features and capabilities. -For installation instructions, see the network layer install instructions in [Install serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md#install-a-networking-layer). +For installation instructions, see [Install a networking layer](../install/yaml-install/serving/install-serving-with-yaml.md#install-a-networking-layer) on the Install Serving with YAML page. The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. KIngress is a common abstraction used to support different ingress implementations. It is a custom resource with the name ingresses and apiGroup `networking.internal.knative.dev`. From 98b39272d7fad6bfbf3e879956b7dd5dbc977856 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 11 Jan 2026 19:06:20 -0800 Subject: [PATCH 145/146] typo fix --- docs/versioned/serving/config-network-adapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 556f040796..14c5f277bb 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -9,7 +9,7 @@ function: how-to This page provides configuration guidance for Knative Serving's integration with Kubernetes ingress controllers and gateway implementations. Knative leverages existing ingress controls in your Kubernetes cluster, allowing you to use the same monitoring features and capabilities. -For installation instructions, see [Install a networking layer](../install/yaml-install/serving/install-serving-with-yaml.md#install-a-networking-layer) on the Install Serving with YAML page. +For installation instructions, see [install a networking layer](../install/yaml-install/serving/install-serving-with-yaml.md#install-a-networking-layer) on the Install Serving with YAML page. The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. KIngress is a common abstraction used to support different ingress implementations. It is a custom resource with the name ingresses and apiGroup `networking.internal.knative.dev`. From e73e15c7ef82661b66b360587651a421ef36a8b6 Mon Sep 17 00:00:00 2001 From: Bruce Hamilton Date: Sun, 11 Jan 2026 23:45:57 -0800 Subject: [PATCH 146/146] Link enhanements --- .../install/yaml-install/serving/install-serving-with-yaml.md | 2 +- docs/versioned/serving/config-network-adapters.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md index 97daee897b..22a5842da9 100644 --- a/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md +++ b/docs/versioned/install/yaml-install/serving/install-serving-with-yaml.md @@ -41,7 +41,7 @@ To install the Knative Serving component: ## Install a networking layer -Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see the [ingress providers](../../../serving/config-network-adapters.md#ingress-providers) on the Configure Knative Networking page. +Expand the following tabs for instructions on installing network layers. For an overview of network layer options, architecture, and configurations see the [ingress providers](../../../serving/config-network-adapters.md#ingress-providers) on the [Configure Knative Networking](../../../serving/config-network-adapters.md) page. === "Kourier" {% filter indent(width=4) %} diff --git a/docs/versioned/serving/config-network-adapters.md b/docs/versioned/serving/config-network-adapters.md index 14c5f277bb..c1f6e3fe1f 100644 --- a/docs/versioned/serving/config-network-adapters.md +++ b/docs/versioned/serving/config-network-adapters.md @@ -9,7 +9,7 @@ function: how-to This page provides configuration guidance for Knative Serving's integration with Kubernetes ingress controllers and gateway implementations. Knative leverages existing ingress controls in your Kubernetes cluster, allowing you to use the same monitoring features and capabilities. -For installation instructions, see [install a networking layer](../install/yaml-install/serving/install-serving-with-yaml.md#install-a-networking-layer) on the Install Serving with YAML page. +For installation instructions, see [install a networking layer](../install/yaml-install/serving/install-serving-with-yaml.md#install-a-networking-layer) on the [Install Serving with YAML](../install/yaml-install/serving/install-serving-with-yaml.md) page. The Knative `networking.internal.knative.dev` Ingress type is generally referred to as KIngress objects. KIngress is a common abstraction used to support different ingress implementations. It is a custom resource with the name ingresses and apiGroup `networking.internal.knative.dev`.