雲原生網關 Kong 和Kong 管理UI 的徹底安裝攻略

1. 前言

上一文咱們對Kong網關的簡單介紹,今天咱們來搭建Kong的環境。以便於之後對Kong的進一步瞭解和學習。node

2. Kong支持的環境

從上圖來看Kong對Linux、MacOS、容器、雲 支持的仍是比較全面的。鑑於大部分國內開發者使用的是Windows環境。本文依然使用Docker進行安裝。建議對Docker不太瞭解的同窗學習相關的知識。也能夠關注個人公衆號:Felordcn 來及時獲取相關的知識。mysql

3. 安裝Kong

你的機器中必須有Docker環境,這個是前提。假設你已經具有了必須的環境。Kong的安裝其實仍是不復雜的,有些文章可能介紹的不是那麼清楚。Kong 安裝有兩種方式一種是沒有數據庫依賴的DB-less 模式,另外一種是with a Database 模式。咱們這裏使用第二種帶Database的模式,由於這種模式功能更全。git

3.1 構建Kong的容器網絡

首先咱們建立一個Docker自定義網絡,以容許容器相互發現和通訊。在下面的建立命令中kong-net是咱們建立的Docker網絡名稱,固然你可使用你認爲合適的名稱。github

docker network create kong-net

3.2 搭建數據庫環境

Kong 目前使用Cassandra(Facebook開源的分佈式的NoSQL數據庫) 或者PostgreSql,你能夠執行如下命令中的一個來選擇你的Database。請注意定義網絡 --network=kong-netsql

  • 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

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)。bootstrap

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有所幫助。

關注公衆號:碼農小胖哥 獲取更多資訊

相關文章
相關標籤/搜索