Use Kong for your Kubernetes Ingress and further configure plugins, health checking, load balancing and more in Kong for your Kubernetes services, all using Custom Resource Definitions(CRDs).
- Ingress routing: Use Ingress resources to configure Kong
- Health checking and Load-balancing: Load balance requests across your pods and supports active & passive health-checks.
- Configure Plugins: Execute custom code as a request is proxied to your service.
- Request/response transformations: Use plugins to modify your requests/responses on the fly.
- Authentication: Protect your services using authentication plugins.
- Declarative configuration for Kong Configure all of Kong using CRDs in Kubernetes and manage Kong declaratively.
The Ingress controller is tested on
Kubernetes version 1.8
through 1.10
.
The following matrix lists supported versions of Kong for every release of the Kong Ingress Controller:
Kong Ingress Controller | <= 0.0.4 | 0.0.5 | 0.1.x | 0.2.x | 0.3.x | 0.4.x | 0.5.x |
---|---|---|---|---|---|---|---|
Kong 0.13.x | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
Kong 0.14.x | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
Kong 1.0.x | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
Kong 1.1.x | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
Kong 1.2.x | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
Kong Enterprise 0.32-x | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
Kong Enterprise 0.33-x | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
Kong Enterprise 0.34-x | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
Kong Enterprise 0.35-x | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
You can deploy Kong Ingress Controller on any
Kubernetes cluster which supports a Service of type: LoadBalancer
.
You can use Minikube on your local machine or use a hosted k8s service like GKE.
To setup Kong Ingress Controller in your k8s cluster, execute:
# using YAMLs
kubectl apply -f https://bit.ly/kong-ingress
# or using Helm
helm install stable/kong --set ingressController.enabled=true
You can also spin up Kong Ingress Controller without a database dependency:
# using YAMLs
kubectl apply -f https://bit.ly/kong-ingress-dbless
# or using Helm
helm install stable/kong --set ingressController.enabled=true \
--set postgresql.enabled=false --set env.database=off
It takes a few minutes for all components to spin up. You now have set up Kong as your Ingress controller and all Ingress resources in your Kubernetes Cluster will be satisfied.
Please refer to our deployment documentation for a detailed introduction to Kong Ingress Controller and Ingress spec.
Please search through the posts on Kong Nation as it's likely that another user has run into the same problem. If you don't find an answer, please feel free to post a question. For a feature request, please post in Feature Suggestions category.
You can also talk to us in the #kong channel on the Kubernetes Slack server.
If you've spotted a bug, please open an issue on our Github.
All documentation around Kong Ingress Controller is present in this repository. Pull Requests are welcome for additions and corrections.
Following are some helpful link:
- Getting Started: Get Kubernetes Ingress setup up and running.
- Deployment: Deployment guides for Minikube, GKE and other types of clusters.
- Custom Resources Definitions (CRDs): Use custom resources to configure Kong in addition to the Ingress resource.
- Annotations: Associate plugins with your requests using annotations
- FAQs: Frequently Asked Questions.
Kong Ingress Controller is built to satisfy the Ingress spec in Kubernetes. Kong Ingress Controller is a Go app that listens to events from the API-server of your Kubernetes cluster and then sets up Kong to handle your configuration accordingly, meaning you never have to configure Kong yourself manually.
The controller can configure any Kong cluster via a Kong node running either in a control-plane mode or running both, control and data planes.
For detailed design, please refer to our design documentation.
Copyright 2018 Kong Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Please check the roadmap document.