API網(wǎng)關(guān)Kong使用指南(一)—— 安裝

1魄衅、概述

Kong是一個(gè)開源的API網(wǎng)關(guān)項(xiàng)目。它的官網(wǎng)是http://konghq.com/苍在。

1.1绝页、背景

隨著公司的發(fā)展壯大,項(xiàng)目越做越多寂恬,相應(yīng)開發(fā)的系統(tǒng)也越來越多续誉,而且這些系統(tǒng)逐漸由供應(yīng)內(nèi)部使用轉(zhuǎn)為對外提供服務(wù)。因此初肉,各個(gè)系統(tǒng)的安全與性能要求都提上了議事日程酷鸦。為了方便統(tǒng)一管理標(biāo)準(zhǔn),以及減輕日后維護(hù)運(yùn)營的壓力牙咏,我們決定采用API網(wǎng)關(guān)來統(tǒng)一控制各個(gè)系統(tǒng)的認(rèn)證與授權(quán)臼隔,以實(shí)現(xiàn)安全與權(quán)限控制的需求。

1.2妄壶、選型

經(jīng)過一段時(shí)間的學(xué)習(xí)與研究摔握,了解到API網(wǎng)關(guān)在開源領(lǐng)域主要有以下幾個(gè)項(xiàng)目:

  • Kong,基于Nginx+Lua進(jìn)行二次開發(fā)的方案盯拱,https://konghq.com/盒发。產(chǎn)品較成熟,有配套可用插件狡逢,二次開發(fā)程度低宁舰,但需要學(xué)習(xí)與熟悉相關(guān)技能才能做好維護(hù)工作。
  • Netflix Zuul奢浑,zuul是spring cloud的一個(gè)推薦組件蛮艰,https://github.com/Netflix/zuul。因架構(gòu)原因在高并發(fā)情況下性能不高雀彼,且有相當(dāng)?shù)拈_發(fā)量壤蚜。
  • Orange即寡,這個(gè)開源程序是國人開發(fā)的,http://orange.sumory.com/ 袜刷。未被大量使用聪富,社區(qū)資源不夠豐富,后續(xù)出現(xiàn)問題較難解決著蟹。

基于以上對比結(jié)果墩蔓,我們采用了Kong作為API網(wǎng)關(guān)的選型。

2萧豆、安裝

Kong可以安裝在多個(gè)不同的平臺(tái)奸披,我們以Ubuntu為例,其安裝最新版本的方法如下涮雷。受網(wǎng)速影響阵面,整個(gè)安裝配置過程大約持續(xù)30~90分鐘之間。

2.1洪鸭、安裝Kong

$ sudo apt-get update
$ sudo apt-get install -y apt-transport-https curl lsb-core
$ echo "deb https://kong.bintray.com/kong-deb `lsb_release -sc` main" | sudo tee -a /etc/apt/sources.list
$ curl -o bintray.key https://bintray.com/user/downloadSubjectPublicKey?username=bintray
$ sudo apt-key add bintray.key
$ sudo apt-get update
$ sudo apt-get install -y kong

2.2样刷、配置Kong

復(fù)制配置文件kong.conf,暫時(shí)不修改配置項(xiàng)卿嘲。

$ sudo cp /etc/kong/kong.conf.default /etc/kong/kong.conf

2.3颂斜、安裝PostgreSQL

Kong支持?jǐn)?shù)據(jù)庫 PostgreSQL 9.5+Cassandra 3.x.x和無數(shù)據(jù)庫。為了日后維護(hù)方便拾枣,我們選擇了慣用的關(guān)系型數(shù)據(jù)庫PostgreSQL。

$ sudo apt-get install postgresql

安裝完成后盒让,默認(rèn)會(huì):
(1)創(chuàng)建名為"postgres"的Linux用戶
(2)創(chuàng)建名為"postgres"梅肤、不帶密碼的默認(rèn)數(shù)據(jù)庫賬號作為數(shù)據(jù)庫管理員
(3)創(chuàng)建名為"postgres"的表

