上一文我們對Kong網關的簡單介紹,今天我們來搭建Kong的環境。以便於以後對Kong的進一步了解和學習。
2. Kong支持的環境從上圖來看Kong對Linux、MacOS、容器、雲 支持的還是比較全面的。鑑於大部分國內開發者使用的是Windows環境。本文依然使用Docker進行安裝。建議對Docker不太了解的同學學習相關的知識。也可以關注我的公眾號:Felordcn 來及時獲取相關的知識。
3. 安裝Kong你的機器中必須有Docker環境,這個是前提。假設你已經具備了必須的環境。Kong的安裝其實還是不複雜的,有些文章可能介紹的不是那麼清楚。Kong 安裝有兩種方式一種是沒有資料庫依賴的DB-less 模式,另一種是with a Database 模式。我們這裡使用第二種帶Database的模式,因為這種模式功能更全。
3.1 構建Kong的容器網絡首先我們創建一個Docker自定義網絡,以允許容器相互發現和通信。在下面的創建命令中kong-net是我們創建的Docker網絡名稱,當然你可以使用你認為合適的名稱。
docker network create kong-net
Kong 目前使用Cassandra(Facebook開源的分布式的NoSQL資料庫) 或者PostgreSql,你可以執行以下命令中的一個來選擇你的Database。請注意定義網絡 --network=kong-net 。
docker run -d --name kong-database \
--network=kong-net \
-p 9042:9042 \
cassandra:3
docker run -d --name kong-database \
--network=kong-net \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
postgres:9.6
這裡有個小問題。如果你使用的是PostgreSQL,想掛載卷持久化數據到宿主機。通過 -v 命令是不好用的。這裡推薦你使用 docker volume create 命令來創建一個掛載。如果你想知道更多可關注我的公眾號:Felordcn 或者通過https://felord.cn 來獲取更多信息。
docker volume create kong-volume
然後上面的PostgreSQL就可以通過- v kong-volume:/var/lib/postgresql/data 進行掛載了。
docker run -d --name kong-database \
--network=kong-net \
-p 5432:5432 \
-v kong-volume:/var/lib/postgresql/data \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
postgres:9.6
我們使用docker run --rm來初始化資料庫,該命令執行後會退出容器而保留內部的數據卷(volume)。
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 bootstrap
這個命令我們還是要注意的,一定要跟你聲明的網絡,資料庫類型、host名稱一致。同時注意Kong的版本號,本文是在Kong 1.3 版本下完成的。
3.4 啟動Kong容器3.3步驟完成初始化或者遷移資料庫後,我們就可以啟動一個連接到資料庫容器的Kong容器,請務必保證你的資料庫容器啟動狀態,同時檢查所有的環境參數 -e 是否是你定義的環境。
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
可通過 curl -i http://localhost:8001/ 或者瀏覽器調用 http://localhost:8001/ 來驗證Kong Admin 是否聯通 。
4. 安裝Kong 管理UIKong 企業版提供了管理UI,開源版本是沒有的。但是有很多的開源的管理 UI ,其中比較好用的是Konga。項目地址:https://github.com/pantsel/konga
4.1 Konga 特性Konga 主要是用 AngularJS 寫的,運行於nodejs服務端。具有以下特性:
管理所有Kong Admin API對象。
支持從遠程源(資料庫,文件,API等)導入使用者。
管理多個Kong節點。使用快照備份,還原和遷移Kong節點。
使用運行狀況檢查監視節點和API狀態。
支持電子郵件和閒置通知。
支持多用戶。
易於資料庫集成(MySQL,postgresSQL,MongoDB,SQL Server)。
4.2 docker安裝Konga同樣我們今天通過Docker來安裝Konga。安裝步驟同樣遵循配置資料庫,初始化資料庫,啟動容器的流程。
4.2.1 Konga資料庫容器上面在4.1特性介紹中我們介紹了Konga支持的資料庫類型。這裡我們依然使用PostgreSQL。請注意我新定義了掛載卷konga-postgresql 。
docker run -d --name konga-database \
--network=kong-net \
-p 5433:5432 \
-v konga-postgresql:/var/lib/postgresql/data \
-e "POSTGRES_USER=konga" \
-e "POSTGRES_DB=konga" \
-e "POSTGRES_PASSWORD=konga" \
postgres:9.6
初始化 PostgreSQL 資料庫。
docker run --rm --network=kong-net \
pantsel/konga:latest
-c prepare
-a postgres
-u postgres://konga@konga-database:5432/konga
相關命令解讀:
命令描述默認-c執行的命令,這裡我們執行的是prepare--aadapter 簡寫 ,可以是postgres 或者mysql--udb url 資料庫連接全稱-到此Konga的資料庫環境就搞定了。
4.2.3 環境參數Konga 還有一些可配置的環境參數:
4.2.4 啟動Konga通過以下命令就可以啟動Konga容器了
docker run -d -p 1337:1337 \
--network kong-net \
-e "DB_ADAPTER=postgres" \
-e "DB_URI=postgres://konga@konga-database:5432/konga" \
-e "NODE_ENV=production" \
-e "DB_PASSWORD=konga" \
--name konga \
pantsel/konga
運行完後,如果成功可以通過http://localhost:1337 連結到控制臺。通過註冊後進入,然後在dashboard面板裡面添加Kong的管理Api路徑http://yourdomain 。這裡添加 http://ip:8001 。注意請不要使用localhost、127.0.0.1 、0.0.0.0 有可能聯通不上Kong。成功後就會出現 上面4. 所顯現的界面。
5. 總結今天對Kong的安裝、Konga的安裝進行了詳細的介紹。希望對你進一步了解和學習Kong有所幫助。