Kong VS nginx kunernetes ingress controller

Hello @amramtamir,

Thank you for your post. I’ve answered your questions inline:

What are the advantages of using Kong as ingress controller VS nginx?

As far as Ingress Spec in Kubernetes goes, both controller satisfy it and work as one would expect.
Both controllers support (different) additional features, configured using ConfigMaps and annotations in case of Nginx and Custom Resource Definitions (CRDs) in case of Kong.
Kong is built on top of Nginx and hence supports most of Nginx features plus a lot more in Kong Core and via plugins.
Kong has an array of plugins which can be configured for running custom logic at the ingress layer.
You can also use Kong as an API gateway for features like authentication, rate-limiting, tracing and monitoring along with using it as an Ingress controller.

The current implementation as far as I saw don’t allow to leverage Kong’s admin API which means all configurations will eventually will be from the ingress manifest (yaml file).

That’s point of using an Ingress Controller really. You would want to configure your proxy using a standardize abstraction, the Ingress Spec (yaml). If you want to configure Kong directly using the Admin API, then you can deploy Kong as an application on top of k8s without the Ingress controller part.

Configuring Kong via the Admin API or using the Ingress sepc, the feature sets offered by Kong remain the same. The Ingress controller deployment method has an added advantage (since it is talking to the k8s API-server) that it takes care of configuring Kong for health-checking, short-circuiting and auto-discovery of pods of your services in Kong and dynamically adjusts configuration as your services scale up/down.

My usage today is that I am exposing Kong to other teams internaly that uses the API to configure their APIs on DC/OS.

You could ask your teams to create Ingress resources in k8s and then the ingress controller will take care of configuring Kong based on your Ingress yamls. This allows your teams to declaratively configure Kong.
Also, if your teams are in separate namespaces in k8s, Kong Ingress Controller respects namespaces, meaning that one team will not mess up another team’s configuration (easily).

Let me know if you’ve more questions or if you think your original questions are answered with this post, please mark it as “Solved” (to help future community members). Thank you!

4 Likes