概述
支持的安装方式https://konghq.com/install/
端口
| 端口 | 作用 |
|---|---|
| 8000 | http网关 |
| 8443 | https网关 |
| 8001 | 管理api |
| 8444 | https的管理api |
- 8000:此端口是 Kong 用来监听来自客户端传入的 HTTP 请求,并将此请求转发到上游服务器;(Kong 根据配置的规则转发到真实的后台服务地址)
- 8443:此端口是 Kong 用来监听来自客户端传入的HTTPS请求的。它跟8000端口的功能类似,转发 HTTPS 请求的。可以通过修改配置文件来禁止它;
- 8001:Admin API,通过此端口,管理者可以对 Kong 的监听服务进行配置,插件设置、API 的增删改查、以及负载均衡等一系列的配置都是通过 8001 端口进行管理;
- 8444:通过此端口,管理者可以对 HTTPS 请求进行监控。
docker
个人开发试验推荐使用docker方式https://docs.konghq.com/install/docker/,安装文档 https://docs.konghq.com/install/docker/
创建网络
$ docker network create kong-net955f176da787ab7b6e924680c8c165427c6e2d329519a97bdcbcbd4f104211a6
创建数据库postgres
$ docker run -d --name kong-database \--network=kong-net \-p 5432:5432 \-e "POSTGRES_USER=kong" \-e "POSTGRES_DB=kong" \-e "POSTGRES_PASSWORD=kong" \postgres:9.6
数据库初始化
docker run --rm \--network=kong-net \-e "KONG_DATABASE=postgres" \-e "KONG_PG_HOST=kong-database" \-e "KONG_PG_USER=kong" \-e "KONG_PG_PASSWORD=kong" \-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \kong:latest kong migrations bootstrap
启动
docker run -d --name kong \--network=kong-net \-e "KONG_DATABASE=postgres" \-e "KONG_PG_HOST=kong-database" \-e "KONG_PG_USER=kong" \-e "KONG_PG_PASSWORD=kong" \-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, 0.0.0.0:8444 ssl" \-p 8000:8000 \-p 8443:8443 \-p 127.0.0.1:8001:8001 \-p 127.0.0.1:8444:8444 \kong:latest
测试启动
curl -i http://localhost:8001/
docker-compose
只含有kong
kong的运行需要数据库的支持,目前官方支持postgresql和cassandra,安装官方的docker安装方式也比较啰嗦,本地调试推荐使用docker-compose方便快捷,个人使用的一个docker-compose模板板:https://gist.github.com/pantsel/73d949774bd8e917bfd3d9745d71febf和https://github.com/Kong/docker-kong/blob/master/compose/docker-compose.yml
version: "3.7"volumes:kong_data: {}networks:kong-net:name: kong-netservices:######################################## Postgres: The database used by Kong#######################################kong-database:image: postgres:9.6container_name: kong-postgresrestart: on-failurenetworks:- kong-netvolumes:# - ./init-user-db.sh:/docker-entrypoint-initdb.d/init-user-db.sh- kong_data:/var/lib/postgresql/dataenvironment:POSTGRES_USER: kongPOSTGRES_PASSWORD: ${KONG_PG_PASSWORD:-kong}POSTGRES_DB: kongports:- "5432:5432"healthcheck:test: ["CMD", "pg_isready", "-U", "kong"]interval: 30stimeout: 30sretries: 3######################################## Kong database migration#######################################kong-migration:image: ${KONG_DOCKER_TAG:-kong:latest}command: kong migrations bootstrapnetworks:- kong-netrestart: on-failureenvironment:KONG_DATABASE: postgresKONG_PG_HOST: kong-databaseKONG_PG_DATABASE: kongKONG_PG_USER: kongKONG_PG_PASSWORD: ${KONG_PG_PASSWORD:-kong}depends_on:- kong-database######################################## Kong: The API Gateway#######################################kong:image: ${KONG_DOCKER_TAG:-kong:latest}restart: on-failurenetworks:- kong-netenvironment:KONG_DATABASE: postgresKONG_PG_HOST: kong-databaseKONG_PG_DATABASE: kongKONG_PG_USER: kongKONG_PG_PASSWORD: ${KONG_PG_PASSWORD:-kong}KONG_PROXY_LISTEN: 0.0.0.0:8000KONG_PROXY_LISTEN_SSL: 0.0.0.0:8443KONG_ADMIN_LISTEN: 0.0.0.0:8001depends_on:- kong-databasehealthcheck:test: ["CMD", "kong", "health"]interval: 10stimeout: 10sretries: 10ports:- "8000:8000"- "8001:8001"- "8443:8443"- "8444:8444"
包含konga
konga是kong的第三方dashbord,kong 官方社区版只提供了admin api没有可视化UI配置界面,穷屌丝推荐第三方ui的是konga
访问地址是安装过程中定义的ip端口,默认:http://{your server’s public ip}:1337,首次打开需要注册管理员
version: "3.7"volumes:kong_data: {}networks:kong-net:services:######################################## Postgres: The database used by Kong#######################################kong-database:image: postgres:9.6container_name: kong-postgresrestart: on-failurenetworks:- kong-netvolumes:- kong_data:/var/lib/postgresql/dataenvironment:POSTGRES_USER: kongPOSTGRES_PASSWORD: ${KONG_PG_PASSWORD:-kong}POSTGRES_DB: kongports:- "5432:5432"healthcheck:test: ["CMD", "pg_isready", "-U", "kong"]interval: 30stimeout: 30sretries: 3######################################## Kong database migration#######################################kong-migration:image: ${KONG_DOCKER_TAG:-kong:latest}command: kong migrations bootstrapnetworks:- kong-netrestart: on-failureenvironment:KONG_DATABASE: postgresKONG_PG_HOST: kong-databaseKONG_PG_DATABASE: kongKONG_PG_USER: kongKONG_PG_PASSWORD: ${KONG_PG_PASSWORD:-kong}depends_on:- kong-database######################################## Kong: The API Gateway#######################################kong:image: ${KONG_DOCKER_TAG:-kong:latest}restart: on-failurenetworks:- kong-netenvironment:KONG_DATABASE: postgresKONG_PG_HOST: kong-databaseKONG_PG_DATABASE: kongKONG_PG_USER: kongKONG_PG_PASSWORD: ${KONG_PG_PASSWORD:-kong}KONG_PROXY_LISTEN: 0.0.0.0:8000KONG_PROXY_LISTEN_SSL: 0.0.0.0:8443KONG_ADMIN_LISTEN: 0.0.0.0:8001depends_on:- kong-databasehealthcheck:test: ["CMD", "kong", "health"]interval: 10stimeout: 10sretries: 10ports:- "8000:8000"- "8001:8001"- "8443:8443"- "8444:8444"######################################## Konga database prepare#######################################konga-prepare:image: pantsel/konga:latestcommand: "-c prepare -a postgres -u postgresql://kong:${KONG_PG_PASSWORD:-kong}@kong-database:5432/konga"networks:- kong-netrestart: on-failuredepends_on:- kong-database######################################## Konga: Kong GUI#######################################konga:image: pantsel/konga:latestrestart: alwaysnetworks:- kong-netenvironment:DB_ADAPTER: postgresDB_URI: postgresql://kong:${KONG_PG_PASSWORD:-kong}@kong-database:5432/kongaNODE_ENV: productiondepends_on:- kong-databaseports:- "1337:1337"
$ docker-compose up -d
出现下面内容表示安装完成了
Status: Downloaded newer image for kong:latestCreating compose_db_1 ... doneCreating compose_kong-migrations-up_1 ... doneCreating compose_kong_1 ... doneCreating compose_kong-migrations_1 ... done
查看启动的服务
$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESe3de856b6bb3 kong:latest "/docker-entrypoint.…" 2 minutes ago Up 2 minutes (healthy) 0.0.0.0:8000-8001->8000-8001/tcp, 0.0.0.0:8443-8444->8443-8444/tcp compose_kong_14eedde7cd7fd postgres:9.5 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes (healthy) 5432/tcp compose_db_1
k8s
官方安装 https://docs.konghq.com/2.1.x/kong-for-kubernetes/install/
YAML manifests
To deploy Kong via kubectl, use:
kubectl apply -f https://bit.ly/kong-ingress-dbless

