Kong 是 Mashape 开源的高性能高可用 API 网关和 API 管理服务层。它基于 OpenResty 进行 API 管理,并提供了插件实现 API 的 AOP。最近因工作的需要研究了 Kong 的相关应用实现。
由于本机的8001端口被占 所以8001被替换为8003
一.准备
kong 的官方文档提供了基于不同平台的安装方式,为了方便,这里使用 docker-compose 进行。
[root@xxbnz ~]# cd /home/src/
[root@xxbnz src]# ll
total 4
drwxr-xr-x 8 root root 4096 Sep 17 10:09 dnmp
[root@xxbnz src]# mkdir kong-gateway && cd kong-gateway
[root@xxbnz kong-gateway]# ll
total 0
[root@xxbnz kong-gateway]# touch docker-compose.yml
[root@xxbnz kong-gateway]# mkdir config plugins postgresql
[root@xxbnz php72]# cd ../../../kong-gateway/
[root@xxbnz kong-gateway]# ll
total 16
drwxr-xr-x 2 root root 4096 Sep 21 18:26 config
-rw-r--r-- 1 root root 966 Sep 21 18:28 docker-compose.yml
drwxr-xr-x 2 root root 4096 Sep 21 18:26 plugins
drwxr-xr-x 2 root root 4096 Sep 21 18:26 postgresql
上述创建名为 kong-gateway 的目录并且进入,然后在 kong-gateway 目录中创建 docker-compose.yml 文件,并且创建了 config、 plugins、 postgresql 三个文件夹。其中, config 文件夹用于存放 kong 网关配置, plugins 文件夹用于存放自定义插件, postgresql 文件夹用于存放 postgresql 数据文件,这三个文件夹将被挂载到 docker 容器中。 docker-compose.yml 文件定义如下:
version: '3'
services:
postgres:
image: postgres:9.6
ports:
- "5432:5432"
environment:
- POSTGRES_USER=kong
- POSTGRES_DB=kong
- POSTGRES_PASSWORD=kong
- PGDATA=/var/lib/postgresql/data
container_name: kong-database
volumes:
- ./postgresql/data:/var/lib/postgresql/data
kong:
image: kong:latest
container_name: kong
environment:
- KONG_DATABASE=postgres
- KONG_PG_HOST=kong-database
- KONG_PG_USER=kong
- KONG_PG_PASSWORD=kong
- KONG_CASSANDRA_CONTACT_POINTS=kong-database
- KONG_PROXY_ACCESS_LOG=/dev/stdout
- KONG_ADMIN_ACCESS_LOG=/dev/stdout
- KONG_PROXY_ERROR_LOG=/dev/stderr
- KONG_ADMIN_ERROR_LOG=/dev/stderr
ports:
- "8000:8000"
- "8003:8003" //8001:8001 被占用 改用8003
- "8443:8443"
- "7946:7946"
- "7946:7946/udp"
volumes:
- ./config:/etc/kong
- ./plugins:/etc/kong/plugins
depends_on:
- postgres
config 文件夹下放置 kong 的配置文件 kong.conf,简单定义如下:
prefix = /etc/kong/
log_level = debug
proxy_listen = 0.0.0.0:8000, 0.0.0.0:8443 ssl
admin_listen = 0.0.0.0:8003, 0.0.0.0:8444 ssl
database = postgres
pg_host = 127.0.0.1
pg_port = 5432
pg_user = kong
pg_password = kong
pg_database = kong
pg_ssl = off
pg_ssl_verify = off
上述准备好后的 kong-gateway文件夹目录如下:
[root@xxbnz kong-gateway]# tree
├── config
│ └── kong.conf
├── docker-compose.yml
├── plugins
└── postgresql
3 directories, 2 files
二.启动
首先准备数据库,执行下面命令:
[root@xxbnz kong-gateway]# docker-compose run kong kong migrations up
Creating network "konggateway_default" with the default driver
Pulling postgres (postgres:9.6)...
9.6: Pulling from library/postgres
802b00ed6f79: Already exists
4e0de21e2180: Pull complete
58b06ac4cd84: Pull complete
14e76b354b47: Pull complete
0f0c9f244b65: Pull complete
37117d8abb6d: Pull complete
8b541f5d818a: Pull complete
7cb4855fcd96: Pull complete
02dac872bc79: Pull complete
260defa8ced6: Pull complete
8d6200d741e7: Pull complete
252375ab8537: Pull complete
56e2f1d2303b: Pull complete
6eb2ae61937d: Pull complete
Digest: sha256:608ce712224026e9c5692a48130635166f710ff6a581542c3dd4d0da767e2a47
Status: Downloaded newer image for postgres:9.6
Creating kong-database ...
Creating kong-database ... done
Pulling kong (kong:latest)...
latest: Pulling from library/kong
3489d1c4660e: Pull complete
97eb239b37ff: Pull complete
136565b6d830: Pull complete
Digest: sha256:eb294641b50cf7aaf97aa65598f6e9483624d621588517f9561e7bec921221e9
Status: Downloaded newer image for kong:latest
migrating core for database kong
core migrated up to: 2015-01-12-175310_skeleton
core migrated up to: 2015-01-12-175310_init_schema
core migrated up to: 2015-11-23-817313_nodes
core migrated up to: 2016-02-29-142793_ttls
core migrated up to: 2016-09-05-212515_retries
core migrated up to: 2016-09-16-141423_upstreams
core migrated up to: 2016-12-14-172100_move_ssl_certs_to_core
core migrated up to: 2016-11-11-151900_new_apis_router_1
core migrated up to: 2016-11-11-151900_new_apis_router_2
core migrated up to: 2016-11-11-151900_new_apis_router_3
core migrated up to: 2016-01-25-103600_unique_custom_id
core migrated up to: 2017-01-24-132600_upstream_timeouts
core migrated up to: 2017-01-24-132600_upstream_timeouts_2
core migrated up to: 2017-03-27-132300_anonymous
core migrated up to: 2017-04-18-153000_unique_plugins_id
core migrated up to: 2017-04-18-153000_unique_plugins_id_2
core migrated up to: 2017-05-19-180200_cluster_events
core migrated up to: 2017-05-19-173100_remove_nodes_table
core migrated up to: 2017-06-16-283123_ttl_indexes
core migrated up to: 2017-07-28-225000_balancer_orderlist_remove
core migrated up to: 2017-10-02-173400_apis_created_at_ms_precision
core migrated up to: 2017-11-07-192000_upstream_healthchecks
core migrated up to: 2017-10-27-134100_consistent_hashing_1
core migrated up to: 2017-11-07-192100_upstream_healthchecks_2
core migrated up to: 2017-10-27-134100_consistent_hashing_2
core migrated up to: 2017-09-14-121200_routes_and_services
core migrated up to: 2017-10-25-180700_plugins_routes_and_services
core migrated up to: 2018-03-27-123400_prepare_certs_and_snis
core migrated up to: 2018-03-27-125400_fill_in_snis_ids
core migrated up to: 2018-03-27-130400_make_ids_primary_keys_in_snis
core migrated up to: 2018-05-17-173100_hash_on_cookie
migrating response-transformer for database kong
response-transformer migrated up to: 2016-05-04-160000_resp_trans_schema_changes
migrating ip-restriction for database kong
ip-restriction migrated up to: 2016-05-24-remove-cache
migrating statsd for database kong
statsd migrated up to: 2017-06-09-160000_statsd_schema_changes
migrating jwt for database kong
jwt migrated up to: 2015-06-09-jwt-auth
jwt migrated up to: 2016-03-07-jwt-alg
jwt migrated up to: 2017-05-22-jwt_secret_not_unique
jwt migrated up to: 2017-07-31-120200_jwt-auth_preflight_default
jwt migrated up to: 2017-10-25-211200_jwt_cookie_names_default
jwt migrated up to: 2018-03-15-150000_jwt_maximum_expiration
migrating cors for database kong
cors migrated up to: 2017-03-14_multiple_orgins
migrating basic-auth for database kong
basic-auth migrated up to: 2015-08-03-132400_init_basicauth
basic-auth migrated up to: 2017-01-25-180400_unique_username
migrating key-auth for database kong
key-auth migrated up to: 2015-07-31-172400_init_keyauth
key-auth migrated up to: 2017-07-31-120200_key-auth_preflight_default
migrating ldap-auth for database kong
ldap-auth migrated up to: 2017-10-23-150900_header_type_default
migrating hmac-auth for database kong
hmac-auth migrated up to: 2015-09-16-132400_init_hmacauth
hmac-auth migrated up to: 2017-06-21-132400_init_hmacauth
migrating datadog for database kong
datadog migrated up to: 2017-06-09-160000_datadog_schema_changes
migrating tcp-log for database kong
tcp-log migrated up to: 2017-12-13-120000_tcp-log_tls
migrating acl for database kong
acl migrated up to: 2015-08-25-841841_init_acl
migrating response-ratelimiting for database kong
response-ratelimiting migrated up to: 2015-08-03-132400_init_response_ratelimiting
response-ratelimiting migrated up to: 2016-08-04-321512_response-rate-limiting_policies
response-ratelimiting migrated up to: 2017-12-19-120000_add_route_and_service_id_to_response_ratelimiting
migrating request-transformer for database kong
request-transformer migrated up to: 2016-05-04-160000_req_trans_schema_changes
migrating rate-limiting for database kong
rate-limiting migrated up to: 2015-08-03-132400_init_ratelimiting
rate-limiting migrated up to: 2016-07-25-471385_ratelimiting_policies
rate-limiting migrated up to: 2017-11-30-120000_add_route_and_service_id
migrating oauth2 for database kong
oauth2 migrated up to: 2015-08-03-132400_init_oauth2
oauth2 migrated up to: 2016-07-15-oauth2_code_credential_id
oauth2 migrated up to: 2016-12-22-283949_serialize_redirect_uri
oauth2 migrated up to: 2016-09-19-oauth2_api_id
oauth2 migrated up to: 2016-12-15-set_global_credentials
oauth2 migrated up to: 2017-04-24-oauth2_client_secret_not_unique
oauth2 migrated up to: 2017-10-19-set_auth_header_name_default
oauth2 migrated up to: 2017-10-11-oauth2_new_refresh_token_ttl_config_value
oauth2 migrated up to: 2018-01-09-oauth2_pg_add_service_id
67 migrations ran
执行过程中将拉取 docker-compose.yml 中定义的 postgres:9.6 镜像和 kong:latest镜像,并执行数据库迁移操作。
迁移完成后,执行下面命令,启动 kong 网关:
[root@xxbnz kong-gateway]# docker-compose up --no-recreate -d
Starting kong-database ... done
Creating kong ...
Creating kong ... done
[root@xxbnz kong-gateway]# docker-compose ps
Name Command State Ports
----------------------------------------------------------------------------------------------------------------------------------------------------
kong /docker-entrypoint.sh kong ... Up 0.0.0.0:7946->7946/tcp, 0.0.0.0:7946->7946/udp, 0.0.0.0:8000->8000/tcp, 8001/tcp,
0.0.0.0:8003->8003/tcp, 0.0.0.0:8443->8443/tcp, 8444/tcp
kong-database docker-entrypoint.sh postgres Up 0.0.0.0:5432->5432/tcp
通过docker ps查看是否已经安装成功
[root@xxbnz kong-gateway]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58bee35c5789 kong:latest "/docker-entrypoint.…" 45 seconds ago Up 44 seconds 0.0.0.0:7946->7946/tcp, 0.0.0.0:8000->8000/tcp, 0.0.0.0:8003->8003/tcp, 8001/tcp, 0.0.0.0:8443->8443/tcp, 0.0.0.0:7946->7946/udp, 8444/tcp kong
6f3d818e4d1b postgres:9.6 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes
注: 各端口映射关系及作用
端口 作用
8000 监听http请求
8443 监听https请求
8003 admin api配置http端口
8444 admin api配置https端口
5432 postgresql端口
7946 监听udp请求 貌似没啥用 还未研究
查看网路端口使用情况:
[root@xxbnz kong-gateway]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1335/sshd
tcp 0 0 127.0.0.1:32000 0.0.0.0:* LISTEN 1113/java
tcp6 0 0 :::6379 :::* LISTEN 1979/docker-proxy
tcp6 0 0 :::80 :::* LISTEN 4840/docker-proxy
tcp6 0 0 :::8080 :::* LISTEN 1953/docker-proxy
tcp6 0 0 :::8081 :::* LISTEN 2384/docker-proxy
tcp6 0 0 :::5432 :::* LISTEN 12436/docker-proxy
tcp6 0 0 :::8443 :::* LISTEN 13161/docker-proxy
tcp6 0 0 :::443 :::* LISTEN 4814/docker-proxy
tcp6 0 0 :::8000 :::* LISTEN 13218/docker-proxy
tcp6 0 0 :::8001 :::* LISTEN 31964/docker-proxy
tcp6 0 0 :::8002 :::* LISTEN 1189/docker-proxy
tcp6 0 0 :::8003 :::* LISTEN 13189/docker-proxy
tcp6 0 0 :::7946 :::* LISTEN 13230/docker-proxy
tcp6 0 0 :::3306 :::* LISTEN 2378/docker-proxy
这时候控制台执行 curl http://127.0.0.1:8003/status可以看到管理端口输出的状态json。
[root@xxbnz kong-gateway]# curl http://127.0.0.1:8003/status
{"database":{"reachable":true},"server":{"connections_writing":1,"total_requests":1,"connections_handled":1,"connections_accepted":1,"connections_reading":0,"connections_active":1,"connections_waiting":0}}
三.运行
1.Service Object
Kong 中的 Service 对象代表了上游服务的一个抽象,主要由协议、主机名、端口、路径等组成。Service 和路由关联(一个Service可能会被关联至多个路由)。更多参见Kong Admin Api Service Object。
我们首先执行命令创建一个 Service, 这个 Service 名称为 baidu-service,对应的 url 地址为 https://juejin.im/post/5ba97ff95188255c9e02d3e3:
[root@xxbnz ~]# curl -i -X POST \
> --url http://127.0.0.1:8001/services/ \
> --data 'name=juejin-service' \
> --data 'url=https://juejin.im/post/5ba97ff95188255c9e02d3e3'
响应:
HTTP/1.1 201 Created
Date: Tue, 25 Sep 2018 08:20:13 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
Server: kong/0.14.1
Content-Length: 307
{"host":"juejin.im","created_at":1537863613,"connect_timeout":60000,"id":"b7e8bfda-c659-41de-9392-2b03886cb887","protocol":"http","name":"juejin-service","read_timeout":60000,"port":80,"path":"\/post\/5ba97ff95188255c9e02d3e3","updated_at":1537863613,"retries":5,"write_timeout":60000}
可以通过以下命令查看所有已创建的 Service:
[root@xxbnz ~]# curl -i -X GET --url http://127.0.0.1:8003/services/
响应:
HTTP/1.1 200 OK
Date: Tue, 25 Sep 2018 08:21:09 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
Server: kong/0.14.1
Content-Length: 330
{"next":null,"data":[{"host":"juejin.im","created_at":1537863613,"connect_timeout":60000,"id":"b7e8bfda-c659-41de-9392-2b03886cb887","protocol":"http","name":"juejin-service","read_timeout":60000,"port":80,"path":"\/post\/5ba97ff95188255c9e02d3e3","updated_at":1537863613,"retries":5,"write_timeout":60000}]}
也可以根据 serviceId 查看某个具体的 Service:
[root@xxbnz ~]# curl -i -X GET --url http://127.0.0.1:8003/services/b7e8bfda-c659-41de-9392-2b03886cb887
响应:
HTTP/1.1 200 OK
Date: Tue, 25 Sep 2018 08:50:07 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
Server: kong/0.14.1
Content-Length: 307
{"host":"juejin.im","created_at":1537863613,"connect_timeout":60000,"id":"b7e8bfda-c659-41de-9392-2b03886cb887","protocol":"http","name":"juejin-service","read_timeout":60000,"port":80,"path":"\/post\/5ba97ff95188255c9e02d3e3","updated_at":1537863613,"retries":5,"write_timeout":60000}
2.Route Object
路由定义了匹配客户端请求的规则,每一个路由关联一个 Service,每一个 Service 有可能被多个路由关联,每一个匹配到指定的路由请求将被代理到它关联的 Service 上。 更多参见Kong Admin Api Route Object。[https://docs.konghq.com/0.14.x/admin-api/#route-object]
首先创建一个Route:
[root@xxbnz ~]# curl -i -X POST \
> --url http://localhost:8003/services/juejin-service/routes \
> --data 'hosts[]=juejin.im'
响应:
HTTP/1.1 201 Created
Date: Tue, 25 Sep 2018 08:58:39 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
Server: kong/0.14.1
Content-Length: 306
{"created_at":1537865919,"strip_path":true,"hosts":["juejin.im"],"preserve_host":false,"regex_priority":0,"updated_at":1537865919,"paths":null,"service":{"id":"b7e8bfda-c659-41de-9392-2b03886cb887"},"methods":null,"protocols":["http","https"],"id":"00456c6b-81d0-4846-ba8c-82a02cded5c0"}
可以通过以下命令查看所有已创建的 Routes:
[root@xxbnz ~]# curl -i -X GET --url http://127.0.0.1:8003/routes
响应:
HTTP/1.1 200 OK
Date: Tue, 25 Sep 2018 09:01:08 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
Server: kong/0.14.1
Content-Length: 329
{"next":null,"data":[{"created_at":1537865919,"strip_path":true,"hosts":["juejin.im"],"preserve_host":false,"regex_priority":0,"updated_at":1537865919,"paths":null,"service":{"id":"b7e8bfda-c659-41de-9392-2b03886cb887"},"methods":null,"protocols":["http","https"],"id":"00456c6b-81d0-4846-ba8c-82a02cded5c0"}]}
也可以根据 routeId 查看某个具体的 Route:
[root@xxbnz ~]# curl -i -X GET --url http://127.0.0.1:8003/routes/00456c6b-81d0-4846-ba8c-82a02cded5c0
响应:
HTTP/1.1 200 OK
Date: Tue, 25 Sep 2018 09:02:40 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
Server: kong/0.14.1
Content-Length: 278
{"created_at":1537865919,"strip_path":true,"hosts":["juejin.im"],"preserve_host":false,"regex_priority":0,"updated_at":1537865919,"service":{"id":"b7e8bfda-c659-41de-9392-2b03886cb887"},"protocols":["http","https"],"id":"00456c6b-81d0-4846-ba8c-82a02cded5c0"}
3.运行
先执行如下命令执行:
[root@xxbnz ~]# curl -i -X GET --url http://127.0.0.1:8000
响应:
HTTP/1.1 404 Not Found
Date: Tue, 25 Sep 2018 08:45:53 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Server: kong/0.14.1
Content-Length: 58
{"message":"no route and no API found with those values"}
发现返回的是404 Not Found,因为我们在 route 中定义了 host,所以需要在 header 中指定 host。 根据 Kong Admin Api 要求,添加 Route 时,methods、hosts、path三者至少选择一个。修改请求如下:
[root@xxbnz ~]# curl -i -X GET \
> --url http://127.0.0.1:8000/ \
> --header 'Host: juejin.im'
响应:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Server: openresty/1.11.2.3
Vary: Accept-Encoding
X-Powered-By: PHP/7.1.19
Cache-Control: no-cache
Date: Tue, 25 Sep 2018 09:13:15 GMT
Set-Cookie: XSRF-TOKEN=eyJpdiI6Im1pN1paRWlocXhZWktHQzdEM1ZsZWc9PSIsInZhbHVlIjoiZ2paN3AyVnJDSkVVU0dnektqNjFTUnNaMUxaV1crNVFybTB5YnpuM2JnTzJ4WkdkaGJteldrV0lzNDcxRkpZQXBRUlZRZjhqVVwvVXR3VWRZaHN6bk5BPT0iLCJtYWMiOiJhZjRlMWE4MDc2MzNmMGUzNGQ5ZjI3YTA1YzBjNmVlYzMwMTQwMWM0OTI0YmRiZTc0OGY2OTNlMmFmNWVlZWI0In0%3D; expires=Tue, 25-Sep-2018 11:13:15 GMT; Max-Age=7200; path=/
Set-Cookie: laravel_session=eyJpdiI6InZmUFVPdWtUc2tycUxHZW9sWnJaUHc9PSIsInZhbHVlIjoiQTRVaUR5Umo2V2VMeVRSc2FzcWZOcXFxa0ZWd3pZYmNOZ1lSVndyaXZsWnpxSFJZQ2dpMjJiSFRrVWV4eVRoOWsxSExCbkJLalIzXC9pNGtUdCs3QnBBPT0iLCJtYWMiOiIwNWFhMzk4MzRhZDRmMjZkNDdlODA4NDlkNDRlMzlhMjliNDY4MDcxNTIwN2IwZTJiYThlYzFhMGFhMTczMzNmIn0%3D; expires=Tue, 25-Sep-2018 11:13:15 GMT; Max-Age=7200; path=/; HttpOnly
X-Cache-KMF: MISS
X-Kong-Upstream-Latency: 188
X-Kong-Proxy-Latency: 1
Via: kong/0.14.1
<!DOCTYPE html>
<!--STATUS OK--><html>... 省略html内容 ...</html>
4.安装dashboard
1) konga 安装 github: https://github.com/pantsel/konga
[root@xxbnz kong-gateway]# docker run -d -p 1337:1337 -e "DB_ADAPTER=postgres" -e "DB_HOST=kong-database" -e "DB_PORT=5432" -e "DB_USER=kong" -e "DB_PASSWORD=kong" -e "DB_DATABASE=kong_dashboard" -e "NODE_ENV=production" --name kong_dashboard pantsel/konga
Unable to find image 'pantsel/konga:latest' locally
latest: Pulling from pantsel/konga
a073c86ecf9e: Pull complete
db7179d8c6cd: Pull complete
66b9cfaecc8c: Pull complete
0dbd11be87d6: Pull complete
38c21bd98093: Pull complete
Digest: sha256:c5553c3ab6121f2c32b1739b280aede9d25f0d10e404b8e90e44899e1931399b
Status: Downloaded newer image for pantsel/konga:latest
08e9c8847ae5d0f440e603b61bd10408c17b704a5c141a78e022f0fbbf8df621
查看安装结果:
[root@xxbnz kong-gateway]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
08e9c8847ae5 pantsel/konga "/app/start.sh" 7 seconds ago Up 5 seconds 0.0.0.0:1337->1337/tcp kong_dashboard
58bee35c5789 kong:latest "/docker-entrypoint.…" 4 days ago Up 4 days 0.0.0.0:7946->7946/tcp, 0.0.0.0:8000->8000/tcp, 0.0.0.0:8003->8003/tcp, 8001/tcp, 0.0.0.0:8443->8443/tcp, 0.0.0.0:7946->7946/udp, 8444/tcp kong
6f3d818e4d1b postgres:9.6 "docker-entrypoint.s…" 4 days ago Up 4 days 0.0.0.0:5432->5432/tcp kong-database
2) pgbi/kong-dashboard 安装 github: https://github.com/PGBI/kong-dashboard
官方提供的安装方法如下:
# Start Kong Dashboard
docker run --rm -p 8080:8080 pgbi/kong-dashboard start --kong-url http://kong:8001
# Start Kong Dashboard on a custom port
docker run --rm -p [port]:8080 pgbi/kong-dashboard start --kong-url http://kong:8001
# Start Kong Dashboard with basic auth
docker run --rm -p 8080:8080 pgbi/kong-dashboard start \
--kong-url http://kong:8001
--basic-auth user1=password1 user2=password2
# See full list of start options
docker run --rm -p 8080:8080 pgbi/kong-dashboard start --help
自己安装折腾了几遍有一些问题:
[root@xxbnz ~]# docker run --rm -p 8082:8082 pgbi/kong-dashboard start --kong-url http://127.0.0.1:8003
响应:
Connecting to Kong on http://127.0.0.1:8003 ...
Could not reach Kong on http://127.0.0.1:8003
Error details:
{ Error: connect ECONNREFUSED 127.0.0.1:8003
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1161:14)
errno: 'ECONNREFUSED',
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 8003 }
解决办法: 参考:https://blog.csdn.net/jiangyu1013/article/details/80810832
https://github.com/PGBI/kong-dashboard/issues/156
1.创建桥接网络
[root@xxbnz ~]# docker network create my-net-kong
44a88f33aefca80e9c0220272a57022dbef26b4819b8fdf7626ffa38f5a18c23
2.将Kong容器添加到它
[root@xxbnz ~]# docker network connect my-net-kong kong
3.运行kong-dashboard时提供网络信息
[root@xxbnz ~]# docker run --rm --network my-net-kong -d -p 8082:8080 pgbi/kong-dashboard start --kong-url http://kong:8003
-d 后台运行 --network共享网络 --kong-url http://kong:8003 这里kong不能改 用其他会报错 由于我本地端口被占用 kong-dashboard所以换成8082 kong改成8003
查看安装结果:
[root@xxbnz ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3c2a1d58b7c4 pgbi/kong-dashboard "./docker/entrypoint…" 12 seconds ago Up 11 seconds 0.0.0.0:8082->8080/tcp reverent_kare
访问: http://xxxx:8082/#!/
至此,一个简单的 kong 网关运行成功。但是正如 kong 官网所描述,它具备很多其他特性,后续将对重要的继续介绍。