How To Build Graphql API with Spring Boot, Neo4j and Kong [Part 4]

Written by preet-kanwar | Published 2020/06/30
Tech Story Tags: spring-boot | spring | java | neo4j | graphql-api | graphql | backend | programming | web-monetization

TLDR How To Build Graphql API with Spring Boot, Neo4j and Kong [Part 4] The blog series will provide you with a good start to develop GraphQL API using GraphDB and deploying an API gateway for the application. In this article, you will be applying the Kong API gateway and making it the single point of entry into the AWS EKS cluster. The API gateway is an open-source API gateway, built on top of Nginx. It helps to manage the control traffic, in terms of authentication, rate limiting, Caching, Monitoring, and so on.via the TL;DR App

Introduction

In the previous parts (part 1part 2 and part 3), the setting up of GraphQL APIs and querying Neo4j were covered. In this article, you will be applying the Kong API gateway and making it the single point of entry into the AWS EKS cluster.

Prerequisite

You need to have a running EKS cluster and created and applied a .kubeconfig file for your cluster.
If not already in place, refer to the official AWS link for creating a cluster and configuring EKS.

Kong

Kong is an open-source API gateway, built on top of Nginx. It helps to manage the control traffic, in terms of authentication, rate limiting, Caching, Monitoring, and so on. To start using Kong in AWS EKS, you first need to install the ingress controller in the cluster. To install the Kong ingress controller, you can use Helm charts, which requires the installation of Helm. After installation, you just need to execute the following commands:
helm repo add kong https://charts.konghq.com
helm repo update
helm install kong/kong
After the controller is installed, you can implement all kinds of configurations. Here are some samples of routing and rate-limiting:
The above sample is a YAML file, which is used as an ingress resource to configure the ingress controller. In this sample, the traffic is rerouted from the KONG URL, which is exposed to different microservices based on the path URL. Check the configuration through the following command:
kubectl describe ingress <ingress_name>
After ingress routing is configured, you can apply different Kong plugins. In this example, the rate limit plugin is applied to the microservices.
In the following sample, the access to any microservice is being limited; that is an API cannot be called more than two times in a second. You can also place a limit, based on the number of requests executed in a minute, hour, day, month, and year. A limit based on request per customer, IP, and microservice can be placed as well.
Kong will provide you with a URL that will be exposed to the world for incoming traffic. From there on, the controller will check ingress resource configurations and plugins to perform re-routing and rate limiting. The architecture diagram is as follows:

Finally…

In this article, you have learnt about the installation and configuration of the Kong API gateway at a very high level. The blog series will provide you with a good start to develop GraphQL API using GraphDB and deploying an API gateway for the application.

References


Published by HackerNoon on 2020/06/30