Provision a Gateway

Deployment Platform
Related Documentation
Minimum Version
Kong Operator - 2.1
TL;DR

Use Gateway API constructs GatewayConfiguration, GatewayClass and Gateway to provision a Kong Gateway on Kubernetes.

Prerequisites

This page is part of the Get started with Kong Operator and Gateway API series.

Complete the previous page, Install Kong Operator before completing this page.

If you don’t have a Konnect account, you can get started quickly with our onboarding wizard.

  1. The following Konnect items are required to complete this tutorial:
    • Personal access token (PAT): Create a new personal access token by opening the Konnect PAT page and selecting Generate Token.
  2. Set the personal access token as an environment variable:

    export KONNECT_TOKEN='YOUR KONNECT TOKEN'
    
kubectl create namespace kong --dry-run=client -o yaml | kubectl apply -f -
echo '
kind: KonnectAPIAuthConfiguration
apiVersion: konnect.konghq.com/v1alpha1
metadata:
  name: konnect-api-auth
  namespace: kong
spec:
  type: token
  token: "'$KONNECT_TOKEN'"
  serverURL: us.api.konghq.com
' | kubectl apply -f -

Create a GatewayConfiguration resource

First, let’s create a GatewayConfiguration resource to specify our Hybrid Gateway parameters. Set spec.konnect.authRef.name to the name of the KonnectAPIAuthConfiguration resource we created in the prerequisites and specify your data plane configuration:

First, let’s create a GatewayConfiguration resource to specify our Gateway parameters:

echo '
kind: GatewayConfiguration
apiVersion: gateway-operator.konghq.com/v2beta1
metadata:
  name: kong-configuration
  namespace: kong
spec:
  konnect:
    authRef:
      name: konnect-api-auth
  dataPlaneOptions:
    deployment:
      podTemplateSpec:
        spec:
          containers:
          - name: proxy
            image: kong/kong-gateway:3.13' | kubectl apply -f -
kubectl create namespace kong 
echo '
kind: GatewayConfiguration
apiVersion: gateway-operator.konghq.com/v2beta1
metadata:
  name: kong-configuration
  namespace: kong
spec:
  dataPlaneOptions:
    deployment:
      podTemplateSpec:
        spec:
          containers:
          - name: proxy
            image: kong/kong-gateway:3.9' | kubectl apply -f -

Create a GatewayClass

Next, configure a GatewayClass resource to use the GatewayConfiguration we just created:

echo 'kind: GatewayClass
apiVersion: gateway.networking.k8s.io/v1
metadata:
  name: kong
spec:
  controllerName: konghq.com/gateway-operator
  parametersRef:
    group: gateway-operator.konghq.com
    kind: GatewayConfiguration
    name: kong-configuration
    namespace: kong
' | kubectl apply -f -

Create a Gateway Resource

Finally, create a Gateway resource that references the GatewayClass we just created:

echo '
kind: Gateway
apiVersion: gateway.networking.k8s.io/v1
metadata:
  name: kong
  namespace: kong
spec:
  gatewayClassName: kong
  listeners:
  - name: http
    protocol: HTTP
    port: 80
' | kubectl apply -f -

Kong Operator will automatically create the DataPlane and KonnectGatewayControlPlane resources.

Kong Operator will automatically create the DataPlane and ControlPlane resources.

Validation

You can verify the Gateway was reconciled successfully by checking its Programmed condition.

kubectl get -n kong gateway kong \
  -o=jsonpath='{.status.conditions[?(@.type=="Programmed")]}' | jq

The output should look similar to this:

{
  "observedGeneration": 1,
  "reason": "Programmed",
  "status": "True",
  "type": "Programmed"
}
Something wrong?

Help us make these docs great!

Kong Developer docs are open source. If you find these useful and want to make them better, contribute today!