上一文咱們對Kong網關的簡單介紹,今天咱們來搭建Kong的環境。以便於之後對Kong的進一步瞭解和學習。node
從上圖來看Kong對Linux、MacOS、容器、雲 支持的仍是比較全面的。鑑於大部分國內開發者使用的是Windows環境。本文依然使用Docker進行安裝。建議對Docker不太瞭解的同窗學習相關的知識。也能夠關注個人公衆號:Felordcn 來及時獲取相關的知識。mysql
你的機器中必須有Docker環境,這個是前提。假設你已經具有了必須的環境。Kong的安裝其實仍是不復雜的,有些文章可能介紹的不是那麼清楚。Kong 安裝有兩種方式一種是沒有數據庫依賴的DB-less 模式,另外一種是with a Database 模式。咱們這裏使用第二種帶Database的模式,由於這種模式功能更全。git
首先咱們建立一個Docker自定義網絡,以容許容器相互發現和通訊。在下面的建立命令中kong-net
是咱們建立的Docker網絡名稱,固然你可使用你認爲合適的名稱。github
docker network create kong-net
Kong 目前使用Cassandra(Facebook開源的分佈式的NoSQL數據庫) 或者PostgreSql,你能夠執行如下命令中的一個來選擇你的Database。請注意定義網絡 --network=kong-net
。sql
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
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)。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.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 是否聯通 。
Kong 企業版提供了管理UI,開源版本是沒有的。可是有不少的開源的管理 UI ,其中比較好用的是Konga。項目地址:https://github.com/pantsel/konga
Konga 主要是用 AngularJS 寫的,運行於nodejs服務端。具備如下特性:
一樣咱們今天經過Docker來安裝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 | - |
-a | adapter 簡寫 ,能夠是postgres 或者mysql | - |
-u | db url 數據庫鏈接全稱 | - |
到此Konga的數據庫環境就搞定了。
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有所幫助。
關注公衆號:碼農小胖哥 獲取更多資訊