How to configure UDP services with Kong API Gateway

on
Jun 03, 2022
in

Since version 2.2 Kong API Gateway supports UDP services, but the documentation illustrates this
with a very complex Kubernetes setup. In this blog I will show you the easiest way to
configure a udp service.
Without further ado: to configure a UDP service in Kong,
you just have to do three things:

  1. define a Kong service with the udp protocol
  2. define a Kong route with the udp protocol
  3. configure Kong to listen on UDP
    In this setup, I will configure the Google DNS nameservers as a udp service and
    route traffic from localport 5353.

define kong udp service

To define the kong UDP service, type:

$ curl -sS --fail \
     -X POST http://localhost:8001/services \
     -d name=google-dns \
     -d protocol=udp \
     -d host=8.8.8.8 \
     -d port=53

define kong udp route

To define the kong UDP route to the service, type:

curl -sS --fail  \
     -X POST http://localhost:8001/services/google-dns/routes \
     -H 'Content-Type: application/json' \
     -d '{"protocols": [ "udp"], "destinations": [{"port": 5353}]}'

configure Kong to listen on UDP

To configure Kong to listen on UDP, start kong with the property stream_listen set:

KONG_STREAM_LISTEN="0.0.0.0:5353 udp" kong ...

Bonus enable logging

The enable logging of udp requests, make you configure the udp protocol on the plugin too.

curl -sS --fail \
    -X POST http://localhost:8001/plugins \
    --data name=file-log \
    --data protocols=udp \
    --data protocols=http \
    --data protocols=https \
    --data config.path=/tmp/request.log

conclusion

The guide on Using UDP
in Kong is more a guide into the complexity of kubernetes. In this blog,
I showed you how easy it really is!
Image by Gerd Altmann from Pixabay

Mark van Holsteijn is a senior software systems architect, and CTO of binx.io. He is passionate about removing waste in the software delivery process and keeping things clear and simple.
Share this article: Tweet this post / Post on LinkedIn