kong/konga之docker部署

1. 前言

上一文我們對(duì)Kong網(wǎng)關(guān)的簡(jiǎn)單介紹,今天我們來(lái)搭建Kong的環(huán)境。以便于以后對(duì)Kong的進(jìn)一步了解和學(xué)習(xí)被辑。

2. Kong支持的環(huán)境

image.png

從上圖來(lái)看Kong對(duì)Linux液肌、MacOS、容器识埋、云 支持的還是比較全面的树埠。

官網(wǎng)地址
github地址

3. 安裝Kong

你的機(jī)器中必須有Docker環(huán)境稽荧,這個(gè)是前提年碘。澈歉。Kong 安裝有兩種方式一種是沒(méi)有數(shù)據(jù)庫(kù)依賴(lài)的DB-less 模式,另一種是with a Database 模式屿衅。我們這里使用第二種帶Database的模式埃难,因?yàn)檫@種模式功能更全。

3.1 構(gòu)建Kong的容器網(wǎng)絡(luò)

首先我們創(chuàng)建一個(gè)Docker自定義網(wǎng)絡(luò)涤久,以允許容器相互發(fā)現(xiàn)和通信涡尘。在下面的創(chuàng)建命令中kong-net是我們創(chuàng)建的Docker網(wǎng)絡(luò)名稱(chēng)。

docker network create kong-net

3.2 搭建數(shù)據(jù)庫(kù)環(huán)境

Kong 目前使用Cassandra(Facebook開(kāi)源的分布式的NoSQL數(shù)據(jù)庫(kù)) 或者PostgreSql,你可以執(zhí)行以下命令中的一個(gè)來(lái)選擇你的Database响迂。請(qǐng)注意定義網(wǎng)絡(luò) --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

這里有個(gè)小問(wèn)題。如果你使用的是PostgreSQL蔗彤,想掛載卷持久化數(shù)據(jù)到宿主機(jī)川梅。通過(guò) -v 命令是不好用的。這里推薦你使用 docker volume create 命令來(lái)創(chuàng)建一個(gè)掛載然遏。

docker volume create kong-volume

然后上面的PostgreSQL就可以通過(guò)- v kong-volume:/var/lib/postgresql/data 進(jìn)行掛載了贫途。

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 初始化或者遷移數(shù)據(jù)庫(kù)

