456652e02b | ||
---|---|---|
.. | ||
.mvn/wrapper | ||
src | ||
.gitignore | ||
README.md | ||
clusterIp.yaml | ||
ingress-rule.yaml | ||
mvnw | ||
mvnw.cmd | ||
pom.xml | ||
rate-limiter.yaml | ||
serviceDeployment.yaml |
README.md
Kong Ingress Controller with Spring Boot
This project was generated from Spring Initializer Website (https://start.spring.io/):
Maven version Java latest:
curl https://start.spring.io/starter.tgz -d dependencies=webflux,actuator -d type=maven-project | tar -xzvf -
Maven version Java 11:
curl https://start.spring.io/starter.tgz -d dependencies=webflux,actuator -d type=maven-project -d javaVersion=11 | tar -xzvf -
Steps to run the demonstration:
-
Install minikube: https://www.baeldung.com/spring-boot-minikube
-
Install Kong Ingress Controller on minikube: https://docs.konghq.com/kubernetes-ingress-controller/latest/deployment/minikube/
- Test wich echo-server
- Create environment variable: export PROXY_IP=$(minikube service -n kong kong-proxy --url | head -1)
- build that Spring boot service:
- Run ./mvnw install
- Run jar: java -jar target/*.jar
- Create a Docker image: If using minikube and don't want to push image to a repository, then point your local Docker client to Minikube's implementation: eval $(minikube -p minikube docker-env) --- use the same shell.
- Run: ./mvnw spring-boot:build-image
- Deploy the application, create a service and an ingress rule:
kubectl apply -f serviceDeployment.yaml
kubectl apply -f clusterIp.yaml
kubectl apply -f ingress-rule.yaml
- Test access using the proxy IP:
curl -i $PROXY_IP/actuator/health
Setting up a rate limiter on your api
- Create a plugin:
kubectl apply -f rate-limiter.yaml
- Now test resource. Try more than 5 times a minute:
curl -i $PROXY_IP/actuator/health