Kong基礎搭建教程
在微服務的搭建過程中我們往往需要將多個服務進行聚合從而提供對外服務,經過實際的調研最終選定Kong作為最終的網關。
一、Kong環境搭建
1. 下載鏡像
下載數據庫鏡像
docker pull postgres:9.6
下載kong鏡像
docker pull kong:2.0
2. 創建網絡
為了保證互相可以正常訪問,這里單獨創建一個網絡。
docker network create kong-net
3. 創建數據庫
為了保證數據能夠得到保存,我們這里利用pg創建一個數據庫。
docker run -d --name kong-database --network=kong-net -p 5432:5432 -e "POSTGRES_USER=kong" -e "POSTGRES_DB=kong" postgres:9.6
4. 初始化數據庫
為了保證后續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:2.0 kong migrations bootstrap
如果順利運行則最終會輸出Database is up-to-date
表示數據庫完成初始化操作。
5. 啟動Kong
完成了以上的相關准備工作后我們這里就可以啟動網關了。
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:2.0
通過以上配置我們可以得知,我們把管理端口調整到了8001
和8444
端口,而對應對外負責處理請求的端口則是8000
和8443
(SSL)。如果成功啟動則我們通過本地瀏覽器訪問8001
端口將會看到對應輸出內容。
二、 Konga環境搭建
1. 下載鏡像
docker pull pantsel/konga:0.14.7
2. 初始化數據庫
這里為了符合實際,這里將采用上述教程中已經創建的pg數據庫,首先我們需要進入容器進行數據庫創建。
docker exec -it kong-database psql -U kong
進入后輸入以下語句創建數據庫。
CREATE DATABASE "konga" WITH ENCODING='UTF8';
完成創建后通過\q
退出控制台,借助我們使用konga
對數據庫進行初始化操作。
docker run --rm --network=kong-net pantsel/konga:0.14.7 -c prepare -a postgres -u postgresql://kong@kong-database/konga
如果沒有任何錯誤就完成了konga
的數據庫初始化工作,我們接着往下開始部署konga
看板。
3. 啟動konga
下面我們直接啟動對應的看板UI。
docker run -d -p 1337:1337 --network=kong-net -e "TOKEN_SECRET=123456" -e "DB_ADAPTER=postgres" -e "DB_HOST=kong-database" -e "DB_USER=kong" -e "DB_DATABASE=konga" -e "NODE_ENV=production" --name konga pantsel/konga:0.14.7
完成后我們通過訪問localhost:1337
即可看到注冊頁面,此時我們需要注冊一個管理員賬戶就可以對kong
進行管理了。
4. 利用Konga創建服務
完成賬戶注冊后用戶使用注冊的賬戶進入管理界面就可以對Kong進行控制了,首先我們選擇SERVICES
菜單進入到服務列表中,通過按鈕ADD NEW SERVICE
將會彈出新建服務的窗口我們按照如下進行對應參數的填寫即可。
Name
:填寫服務的名稱(如 kong-api)Protocol
:服務的協議(如 http)Host
: 上游服務器地址(如 本機IP)Port
:上游服務端口(如 8001)Path
:上游服務路徑(如 /)
其他參數如Retries
、Connect timeout
、Write timeout
和Read timeout
主要是設定請求的充實次數和超時間等。
完成以上服務后我們還需要進行路由設定,指定對應的域名請求路由到該服務上。我們通過點擊剛創建的服務可以看到左側出現四個菜單,分別是Service details
、Routes
、Plugins
和Eligible Consumers
,這里我們選擇Routes
選項進入到路由列表,通過點擊ADD ROUTE
按鈕將會彈出路由新建窗口,這里我們需要按照如下順序填入對應的參數即可。
Name
:路由名稱(如 kong-api)Hosts
:域名地址(如 www.kong.com)Paths
:二級路徑(如 /)Methods
:請求方式(如 GET)
其他參數默認即可,其中需要注意Hosts
、Paths
和Methods
可以填寫多個值,所以需要錄入完成后回車進行確認,否則點擊創建將會提示參數未填寫。
完成以上的操作后我們通過本地的Hosts文件將域名www.kong.com
解析到本地然后通過訪問http://www.kong.com:8000
即可看到Kong
的Admin Api輸出的內容,這樣我們就完成了一個API的創建,當然還可以通過豐富的插件使Kong
更符合我們的應用。
三、 監控Kong
1. 環境准備
這里需要使用到Prometheus
和Grafana
,為了避免版本導致的區別這里提供了對應百度雲的下載地址,大家可以自行進行下載。
Prometheus對應提取碼為2b1r
Grafana對應提取碼為mjym
完成以上下載后需要解壓到對應文件夾下即可。
2. 啟用插件
為了能夠采集數據,這里我們需要通過Plugins
開啟Prometheus
插件,成功開啟后通過localhost:8001/metrics
就可以看看到指標了。
接着我們需要針對Prometheus
進行配置,打開prometheus.yml
文件,新增如下內容。
- job_name: 'kong'
scrape_interval: 5s
static_configs:
- targets: ['localhost:8001']
完成后開啟prometheus.exe
就可以完成數據采集了。
3. 可視化
此時我們打開Grafana
文件夾,通過其中的bin
目錄下的grafana-server.exe
啟動服務,然后訪問localhost:3000
利用初始賬戶密碼進行登錄(admin/admin)。
進入后添加Prometheus
數據源。由於AppMetrics已經提供了對應的看板所以我們可以通過ID7424
直接導入,並選擇正確的數據源就可以看到最終的效果了。