我們使用docker run --rm來(lái)初始化數(shù)據(jù)庫(kù),該命令執(zhí)行后會(huì)退出容器而保留內(nèi)部的數(shù)據(jù)卷(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

這個(gè)命令我們還是要注意的丢早,一定要跟你聲明的網(wǎng)絡(luò),數(shù)據(jù)庫(kù)類(lèi)型诫给、host名稱(chēng)一致香拉。同時(shí)注意Kong的版本號(hào),本文是在Kong 1.4.x 版本下完成的中狂。

3.4 啟動(dòng)Kong容器

3.3步驟完成初始化或者遷移數(shù)據(jù)庫(kù)后凫碌,我們就可以啟動(dòng)一個(gè)連接到數(shù)據(jù)庫(kù)容器的Kong容器,請(qǐng)務(wù)必保證你的數(shù)據(jù)庫(kù)容器啟動(dòng)狀態(tài)胃榕,同時(shí)檢查所有的環(huán)境參數(shù) -e 是否是你定義的環(huán)境盛险。

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 驗(yàn)證

可通過(guò) curl -i <wiz_tmp_plugin_tag id="wizKMHighlighterSpan_t_t" style="color: rgb(0, 0, 0); cursor: pointer; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 204); border-bottom-style: dashed; background-color: rgb(234, 188, 244);">http</wiz_tmp_plugin_tag>://localhost:8001/ 或者瀏覽器調(diào)用 http://localhost:8001/ 來(lái)驗(yàn)證Kong Admin 是否聯(lián)通 。

[圖片上傳失敗...(image-6e277e-1577349919300)]

4. 安裝Kong 管理UI

Kong 企業(yè)版提供了管理UI勋又,開(kāi)源版本是沒(méi)有的苦掘。但是有很多的開(kāi)源的管理 UI ,其中比較好用的是Konga楔壤。項(xiàng)目地址:https://github.com/pantsel/konga

image.png

4.1 Konga 特性

Konga 主要是用 AngularJS 寫(xiě)的鹤啡,運(yùn)行于nodejs服務(wù)端。具有以下特性:

  • 管理所有Kong Admin API對(duì)象蹲嚣。
  • 支持從遠(yuǎn)程源(數(shù)據(jù)庫(kù)递瑰,文件祟牲,API等)導(dǎo)入使用者。
  • 管理多個(gè)Kong節(jié)點(diǎn)抖部。使用快照備份说贝,還原和遷移Kong節(jié)點(diǎn)。
  • 使用運(yùn)行狀況檢查監(jiān)視節(jié)點(diǎn)和API狀態(tài)慎颗。
  • 支持電子郵件和閑置通知乡恕。
  • 支持多用戶(hù)。
  • 易于數(shù)據(jù)庫(kù)集成(MySQL俯萎,postgresSQL傲宜,MongoDB,SQL Server)夫啊。

4.2 docker安裝Konga

同樣我們今天通過(guò)Docker來(lái)安裝Konga蛋哭。安裝步驟同樣遵循配置數(shù)據(jù)庫(kù),初始化數(shù)據(jù)庫(kù)涮母,啟動(dòng)容器的流程。

4.2.1 Konga數(shù)據(jù)庫(kù)容器

上面在4.1特性介紹中我們介紹了Konga支持的數(shù)據(jù)庫(kù)類(lèi)型躁愿。這里我們依然使用PostgreSQL叛本。請(qǐng)注意我新定義了掛載卷konga-postgresql

 docker volume create 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" \
postgres:9.6

4.2.2 初始化Konga數(shù)據(jù)庫(kù)

初始化 PostgreSQL 數(shù)據(jù)庫(kù)彤钟。

docker run --rm  --network=kong-net  \
pantsel/konga:latest 
-a postgres
-u postgres://konga@konga-database:5432/konga

相關(guān)命令解讀:

命令 描述 默認(rèn)
-c 執(zhí)行的命令来候,這里我們執(zhí)行的是prepare -
-a adapter 簡(jiǎn)寫(xiě) ,可以是postgres 或者mysql -
-u db url 數(shù)據(jù)庫(kù)連接全稱(chēng) -

到此Konga的數(shù)據(jù)庫(kù)環(huán)境就搞定了逸雹。

4.2.3 環(huán)境參數(shù)

Konga 還有一些可配置的環(huán)境參數(shù):

VAR DESCRIPTION VALUES DEFAULT
HOST The IP address that will be bind by Konga's server - '0.0.0.0'
PORT The port that will be used by Konga's server - 1337
NODE_ENV The environment production,development development
SSL_KEY_PATH If you want to use SSL, this will be the absolute path to the .key file. Both SSL_KEY_PATH & SSL_CRT_PATH must be set. - null
SSL_CRT_PATH If you want to use SSL, this will be the absolute path to the .crt file. Both SSL_KEY_PATH & SSL_CRT_PATH must be set. - null
KONGA_HOOK_TIMEOUT The time in ms that Konga will wait for startup tasks to finish before exiting the process. - 60000
DB_ADAPTER The database that Konga will use. If not set, the localDisk db will be used. mongo,mysql,postgres -
DB_URI The full db connection string. Depends on DB_ADAPTER. If this is set, no other DB related var is needed. - -
DB_HOST If DB_URI is not specified, this is the database host. Depends on DB_ADAPTER. - localhost
DB_PORT If DB_URI is not specified, this is the database port. Depends on DB_ADAPTER. - DB default.
DB_USER If DB_URI is not specified, this is the database user. Depends on DB_ADAPTER. - -
DB_PASSWORD If DB_URI is not specified, this is the database user's password. Depends on DB_ADAPTER. - -
DB_DATABASE If DB_URI is not specified, this is the name of Konga's db. Depends on DB_ADAPTER. - konga_database
DB_PG_SCHEMA If using postgres as a database, this is the schema that will be used. - public
KONGA_LOG_LEVEL The logging level silly,debug,info,warn,error debug on dev environment & warn on prod.
TOKEN_SECRET The secret that will be used to sign JWT tokens issued by Konga - -
NO_AUTH Run Konga without Authentication true/false -
BASE_URL Define a base URL or relative path that Konga will be loaded from. Ex: www.example.com/konga -
KONGA_SEED_USER_DATA_SOURCE_FILE Seed default users on first run. Docs. -
KONGA_SEED_KONG_NODE_DATA_SOURCE_FILE Seed default Kong Admin API connections on first run Docs -

4.2.4 啟動(dòng)Konga

通過(guò)以下命令就可以啟動(dòng)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

運(yùn)行完后营搅,如果成功可以通過(guò)http://localhost:1337 鏈接到控制臺(tái)。通過(guò)注冊(cè)后進(jìn)入梆砸,然后在dashboard面板里面添加Kong的管理Api路徑http://yourdomain 转质。這里添加docker別名 http://kong:8001

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末帖世,一起剝皮案震驚了整個(gè)濱河市休蟹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌日矫,老刑警劉巖赂弓,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異哪轿,居然都是意外死亡盈魁,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)窃诉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)杨耙,“玉大人赤套,你說(shuō)我怎么就攤上這事“唇牛” “怎么了于毙?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)辅搬。 經(jīng)常有香客問(wèn)我唯沮,道長(zhǎng),這世上最難降的妖魔是什么堪遂? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任介蛉,我火速辦了婚禮,結(jié)果婚禮上溶褪,老公的妹妹穿的比我還像新娘币旧。我一直安慰自己,他們只是感情好猿妈,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布吹菱。 她就那樣靜靜地躺著,像睡著了一般彭则。 火紅的嫁衣襯著肌膚如雪鳍刷。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天俯抖,我揣著相機(jī)與錄音输瓜,去河邊找鬼。 笑死芬萍,一個(gè)胖子當(dāng)著我的面吹牛尤揣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播柬祠,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼北戏,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了漫蛔?” 一聲冷哼從身側(cè)響起最欠,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惩猫,沒(méi)想到半個(gè)月后芝硬,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡轧房,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年拌阴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奶镶。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡迟赃,死狀恐怖陪拘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纤壁,我是刑警寧澤左刽,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站酌媒,受9級(jí)特大地震影響欠痴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜秒咨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一喇辽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧雨席,春花似錦菩咨、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至糙置,卻和暖如春缨硝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背罢低。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胖笛,地道東北人网持。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像长踊,于是被迫代替她去往敵國(guó)和親功舀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344