2018年12月24日 星期一

Kong - API Gateway - 安裝 (一)

3. Kong Load Balancer (Upstream, Target, Hash-on)
4. Plugin - 認證 Authentication、授權 ACL (待)
5. Plugin - Logging (待)
6. Plugin - Traffic 流量管制 (待)


Kong 支援多種 OS,
但拜 DevOps 日益盛行,Docker微服務架構越來越被大家採用,對於要入門的新手來說大大簡化的安裝門檻。以 Docker 方式安裝 Kong:

一、Kong 安裝:
參考: https://docs.konghq.com/install/docker/

1. 建立一個 docker network

    $ docker network create kong-net

2. 建立啟動一個 Postgres 資料庫 Container

    $ docker run -d --name kong-database \
               --network=kong-net \
               -p 5432:5432 \
               -e "POSTGRES_USER=kong" \
               -e "POSTGRES_DB=kong" \
               postgres:9.6

3. 初始化 Kong 資料庫資料

     $ docker run --rm \
         --network=kong-net \
         -e "KONG_DATABASE=postgres" \
         -e "KONG_PG_HOST=kong-database" \
         -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
         kong:latest kong migrations up

4. 建立啟動 Kong Container

     $ docker run -d --name kong \
         --network=kong-net \
         -e "KONG_DATABASE=postgres" \
         -e "KONG_PG_HOST=kong-database" \
         -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 8001:8001 \
         -p 8444:8444 \
         kong:latest

5. 驗證 Kong 安裝成功

    Browser打上Kong Server IP 的 8001 port,驗證 Kong 的安裝,
    以我環境的 IP 為例:http://192.168.56.9:8001/。
    出現下面這個畫面,就裝成功了。



二、Konga - Kong Admin GUI 安裝 (Docker Container):
Kong 有提供管理用的 Restful API ,讓管理人員可以註冊刪除 API、加入Plugin等等,但還是裝個 UI 來管理容易的多,Kong Admin UI 有很多套,我這邊是用 Konga 這套。沒有什麼特別原因,其他的沒去試。
參考:  https://github.com/pantsel/konga/blob/master/README.md

1. 初始化 Konga 資料庫資料

    $ docker run --network=kong-net --rm pantsel/konga:latest -c prepare -a postgres -u postgresql://kong@kong-database:5432/konga

2. 建立啟動 Konga Container

    $ docker run -p 1337:1337 --network kong-net -e "TOKEN_SECRET=KONGAKEY" -e "DB_ADAPTER=postgres" -e "DB_URI=postgresql://kong@kong-database:5432/konga" -e "NODE_ENV=production" --name konga pantsel/konga

3. 第一次登入,預設跳出註冊 Admin User 畫面

    Konga啟在 1337 port,以我的環境為例: http://192.168.56.9:1337。



4. 設定 Kong 連線
    Konga Admin 網站還不知道要連去哪個 Kong Server,所以要新增一個 Kong Connection。


    指定前面驗證 Kong 安裝的 URL, http://192.168.56.9:8001。


5. 功能選單

    連線設定成功,左方功能選單會出現 INFO, SERVICES, ROUTES, APIS, CONSUMMERS, PLUGINS, UPSTREAMS, CERTIFICATES等功能。

    環境大致這樣就建立完成了。
    共建立三個 docker container,包括:postgres, kong , konga。


    而對於流量很大的 API Gateway,通常會建立多部的 Kong Server Instance,前面再加一個網路 Load Balancer 來應付。又如果上游的 API 服務有多個 Instance,那 Kong 有支援 Load Balance 機制,讓同一個 API 服務,可以分流到多個 API 服務實體上。
參考: 官方Load Balance機制文件Kong Load Balancer 解說(簡中)

    1. Kong 安裝、Konga - Kong Admin GUI 安裝
    2. 註冊 API、Postman 測試 API 
    3. Kong Load Balancer (Upstream, Target, Hash-on)    
    4. Plugin - 認證 Authentication、授權 ACL (待)
    5. Plugin - Logging (待)
    6. Plugin - Traffic 流量管制 (待)





沒有留言: