Skip to content

Conversation

@iRaindrop
Copy link
Contributor

Need topic to install Gateway-API plugin.

Content derived from https://gateway-api.sigs.k8s.io/guides/

Proposed Changes

  • Create Installing Gateway API to include in the Plugin section for Installing Knative.

@knative-prow
Copy link

knative-prow bot commented Oct 19, 2025

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: iRaindrop
Once this PR has been reviewed and has the lgtm label, please assign dsimansk for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@iRaindrop iRaindrop marked this pull request as draft October 19, 2025 03:02
@knative-prow knative-prow bot requested review from Leo6Leo and dsimansk October 19, 2025 03:02
@knative-prow knative-prow bot added size/M Denotes a PR that changes 30-99 lines, ignoring generated files. do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. labels Oct 19, 2025
@netlify
Copy link

netlify bot commented Oct 19, 2025

Deploy Preview for knative ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit c3bd262
🔍 Latest deploy log https://app.netlify.com/projects/knative/deploys/68f5d7d66e02db0008bb8152
😎 Deploy Preview https://deploy-preview-6459--knative.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@iRaindrop iRaindrop marked this pull request as ready for review October 20, 2025 06:31
@knative-prow knative-prow bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Oct 20, 2025
@knative-prow knative-prow bot requested review from Cali0707 and aliok October 20, 2025 06:31
@Cali0707
Copy link
Member

/cc @dprotaso

@knative-prow knative-prow bot requested a review from dprotaso October 20, 2025 10:43
Copy link
Member

@dprotaso dprotaso left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's a lot of duplicate content that's from the Gateway API website. I don't think we should manually mirror such content here given that it changes all the time.

@evankanderson
Copy link
Member

/assign


# Installing Gateway API for Knative

This page shows how to install the Kubernetes Gateway API. You can install either the standard or experimental Gateway API channel.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be documenting installing the Knative networking adapter for Gateway API.

I don't know if a picture is helpful, but here's some mermaid that might clarify:

flowchart TB
 subgraph s1["Gateway API"]
    HR[HTTPRoute]
    GW[Gateway listener]
  end
  KSvc["Knative Service"] -- owns --> Route
  Route -- creates --> HR
  Route -- creates --> GW

For this, we're talking about the component that implements the "creates"

This installation requires the following prerequisites:

- A Kubernetes cluster with the Knative Serving component installed.
- A Gateway Controller. You can install a Gateway Controller by using one of the following guides:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should link to the Gateway API top-level guide, rather than duplicating all of the sub-guides. I think https://gateway-api.sigs.k8s.io/implementations/ is probably the best page for linking to the options (yes, there are more than a dozen GA implementations).

- [HTTP traffic splitting](https://gateway-api.sigs.k8s.io/guides/traffic-splitting/)
- [Routing across Namespaces](https://gateway-api.sigs.k8s.io/guides/multiple-ns/)
- [Configuring TLS](https://gateway-api.sigs.k8s.io/guides/tls/)
- [TCP routing](https://gateway-api.sigs.k8s.io/guides/tcp/)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some of these guides are for unrelated topics (TCP routing, for instance, is not relevant to Knative's scaling model).

Comment on lines +31 to +64
## Install the standard Gateway API channel

The standard release channel includes all resources that have graduated to general availability or beta, including [GatewayClass](https://gateway-api.sigs.k8s.io/api-types/gatewayclass/), [Kubernetes Gateway API](https://kubernetes.io/docs/concepts/services-networking/gateway/), [HTTPRoute](https://gateway-api.sigs.k8s.io/api-types/httproute/), and [ReferenceGrant](https://gateway-api.sigs.k8s.io/api-types/referencegrant/).

Use the following command to install the standard channel:

```bash
kubectl apply --server-side -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.4.0/standard-install.yaml
```

For more information about the `kubectl --server-side` command, see [Server-Side Apply](https://kubernetes.io/docs/reference/using-api/server-side-apply/).

## Install the experimental Gateway API Channel

The experimental release channel includes everything in the standard release channel plus some experimental resources and fields. This includes TCPRoute, TLSRoute, and UDPRoute. Keep in mind that future releases of the API could introduce breaking changes as any experimental resource or field could be removed in a future release.

Use the following command to install the experimental channel:

```bash
kubectl apply --server-side -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.4.0/experimental-install.yaml
```

Refer to the server-side apply documentation to learn more about this kubectl command option.

## Uninstall the Gateway API

To uninstall the Gateway API, replace `kubectl apply --server-side -f` with `kubectl delete --server-side -f` in the commands above.

Do not uninstall if the resources are in use or if they were installed by a Gateway controller. This command uninstalls the Gateway API resources for the entire cluster.

## See also

- [Kubernetes Gateway API](https://kubernetes.io/docs/concepts/services-networking/gateway/)
- [Getting started with Gateway API](https://gateway-api.sigs.k8s.io/guides/)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These should cover installing https://github.com/knative-extensions/net-gateway-api

This should probably use a snippet like:

    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"}}'

And then using kubectl get gateway --all-namespaces to find the IP address of the gateway. This configuration will also need to be incorporated into the config-gateway ConfigMap to find the external and within-cluster (local) gateways. I'm not sure whether that's well-documented anywhere, but it's the "istio-system" part of the "gateway" sub-key of the gateway class.

It's probably worth calling out that Istio and Contour are the currently-tested implementations, but that other Gateway API implementations should work. https://github.com/knative-extensions/net-gateway-api/blob/main/docs/test-version.md has some additional information that it may be worth incorporating or linking.

Configuration for the installation is here:

https://github.com/knative-extensions/net-gateway-api/blob/main/config/config-gateway.yaml

@iRaindrop iRaindrop marked this pull request as draft October 24, 2025 18:49
@knative-prow knative-prow bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Oct 24, 2025
@iRaindrop iRaindrop changed the title Adding Installing Gateway API to docs Plugin: Gateway API Oct 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. size/M Denotes a PR that changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants