1. 程式人生 > >雲原生閘道器 Kong 和Kong 管理UI 的完全安裝攻略

雲原生閘道器 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

命令來建立一個掛載。如果你想知道更多可關注我的公眾號: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

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 。注意請不要使用localhost127.0.0.10.0.0.0 有可能聯通不上Kong。成功後就會出現 上面4. 所顯現的介面。

總結

今天對Kong的安裝、Konga的安裝進行了詳細的介紹。希望對你進一步瞭解和學習Kong有所幫助。

關注公眾號:碼農小胖哥 獲