kong入门实战
?
前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到教程。
安裝kong-database
docker run -d --name kong-database \-p 5432:5432 \-e "POSTGRES_USER=kong" \-e "POSTGRES_DB=kong" \postgres:9.4安裝kong
docker run -d --name kong \--link kong-database:kong-database \-e "KONG_DATABASE=postgres" \-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \-e "KONG_PG_HOST=kong-database" \-p 8000:8000 \-p 8443:8443 \-p 8001:8001 \-p 7946:7946 \-p 7946:7946/udp \kong:latest8000端口 http 監(jiān)聽(tīng)客戶端傳入的HTTP流量
8443端口 https 監(jiān)聽(tīng)客戶端傳入的HTTPS流量
8001端口 admin api監(jiān)聽(tīng)端口
安裝kong-dashboard
docker run -d -p 8080:8080 --name kong-dashboard pgbi/kong-dashboard:v2kong-dashboard管控臺(tái)訪問(wèn)地址http://172.16.222.115:8080
注冊(cè)api服務(wù)
有如下兩個(gè)api服務(wù)
http://172.16.222.115:8129/info
http://172.16.222.115:8129/users
向kong中添加api
curl -i -X POST --url http://172.16.222.115:8001/apis/ --data 'name=info' --data 'uris=/info,/getinfo' --data 'methods=GET' --data 'upstream_url=http://172.16.222.115:8129/info' --data 'strip_uri=true' curl -i -X POST --url http://172.16.222.115:8001/apis/ --data 'name=users' --data 'uris=/users,/getusers' --data 'methods=GET' --data 'upstream_url=http://172.16.222.115:8129/users' --data 'strip_uri=true'注意:
name為api服務(wù)名不能重復(fù)
hosts、uris、methods至少應(yīng)指定一個(gè),uris指定該api在kong上訪問(wèn)時(shí)的uri路徑,當(dāng)有多個(gè)時(shí)使用逗號(hào)分割
upstream_url為真正的api服務(wù)地址
strip_uri表示通過(guò)其中一個(gè)uris前綴匹配API時(shí),是否從upstream_url中刪除匹配到的uris前綴。默認(rèn)值:true
kong-dashboard管控臺(tái)api列表
訪問(wèn)注冊(cè)在kong中的api服務(wù)
curl -i -X GET --url http://172.16.222.115:8000/info curl -i -X GET --url http://172.16.222.115:8000/getinfo curl -i -X GET --url http://172.16.222.115:8000/users curl -i -X GET --url http://172.16.222.115:8000/getusers從kong中刪除api
curl -i -X DELETE http://172.16.222.115:8001/apis/info curl -i -X DELETE http://172.16.222.115:8001/apis/users查看apis列表
curl -i -X GET http://172.16.222.115:8001/apis或?yàn)g覽器訪問(wèn)http://172.16.222.115:8001/apis
插件管理
添加插件
/apis/{name or id}/plugins/
- 安裝file-log插件
- 安裝rate-limiting
- 安裝ip-restriction插件
- 安裝key-auth插件
創(chuàng)建Consumer
curl -X POST http://172.16.222.115:8001/consumers/ \--data "username=admin" \--data "custom_id=qtonecloud-admin"curl -X POST http://172.16.222.115:8001/consumers/ \--data "username=guest" \--data "custom_id=qtonecloud-guest"創(chuàng)建API Key
curl -X POST http://172.16.222.115:8001/consumers/{consumer}/key-auth -d ''使用API Key調(diào)用服務(wù)
curl http://172.16.222.115:8000/getusers?apikey=ad097442ea4e4e0c911da52ad5c4cea2- 安裝basic-auth插件
創(chuàng)建Consumer
curl -d "username=qtonecloud&custom_id=qtonecloud" http://172.16.222.115:8001/consumers/創(chuàng)建Credential
curl -X POST http://172.16.222.115:8001/consumers/{consumer}/basic-auth \--data "username=admin" \--data "password=admin"使用Credential調(diào)用api服務(wù)
curl http://172.16.222.115:8000/getusers \-H 'Authorization: Basic YWRtaW46YWRtaW4='其中YWRtaW46YWRtaW4=為上一步中username與password的Base64編碼后的值即admin:admminBase64編碼后的值
- 安裝ACL插件
ACL依賴authentication plugin
安裝acl,添加組白名單、黑名單
curl -X POST http://172.16.222.115:8001/apis/{api}/plugins \--data "name=acl" \--data "config.whitelist=user, admin"--data "config.blacklist=guest"關(guān)聯(lián)Consumers
curl -X POST http://172.16.222.115:8001/consumers/{consumer}/acls \--data "group=guest"啟用任何一種Authentication插件,如之前安裝的basic-auth或key-auth插件
使用對(duì)應(yīng)的Authentication插件認(rèn)證方式調(diào)用api
查看插件列表
curl -i -X GET http://172.16.222.115:8001/plugins或?yàn)g覽器訪問(wèn)http://172.16.222.115:8001/plugins
kong-dashboard管控臺(tái)插件列表
rate-limiting插件限流
ip-restriction插件IP黑名單
key-auth插件
basic-auth
acl
同時(shí)啟用basic-auth和acl
參考資料
https://getkong.org/install/docker/
https://getkong.org/plugins/
https://github.com/PGBI/kong-dashboard
?
原文地址:?https://github.com/ameizi/DevArticles/issues/165總結(jié)
- 上一篇: MFC SDI 中 通过注册表保存当前
- 下一篇: 数论基础_素数相关