From b797d939862d0a49f2a95719bb9f8740d0d6e2d5 Mon Sep 17 00:00:00 2001 From: thefosk Date: Sat, 5 Jan 2019 00:11:35 -0800 Subject: [PATCH] docs(kong) updating links, logo and some content --- kong/README-short.txt | 2 +- kong/content.md | 37 ++++++++++++++++++++++--------------- kong/license.md | 2 +- kong/logo.png | Bin 6143 -> 11636 bytes 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/kong/README-short.txt b/kong/README-short.txt index 75a78adc3..031330bcf 100644 --- a/kong/README-short.txt +++ b/kong/README-short.txt @@ -1 +1 @@ -Open-source Microservice & API Management layer built on top of NGINX. \ No newline at end of file +The Cloud-Native API Gateway & Service Mesh for APIs and Microservices \ No newline at end of file diff --git a/kong/content.md b/kong/content.md index 9fc8e9a1a..964ef7554 100644 --- a/kong/content.md +++ b/kong/content.md @@ -1,12 +1,10 @@ # What is Kong? -Kong is a scalable, open source API Layer (also known as an API Gateway, or API Middleware). Kong was originally built by [Kong Inc.](https://konghq.com) (formerly known as Mashape) to secure, manage and extend over 15,000 Microservices for its API Marketplace, which generates billions of requests per month. +Kong is a scalable, open source API Platform (also known as an API Gateway, or API Middleware, or Service Mesh for Microservices). Kong was originally built by [Kong Inc.](https://konghq.com) (formerly known as Mashape) to secure, manage and extend over 15,000 Microservices for its API Marketplace, which generates billions of requests per month. -Backed by the battle-tested NGINX with a focus on high performance, Kong was made available as an open-source platform in 2015. Under active development, Kong is now used in production at hundreds of organizations from startups, to large enterprises and government departments including: The New York Times, Expedia, Healthcare.gov, The Guardian, Condè Nast, The University of Auckland, Ferrari, and Giphy. +Under active development, Kong is now used in production at hundreds of organizations from startups, to large enterprises and governments including: The New York Times, Expedia, Healthcare.gov, The Guardian, Condè Nast, The University of Auckland, Ferrari, Rakuten, Cisco, SkyScanner, Yahoo! Japan, Giphy and so on. -Kong's documentation can be found at [getkong.org/docs](http://getkong.org/docs). - -%%LOGO%% +Kong's official documentation can be found at [docs.konghq.com](https://docs.konghq.com/). # How to use this image @@ -35,7 +33,7 @@ docker run -d --name kong-database \ -p 5432:5432 \ -e "POSTGRES_USER=kong" \ -e "POSTGRES_DB=kong" \ - postgres:9.5 + postgres:9.6 ``` ## 2. Prepare your database @@ -62,14 +60,13 @@ Once the database has been started and prepared, we can start a Kong container a ```shell $ docker run -d --name kong \ --link kong-database:kong-database \ - -e "KONG_DATABASE=cassandra" \ + -e "KONG_DATABASE=postgres" \ -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \ -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \ -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \ -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \ -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \ - -e "KONG_ADMIN_LISTEN=0.0.0.0:8001" \ - -e "KONG_ADMIN_LISTEN_SSL=0.0.0.0:8444" \ + -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \ -p 8000:8000 \ -p 8443:8443 \ -p 8001:8001 \ @@ -77,13 +74,13 @@ $ docker run -d --name kong \ %%IMAGE%% ``` -If everything went well, and if you created your container with the default ports, Kong should be listening on your host's `8000` ([Proxy](http://getkong.org/docs/latest/configuration/#proxy_port)), `8443` ([Proxy SSL](http://getkong.org/docs/latest/configuration/#proxy_listen_ssl)), `8001` ([Admin API](http://getkong.org/docs/latest/configuration/#admin_listen)) and `8444` ([Admin API SSL](http://getkong.org/docs/latest/configuration/#admin_listen_ssl)) ports. +If everything went well, and if you created your container with the default ports, Kong should be listening on your host's `8000` ([Proxy](https://docs.konghq.com/latest/configuration/#proxy_port)), `8443` ([Proxy SSL](https://docs.konghq.com/latest/configuration/#proxy_listen_ssl)), `8001` ([Admin API](https://docs.konghq.com/latest/configuration/#admin_listen)) and `8444` ([Admin API SSL](https://docs.konghq.com/latest/configuration/#admin_listen_ssl)) ports. -You can now read the docs at [getkong.org/docs](http://getkong.org/docs) to learn more about Kong. +You can now read the docs at [docs.konghq.com](https://docs.konghq.com/) to learn more about Kong. ## 3. Use Kong with a custom configuration (and a custom Cassandra/PostgreSQL cluster) -You can override any property of the [Kong configuration file](http://getkong.org/docs/latest/configuration/) with environment variables. Just prepend any Kong configuration property with the `KONG_` prefix, for example: +You can override any property of the [Kong configuration file](https://docs.konghq.com/latest/configuration/) with environment variables. Just prepend any Kong configuration property with the `KONG_` prefix, for example: ```shell $ docker run -d --name kong \ @@ -92,8 +89,7 @@ $ docker run -d --name kong \ -e "KONG_LOG_LEVEL=info" \ -e "KONG_CUSTOM_PLUGINS=helloworld" \ -e "KONG_PG_HOST=1.1.1.1" \ - -e "KONG_ADMIN_LISTEN=0.0.0.0:8001" \ - -e "KONG_ADMIN_LISTEN_SSL=0.0.0.0:8444" \ + -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \ -p 8000:8000 \ -p 8443:8443 \ -p 8001:8001 \ @@ -109,4 +105,15 @@ If you change your custom configuration, you can reload Kong (without downtime) $ docker exec -it kong kong reload ``` -This will run the [`kong reload`](http://getkong.org/docs/latest/cli/#reload) command in your container. +This will run the [`kong reload`](https://docs.konghq.com/latest/cli/#reload) command in your container. + +# Kubernetes Ingress + +Among the many deployment options [available](https://konghq.com/install), Kong also offers a [Kubernetes Ingress Controller](https://github.com/Kong/kubernetes-ingress-controller) ready to use in your K8S environment. + +# Service Mesh + +Since version 1.x you can run Kong in a Service Mesh deployment as a platform-agnostic sidecar proxy (including Kubernetes, but also on any other platform supported by Kong). To get started and learn more you can read the docs at: + +- [Streams and Service Mesh](https://docs.konghq.com/latest/streams-and-service-mesh/) +- [Kubernetes and Service Mesh](https://github.com/Kong/kong-mesh-dist-kubernetes) diff --git a/kong/license.md b/kong/license.md index 3576710ac..aa0f77f2e 100644 --- a/kong/license.md +++ b/kong/license.md @@ -1 +1 @@ -View [license information](https://getkong.org/license/) for the software contained in this image. +View [license information](https://konghq.com/kong/license/) for the software contained in this image. diff --git a/kong/logo.png b/kong/logo.png index 747d07e709c649ed04aedc54aa14b379b9cc5f8f..094829adcff2593d3680dca937a087e8659bebaa 100644 GIT binary patch literal 11636 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 Rx4(Oka#Bi?Kg10K{tx25p+W!v literal 6143 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 R7%Kn(002ovPDHLkV1ka;=$HTi