Installation

Install the Gateway API CRDs, deploy krouter, and verify the installation.

Prerequisites

  • A Kubernetes cluster, v1.31 or newer. Any conformant distribution works; see the official getting started guide if you need a cluster, or kind for a local one.
  • kubectl configured against that cluster, with permission to create cluster-scoped resources (see Using RBAC authorization).

1. Install the Gateway API CRDs

krouter deliberately does not bundle the Gateway API CustomResourceDefinitions: they are cluster-wide, versioned upstream, and often shared with other controllers. Install the v1.6.1 Standard channel: since Gateway API v1.6 it carries everything krouter uses, including TCPRoute, UDPRoute, TLSRoute, BackendTLSPolicy and ListenerSet:

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

Server-side apply is recommended: the larger CRDs exceed the annotation size limit used by client-side apply. See Server-Side Apply for background, and the upstream installation guide for channel details.

The Experimental channel works too: krouter ignores the resources it does not implement, and detects missing CRDs by degrading gracefully.

2. Deploy krouter

Everything (namespace, RBAC, control-plane Deployment, data-plane DaemonSet and dashboard Service) is one static manifest:

kubectl apply -f https://raw.githubusercontent.com/link-society/krouter/main/k8s/krouter.yaml

The manifest creates the krouter-system namespace and follows the Pod Security Standards restricted profile: non-root, read-only root filesystem, no added capabilities.

3. Register the GatewayClass

A GatewayClass ties Gateways to krouter’s controller name:

apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
  name: krouter
spec:
  controllerName: link-society.com/krouter

4. Verify

kubectl -n krouter-system rollout status deployment/krouter-controlplane
kubectl -n krouter-system rollout status daemonset/krouter-dataplane
kubectl get gatewayclass krouter

The GatewayClass should report Accepted: True, along with the exact Gateway API feature set krouter supports in status.supportedFeatures and a SupportedVersion condition confirming the installed CRD bundle.

Continue with Configuration, or jump straight into the first tutorial.