如果使用数据库,我们建议在Kubernetes内部以内存中模式(也称为无db模式)运行Kong,因为所有配置都存储在Kubernetes控制平面中。这种设置简化了Kong的操作,因此无需担心数据库配置、备份、可用性、安全性等问题。如果您决定使用数据库,我们建议您在Kubernetes之外运行数据库。您可以使用Amazon的RDS之类的服务或云提供商提供的类似的托管Postgres服务来自动化数据库操作。
我们不建议在部署Kubernetes时使用与Cassandra一起使用的Kong,因为在Kubernetes中,Kong使用Cassandra所涵盖的特性是通过其他方式处理的。
konga配置
创建konga数据库,这个只需要首次启动konga的时候创建 只要不删除本地的volume 就不需要再次创建
$ docker run --rm --network=kong-net pantsel/konga:latest -c prepare -a postgres -u postgres://kong:kong@kong-database:5432/konga
开启konga服务
$ docker run -p 1337:1337 --network kong-net -e "DB_ADAPTER=postgres" -e "DB_URI=postgres://kong:kong@kong-database:5432/konga" -e "NODE_ENV=production" --name konga -d pantsel/konga



cenos
$ sudo yum update -y$ sudo yum install -y wget$ wget https://bintray.com/kong/kong-rpm/rpm -O bintray-kong-kong-rpm.repo$ export major_version=`grep -oE '[0-9]+\.[0-9]+' /etc/redhat-release | cut -d "." -f1`$ sed -i -e 's/baseurl.*/&\/centos\/'$major_version''/ bintray-kong-kong-rpm.repo$ sudo mv bintray-kong-kong-rpm.repo /etc/yum.repos.d/$ sudo yum update -y$ sudo yum install -y kong
日志
ong网关默认日志在/usr/local/kong/logs,主要有access.log,admin_access.log,error.log,access.log和nginx的access日志类似。
172.17.0.1 - - [10/Nov/2020:14:42:17 +0000] "GET /mock/request?key=hello-world HTTP/1.1" 200 1013 "-" "HTTPie/2.3.0"172.17.0.1 - - [10/Nov/2020:15:39:24 +0000] "GET /mock/request?key=hello HTTP/1.1" 403 33 "-" "HTTPie/2.3.0"

