[前言]
當前端(Frontend) Web App 需要使用到多個API Servers時,最快的方式就是使用API Gateway 作為前端的進入點,透過URI Route的設定與對應後端的API & Server。
根據Janus's Github 上官方的描述, 它是一個輕量級的 API Gateway和 管理平台,可控制訪問 API 的人員、訪問時間以及訪問方式。Janus 還將記錄有關使用者如何與你的 API 交互以及何時出現問題的詳細分析。
官方文件: https://hellofresh.gitbooks.io/janus/content/
下面段落將說明如何快速制定與使用Janus API Gateway。
[如何快速制定與使用Janus API Gateway]
首先 複製 Github上的 Janus Source Code
~$ cd ~/
~$ git clone https://github.com/motiv-labs/janus.git
製作 Janus's Docker Image
~$ cd janus ~/janus$ docker build -t janus:debug .
利用janus/examples/front-proxy 內的設定作為我的範本(Template)
~/janus$ cd example/front-proxy
~/janus/examples/front-proxy$ tree -L 3
.
├── apis
│ ├── app.json <== I put my api's URI route definition here
│ └── example.json
├── docker-compose.yml
├── janus.toml
└── stubs <== Remove this folder because it is just for testing
├── service.json
└── status.json
在apis/app.json 放入我們需要的URI route 對應的設定,下列為app.json內容:
P.S: 可以在apis/內放多個.json檔案,裡面的內容如果需要定義多個以上的URI Routes,可以用逗號分隔多個設定並放入中括號內。
在apis/app.json 放入我們需要的URI route 對應的設定,下列為app.json內容:
P.S: 可以在apis/內放多個.json檔案,裡面的內容如果需要定義多個以上的URI Routes,可以用逗號分隔多個設定並放入中括號內。
[
{
"name" : "frontend9",
"active" : true,
"proxy" : {
"append_path" : true,
"listen_path" : "/k8s/podsvc/*",
"upstreams" : {
"balancing": "roundrobin",
"targets": [
{"target": "http://localhost:8088"}
]
},
"methods" : ["GET","POST"]
}
},
{
"name" : "simpleginserver2",
"active" : true,
"proxy" : {
"strip_path" : true,
"listen_path" : "/simple2/*",
"upstreams" : {
"balancing": "roundrobin",
"targets": [
{"target": "http://localhost:8001"}
]
},
"methods" : ["GET"]
}
}
]
說明: 以上述simpleginserver2 設定來說,我使用了 "strip_path" = true,客戶端對上面配置的API的請求:
GET /simple2/noaction HTTP/1.1
Host: localhost:8080
將導致 Janus 向上游服務發送以下請求如下:
將導致 Janus 向上游服務發送以下請求如下:
GET /noaction HTTP/1.1
Host: localhost:8001
GET /noaction HTTP/1.1
Host: localhost:8001
最後,需修改 docker-compose.yml
# 下列是我的範例
~/janus/examples/front-proxy$ cat docker-compose.yml
version: '3.3'
services:
janus:
image: janus:debug <== 改為之前所 build 的 docker image
ports:
- "8080:8080"
- "8081:8081"
volumes:
- ./janus.toml:/etc/janus/janus.toml
- ./apis:/etc/janus/apis
# 執行 Janus API Gateway
~/janus/examples/front-proxy$ docker-compose up -d
最後,需修改 docker-compose.yml
No comments:
Post a Comment