2.4、配置數(shù)據(jù)庫

在啟動(dòng)Kong之前邑茄,需要先創(chuàng)建用戶和數(shù)據(jù)庫姨蝴。

$ sudo -u postgres psql
postgres=#  CREATE USER kong; CREATE DATABASE kong OWNER kong;
postgres=#  alter user kong with password '123456';
postgres=#  \q

2.5、數(shù)據(jù)庫初始化

運(yùn)行Kong的遷移命令肺缕。

$ kong migrations bootstrap [-c /path/to/kong.conf]

2.6左医、運(yùn)行Kong

至此,Kong已經(jīng)安裝完畢同木,可以啟動(dòng)它浮梢。

$ sudo kong start [-c /path/to/kong.conf]

檢驗(yàn)Kong是否正常運(yùn)行,可執(zhí)行以下命令彤路。若正常則會(huì)返回HTML文檔秕硝。

$ curl -i http://localhost:8001/

3、名詞解釋

以下幾個(gè)Kong的核心概念:

  • Service(服務(wù)):用于定義Kong后面的自己提供的服務(wù)
  • Route(路由):定義客戶端請求的匹配規(guī)則洲尊,Route與Service是多對一關(guān)系远豺,當(dāng)請求與Route匹配時(shí)就會(huì)被代理到關(guān)聯(lián)的Service
  • Consumer(消費(fèi)者):代表消費(fèi)者或用戶奈偏,與權(quán)限關(guān)聯(lián)使用,其轄下還有Group(組)躯护、Certificate(認(rèn)證證書)等
  • Plugin(插件):在HTTP請求/響應(yīng)工作流當(dāng)中執(zhí)行的一段代碼惊来,如認(rèn)證、限流等棺滞,它為Kong提供了豐富的擴(kuò)展功能
  • Upstream(上游):代表一個(gè)虛擬主機(jī)名裁蚁,主要用于負(fù)載均衡
  • Certificate(SSL證書):SSL的證書/密鑰對

4、參考資料

  1. API網(wǎng)關(guān)的作用检眯、方案以及如何選擇
  2. 微服務(wù)與API網(wǎng)關(guān)(上): 為什么需要API網(wǎng)關(guān)厘擂?
  3. 微服務(wù)與API 網(wǎng)關(guān)(下)- Kong能為我們做什么?
  4. 細(xì)說API認(rèn)證锰瘸、授權(quán)憑證

系列鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末刽严,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子避凝,更是在濱河造成了極大的恐慌舞萄,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件管削,死亡現(xiàn)場離奇詭異倒脓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)含思,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門崎弃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人含潘,你說我怎么就攤上這事饲做。” “怎么了遏弱?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵盆均,是天一觀的道長。 經(jīng)常有香客問我漱逸,道長泪姨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任饰抒,我火速辦了婚禮肮砾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘循集。我一直安慰自己唇敞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著疆柔,像睡著了一般咒精。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上旷档,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天模叙,我揣著相機(jī)與錄音,去河邊找鬼鞋屈。 笑死范咨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的厂庇。 我是一名探鬼主播渠啊,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼权旷!你這毒婦竟也來了替蛉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤拄氯,失蹤者是張志新(化名)和其女友劉穎躲查,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體译柏,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡镣煮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鄙麦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片典唇。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖胯府,靈堂內(nèi)的尸體忽然破棺而出蚓聘,到底是詐尸還是另有隱情,我是刑警寧澤盟劫,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站与纽,受9級特大地震影響侣签,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜急迂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一影所、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧僚碎,春花似錦猴娩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽矛双。三九已至,卻和暖如春蟆豫,著一層夾襖步出監(jiān)牢的瞬間议忽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工十减, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留栈幸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓帮辟,卻偏偏與公主長得像速址,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子由驹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351