雲原生閘道器 Kong 和Kong 管理UI 的完全安裝攻略
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
3.2 搭建資料庫環境
Kong 目前使用Cassandra(Facebook開源的分散式的NoSQL資料庫) 或者PostgreSql,你可以執行以下命令中的一個來選擇你的Database。請注意定義網路 --network=kong-net
。
- Cassandra容器:
docker run -d --name kong-database \ --network=kong-net \ -p 9042:9042 \ cassandra:3
- PostgreSQL容器:
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
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
3.3 初始化或者遷移資料庫
我們使用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
3.5 驗證
可通過 curl -i http://localhost:8001/
或者瀏覽器呼叫 http://localhost:8001/
來驗證Kong Admin 是否聯通 。
4. 安裝Kong 管理UI
Kong 企業版提供了管理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
4.2.2 初始化Konga資料庫
初始化 PostgreSQL 資料庫。
docker run --rm --network=kong-net \
pantsel/konga:latest
-c prepare
-a postgres
-u postgres://konga@konga-database:5432/konga
相關命令解讀:
命令 | 描述 | 預設 |
---|---|---|
-c | 執行的命令,這裡我們執行的是prepare | - |
-a | adapter 簡寫 ,可以是postgres 或者mysql | - |
-u | db 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. 所顯現的介面。
總結
今天對Kong的安裝、Konga的安裝進行了詳細的介紹。希望對你進一步瞭解和學習Kong有所幫助。
關注公眾號:碼農小胖哥 獲