Kubernetes Ingress Controller for Kong

Install Kong Community Edition (CE) or Kong Enterprise Edition (EE) using the official Kubernetes Ingress Controller.

Learn more via the README . To get up and running quickly, follow the Minikube and Minishift tutorials.

The Kubernetes Ingress Controller for Kong launch announcement is on the Kong Blog.

For questions and discussion, please visit Kong Nation. For bug reports, please open a new issue on GitHub.

Kong Community Edition via Helm or Minikube

The easiest way to deploy Kong CE on Kubernetes is via Helm.

Kong CE can also be deployed on minikube - please follow the README and use the manifest files provided in minikube directory.

Kong Community Edition or Enterprise Edition via Manifest Files

Kong CE, or the trial version of Kong Enterprise Edition (EE), can be provisioned on a Kubernetes cluster via the manifest files provided in the repo. These instructions (mostly) assume you are using Google Kubernetes Engine (GKE) - you may need to make adjustments to deploy to other Kubernetes clusters.

  1. Initial setup

    Download or clone the following repo:

    $ git clone git@github.com:Kong/kong-dist-kubernetes.git
    $ cd kong-dist-kubernetes

    Skip to step 3 if you have already provisioned a cluster and registered it with Kubernetes.

  2. Deploy a GKE cluster

    You need gcloud and kubectl command-line tools installed and set up to run deployment commands. Also make sure your Google Cloud account has STATIC_ADDRESSES available for the external access of Kong services.

    Using the cluster.yaml file from this repo, deploy a GKE cluster. Provide the following information before deploying:

    1. Desired cluster name
    2. Zone in which to run the cluster
    3. A basicauth username and password for authenticating the access to the cluster
    $ gcloud deployment-manager deployments \
        create cluster --config cluster.yaml
  3. Deploy a datastore

    Before deploying Kong, you need to provision a Cassandra or PostgreSQL pod.

    For Cassandra, use the cassandra.yaml file from this repo to deploy a Cassandra Service and a StatefulSet in the cluster.

    $ kubectl create -f cassandra.yaml

    For PostgreSQL, use the postgres.yaml file from the kong-dist-kubernetes repo to deploy a PostgreSQL Service and a ReplicationController in the cluster:

    $ kubectl create -f postgres.yaml

    Kong EE trial users should complete the steps in the Additional Steps for Kong EE Trial Users section below before proceeding.

  4. Prepare database

    Using the kong_migration_<postgres|cassandra>.yaml file, run the migration job:

    $ kubectl create -f kong_migration_<postgres|cassandra>.yaml

    Once the job completes, you can remove the pod by running following command:

    $ kubectl delete -f kong_migration_<postgres|cassandra>.yaml
  5. Deploy Kong

    Using the kong_<postgres|cassandra>.yaml file from this repo, deploy Kong admin, proxy services, and a Deployment controller to the cluster:

    $ kubectl create -f kong_<postgres|cassandra>.yaml
  6. Verify your deployments

    You can now see the resources that have been deployed using kubectl:

    $ kubectl get all

    Once the EXTERNAL_IP is available for Kong Proxy and Admin services, you can test Kong by making the following requests:

    $ curl <kong-admin-ip-address>:8001
    $ curl https://<admin-ssl-ip-address>:8444
    $ curl <kong-proxy-ip-address>:8000
    $ curl https://<kong-proxy-ssl-ip-address>:8443
  7. Get Started with Kong

    Quickly learn how to use Kong with the 5-minute Quickstart.

Additional Steps for Kong EE Trial Users

  1. Publish a Kong EE Docker image to your container registry

    Because the Kong EE image is not available on the public Docker container registry, you must publish it to a private repository for use with Kubernetes. While any private repository will work, this example uses the Google Cloud Platform Container Registry, which automatically integrates with the Google Cloud Platform examples in the other steps.

    In the steps below, replace <image ID> with ID associated with your loaded image in docker images output. Replace <project ID> with your Google Cloud Platform project ID.

    $ docker load -i /tmp/kong-docker-enterprise-edition.tar.gz
    $ docker images
    $ docker tag <image ID> gcr.io/<project ID>/kong-ee
    $ gcloud docker -- push gcr.io/demo-cs-lab/kong-ee:latest
  2. Add your Kong EE License File

    Edit kong_trial_postgres.yaml and kong_trial_migration_postgres.yaml to replace YOUR_LICENSE_HERE with your Kong EE License File string - it should look like:

    value: '{"license":{"signature":"alongstringofcharacters","payload":{"customer":"Test Company","license_creation_date":"2018-03-06","product_subscription":"Kong Only","admin_seats":"5","support_plan":"Premier","license_expiration_date":"2018-06-04","license_key":"anotherstringofcharacters"},"version":1}}'
  3. Use the Kong EE image

    Edit kong_trial_postgres.yaml and kong_trial_migration_postgres.yaml and replace image: kong with image: gcr.io/<project ID>/kong-ee, using the same project ID as above.

  4. Deploy Kong EE

    Continue from step 4 in the Kong Community Edition or Enterprise Edition via Manifest Files instruction above, using the kong_trial_* YAML files in the EE Trial directory. Once Kong EE is running, you should be able to access the Kong Admin GUI at <kong-admin-ip-address>:8002 or https://<kong-ssl-admin-ip-address>:8445.

Get Updates!

Follow Up:

Get future release notes emailed to you.

Having Trouble? We're Here to Help!

Keep up with the latest features