K8s + Kong + Ingress Controller + Proxying

Hi,

I am currently trying to upgrade from a very old version of Kong to the latest v1.4.2 version, and want to use CRDs to configure Kong, which is currently done using a custom scripts.

I do not want to use the Ingress resource to expose Kong to the external world; I expose Kong directly using an NLB on AWS. Having said this, I have a few questions:

  1. One of the proxies I use is a Datadog proxy, where external clients send metrics to Kong, which then gets forwarded to dogstatsd agent running locally on the cluster. Is my understanding correct that I need to:
  • create an Ingress with the right path
  • forward it to the Datadog agent running on UDP/8125.

How can I achieve the TCP incoming data forwarding to a UDP server in the cluster.
From what I have read, this might not be possible and in that case, I have to send the data directly to Datadog bypassing the local agents. In the second case, do I create a KongConsumer to load the API keys? Or is there some other mechanism to inject the keys in the request before forwarding them?

  1. A lot of our APIs are based on a distinct client IDs which are created dynamically. An example would be /api/v1/cliend_id/action. Is there a way to create this Service to forward once globally, or is there a neat regex way of doing this in one go when deploying Kong. An important point to note is that I am planning to enable the Datadog plugin for every request tagged by clientID, and my understanding is that the global declaration will not help me achieve that. Is that correct?

Thanks!

–
Krish

Yes that’s possible and recommended.

This is not possible with Kong (today).

You can use regular expressions in paths to achieve this.

I’m not sure I follow.

Kong’s datadog plugin sends metrics about requests flowing through Kong. It has got nothing to do with metrics that are forwarded via Kong to a Datadog agent/server.

Thanks for the response.

Kong’s datadog plugin sends metrics about requests flowing through Kong. It has got nothing to do with metrics that are forwarded via Kong to a Datadog agent/server.

Let me elaborate. Is there a way to tag every Kong Service and Kong Route to send metrics when they are executed?
I read in the Admin API docs that tagging and filtering based on tags are allowed. So am I right in understanding that these tags will be propagated to Datadog where I can have fine grained alerts?

Another related question is: Kong Services can be tagged, but how does tagging happen in Kubernetes when K8s Services are mapped to Kong Services?

No. This is not supported.

That is not supported.