Helm

In this installation guide, you install the kgateway control plane Control Plane Components that manage and distribute configuration and policies to the data plane. in a Kubernetes cluster by using Helm. Helm is a popular package manager for Kubernetes configuration files. This approach is flexible for adopting to your own command line, continuous delivery, or other workflows.

As part of the control plane installation, you enable the agentgateway data plane.

Before you begin

  1. Create or use an existing Kubernetes cluster.
  2. Install the following command-line tools.
    • kubectl, the Kubernetes command line tool. Download the kubectl version that is within one minor version of the Kubernetes clusters you plan to use.
    • helm, the Kubernetes package manager.

Install

Install the kgateway control plane by using Helm.

  1. Install the custom resources of the Kubernetes Gateway API version 1.4.0.

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

    CRDs in the experimental channel are required to use some experimental features in the Gateway API. Guides that require experimental CRDs note this requirement in their prerequisites.

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

    customresourcedefinition.apiextensions.k8s.io/gatewayclasses.gateway.networking.k8s.io created
    customresourcedefinition.apiextensions.k8s.io/gateways.gateway.networking.k8s.io created
    customresourcedefinition.apiextensions.k8s.io/httproutes.gateway.networking.k8s.io created
    customresourcedefinition.apiextensions.k8s.io/referencegrants.gateway.networking.k8s.io created
    customresourcedefinition.apiextensions.k8s.io/grpcroutes.gateway.networking.k8s.io created
    
  2. Apply the kgateway CRDs for the upgrade version by using Helm.

    1. Optional: To check the CRDs locally, download the CRDs to a helm directory.

      helm template --version v2.2.0-main kgateway-crds oci://cr.kgateway.dev/kgateway-dev/charts/kgateway-crds --output-dir ./helm
    2. Deploy the kgateway CRDs by using Helm. This command creates the kgateway-system namespace and creates the kgateway CRDs in the cluster.

      helm upgrade -i --create-namespace --namespace kgateway-system --version v2.2.0-main kgateway-crds oci://cr.kgateway.dev/kgateway-dev/charts/kgateway-crds 
  3. Install the kgateway Helm chart.

    1. Optional: Pull and inspect the kgateway Helm chart values before installation. You might want to update the Helm chart values files to customize the installation. For example, you might change the namespace, update the resource limits and requests, or enable extensions such as for AI. For more information, see Advanced settings.

      helm pull oci://cr.kgateway.dev/kgateway-dev/charts/kgateway --version v2.2.0-main
      
      tar -xvf kgateway-v2.2.0-main.tgz
      
      open kgateway/values.yaml
    2. Install kgateway control plane by using Helm. If you modified the values.yaml file with custom installation values, add the -f kgateway/values.yaml flag.

      helm upgrade -i -n kgateway-system kgateway oci://cr.kgateway.dev/kgateway-dev/charts/kgateway \
      --version v2.2.0-main \
      --set agentgateway.enabled=true
      helm upgrade -i -n kgateway-system kgateway oci://cr.kgateway.dev/kgateway-dev/charts/kgateway \
      --version v2.2.0-main \
      --set agentgateway.enabled=true \
      -f kgateway/values.yaml

      When using the development build v2.2.0-main, add the --set controller.image.pullPolicy=Always option to ensure you get the latest image. Alternatively, you can specify the exact image digest.

      helm upgrade -i -n kgateway-system kgateway oci://cr.kgateway.dev/kgateway-dev/charts/kgateway \
      --version v2.2.0-main \
      --set controller.image.pullPolicy=Always \
      --set agentgateway.enabled=true \
      --set controller.extraEnv.KGW_ENABLE_GATEWAY_API_EXPERIMENTAL_FEATURES=true

      Example output:

      NAME: kgateway
      LAST DEPLOYED: Thu Feb 13 14:03:51 2025
      NAMESPACE: kgateway-system
      STATUS: deployed
      REVISION: 1
      TEST SUITE: None
  4. Verify that the control plane is up and running.

    kubectl get pods -n kgateway-system

    Example output:

    NAME                                  READY   STATUS    RESTARTS   AGE
    kgateway-78658959cd-cz6jt             1/1     Running   0          12s
  5. Verify that the agentgateway GatewayClass is created. You can optionally take a look at how the GatewayClass is configured by adding the -o yaml option to your command.

    kubectl get gatewayclass agentgateway

Next steps

Now that you have the kgateway control plane set up and running, check out the following guides to start using the agentgateway data plane.

Cleanup

You can remove the resources that you created in this guide.

Follow the Uninstall guide.