Kong - The Microservice API Gateway
由於眾所周知的原因,架設在 HK 服務沒法使用 https 訪問了,故搭建一套私有API 網關。
1 . Kong
The open-source API Gateway and Microservices Management Layer, delivering high performance and reliability.
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 used in production at thousands of organizations from startups, Global 5000 and Government organizations.
技術層面的東西,想了解童鞋可以自行搜索或點擊文末的鏈接,這裡不再廢話了~
簡單說下使用場景:
- Nginx 反向代理的替代品(手動配 Proxy 數量多了真蛋疼啊)
- 微服務場景下的動態路由實現
- 因為資料庫的存在以及 Nginx+LUA 的存在,認證可以放在nginx層面來處理;日誌也可以動態配置;其次,限流限速自然不在話下;更甚者,對請求/返回數據做做處理也不在話下嘍~
總的來說,就是讓 nginx 擁有了編程能力,做什麼,看需求吧~
2 . Install
version: 2nservices:n pg: n image: postgres:9.4n ports: n - 5432:5432 n environment:n - POSTGRES_USER=kongn - POSTGRES_DB=kong n - POSTGRES_PASSWORD=suyin volumes:n - kong-pg:/var/lib/postgresql/datan networks:n - docker_kongnn kong:n image: kong:latestn # command: kong migrations upn ports: n - 9000:8000n ## - 9001:8001n - 9443:8443n # - 9444:8444n environment:n - KONG_DATABASE=postgresn - KONG_PG_HOST=pgn - KONG_PG_USER=kongn - KONG_PG_PASSWORD=suyin - KONG_PG_DATABASE=kongn depends_on:n - pgn networks:n - docker_kongn dashboard: n image: pgbi/kong-dashboard:v2n ports: n - 9080:8080 n networks:n - docker_kongn nnetworks:n docker_kong:n driver: bridge nnvolumes:n kong-pg: n
其實官方的文檔寫的已經很完整了,我這裡只是貼一下自己的配置~
3. Setup
瀏覽器打開 Dashboard,填寫下面的地址即可使用了
http://kong:8001n
3.1 安全配置
3.1.1 添加一條新的API
- name: kong-adminn- uris: /admin-apin- upstream url: http://kong:8001n
3.1.2 給這個 API 配置一個 plugin , 簡單起見,我們就只配 basic-auth 即可
3.1.3 Consumers 下添加一個用戶
3.1.4 點右下角編輯,重新地址如下即可
http://kong:8000/admin-apin
3.1.5 重新配置一下docker,隱藏 8001/8444 的埠吧,如果有空閑的埠,在物理機上應該配置成 80:8000/443:8443(當然,有lb在前面的話,只對外保留:8000 就夠了)
4 . More
集群啊,負載均衡,高可用什麼的,看文檔吧~
Kong 插件很多,按需使用吧,不滿足需求的,用LUA開擼唄~
推薦閱讀:
※varnish / squid / nginx cache 有什麼不同?
※Nginx反向代理為什麼可以提高網站性能?
※nginx配置https
※如何解讀Nginx源碼?
※假如有一張100W左右數據的表,根據查詢條件進行分頁。如何分頁?