Kong插件快速開(kāi)發(fā)

詳細(xì)的開(kāi)發(fā)文檔:https://docs.konghq.com/2.0.x/plugin-development/

一、背景

今天我們來(lái)快速開(kāi)發(fā)一個(gè)kong插件账蓉,插件的功能是客戶(hù)端可以傳遞一個(gè)lambda函數(shù),在Kong網(wǎng)關(guān)中運(yùn)行工三,運(yùn)行結(jié)果會(huì)以Header頭的形式返回到客戶(hù)端架谎。

大家可以通過(guò)這個(gè)插件,來(lái)快速的體驗(yàn)PDK提供的函數(shù)接口。

二君纫、安裝Kong

CentOS系統(tǒng)可以使用下面的命令來(lái)完成安裝

sudo yum install -y wget
wget https://bintray.com/kong/kong-rpm/rpm -O bintray-kong-kong-rpm.repo
export major_version=`grep -oE '[0-9]+\.[0-9]+' /etc/redhat-release | cut -d "." -f1`
sed -i -e 's/baseurl.*/&\/centos\/'$major_version''/ bintray-kong-kong-rpm.repo
sudo mv bintray-kong-kong-rpm.repo /etc/yum.repos.d/
sudo yum install -y kong

三 啟動(dòng)Kong

  1. 創(chuàng)建配置文件
cp /etc/kong/kong.conf.default /etc/kong/kong.conf
  1. 修改配置文件/etc/kong/kong.conf
sed -i "/^#database/i\database = off" /etc/kong/kong.conf
  1. 啟動(dòng)kong
kong start
  1. 查看默認(rèn)配置

如果訪問(wèn)成功驯遇,代表kong已經(jīng)成功運(yùn)行

curl http://127.0.0.1:8001/config

四、開(kāi)發(fā)插件

  1. 進(jìn)入到kong的插件目錄/usr/local/share/lua/5.1/kong/plugins蓄髓,創(chuàng)建兩個(gè)lua文件
cd /usr/local/share/lua/5.1/kong/plugins
mkdir debug
cd debug

cat > schema.lua <<EOF
local typedefs = require "kong.db.schema.typedefs"


return {
  name = "debug",
  fields = {
    { protocols = typedefs.protocols_http },
    { config = {
        type = "record",
        fields = {
          { lambda_name = { type = "string", default = "X-Kong-Lambda" }, },
          { result_name = { type = "string", default = "X-Kong-Result" }, },
        },
      },
    },
  },
}
EOF

cat > handler.lua <<EOF
local cjson = require("cjson.safe").new()

local DebugHandler = {}

DebugHandler.PRIORITY = 6
DebugHandler.VERSION = "2.0.0"


function DebugHandler:header_filter(conf)
  local lambda = kong.request.get_header(conf.lambda_name)
  if lambda then
    local result = cjson.encode(loadstring(lambda)())
    kong.response.set_header(conf.result_name, result)
  end
end
EOF

cd
  1. 自動(dòng)加載插件叉庐,修改配置文件/etc/kong/kong.conf
sed -i "/^#plugins/i\plugins = bundled,debug" /etc/kong/kong.conf
  1. 重新啟動(dòng)kong
kong restart
  1. 修改apis.yaml,配置插件
cd

cat > apis.yml <<EOF
_format_version: "1.1"
services:
 - name: httpbin-service
   url: http://httpbin.org/
   # Entities can store tags as metadata
   tags:
   - httpbin
   # Entities that have a foreign-key relationship can be nested:
   routes:
   - name: httpbin-route
     paths:
     - /
   plugins:
   - name: debug
     config:
       lambda_name: X-Kong-Lambda
       result_name: X-Kong-Result
EOF
  1. 檢測(cè)配置文件是否合法
kong config parse apis.yml
  1. 上傳配置文件
curl http://127.0.0.1:8001/config -F "config=@apis.yml"
  1. 測(cè)試接口
# curl -v \
-H "X-Kong-Lambda: return kong.router.get_service().name" \
http://127.0.0.1:8000/ip
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市会喝,隨后出現(xiàn)的幾起案子陡叠,更是在濱河造成了極大的恐慌,老刑警劉巖肢执,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枉阵,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡预茄,警方通過(guò)查閱死者的電腦和手機(jī)兴溜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)耻陕,“玉大人拙徽,你說(shuō)我怎么就攤上這事∈” “怎么了斋攀?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)梧田。 經(jīng)常有香客問(wèn)我淳蔼,道長(zhǎng),這世上最難降的妖魔是什么裁眯? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任鹉梨,我火速辦了婚禮,結(jié)果婚禮上穿稳,老公的妹妹穿的比我還像新娘存皂。我一直安慰自己,他們只是感情好逢艘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布旦袋。 她就那樣靜靜地躺著,像睡著了一般它改。 火紅的嫁衣襯著肌膚如雪疤孕。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天央拖,我揣著相機(jī)與錄音祭阀,去河邊找鬼鹉戚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛专控,可吹牛的內(nèi)容都是我干的抹凳。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼伦腐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼赢底!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起柏蘑,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤幸冻,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后辩越,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡信粮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年黔攒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片强缘。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡督惰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出旅掂,到底是詐尸還是另有隱情赏胚,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布商虐,位于F島的核電站觉阅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏秘车。R本人自食惡果不足惜典勇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望叮趴。 院中可真熱鬧割笙,春花似錦、人聲如沸眯亦。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)妻率。三九已至乱顾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宫静,已是汗流浹背糯耍。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工扔字, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人温技。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓革为,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親舵鳞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子震檩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348