網(wǎng)關(guān)服務(wù)Kong膊畴、Konga搭建記錄

安裝

使用docker-compose安裝是最方便的
在/opt/目錄下創(chuàng)建kong文件夾办陷,然后創(chuàng)建一個(gè)docker-compose.yml文件并編輯

cd /opt
mkdir kong
cd kong
vi docker-compose.yml

在docker-compose.yml添加如下配置(20220528親測可用)

version: '3'
services: 
  kong-database:
    image: postgres:9.6
    restart: always  #每次總是啟動(dòng)
    networks: 
      - kong-net
    environment:
      POSTGRES_USER: kong
      POSTGRES_DB: kong
      POSTGRES_PASSWORD: kong
    ports:
      - "5432:5432"
#######################
# 執(zhí)行數(shù)據(jù)庫遷移
######################
  kong-migration:
    image: kong:latest
    command: "kong migrations bootstrap"
    networks: 
      - kong-net
    restart: on-failure
    environment:
      - KONG_DATABASE=postgres
      - KONG_PG_DATABASE=kong
      - KONG_PG_PASSWORD=kong
      - KONG_PG_HOST=kong-database
    links: 
      - kong-database #連接的是kong-database服務(wù)的
    depends_on:
      - kong-database #依賴于kong-database服務(wù)
#####################
# kong gateway
#####################
  kong:
    image: kong:latest
    restart: always
    networks:
      - kong-net
    environment:
      KONG_DATABASE: postgres
      KONG_PG_HOST: kong-database
      KONG_PG_PASSWORD: kong
      KONG_PROXY_LISTEN: 0.0.0.0:8000          # 代理監(jiān)聽http
      KONG_PROXY_LISTEN_SSL: 0.0.0.0:8443       # 代理監(jiān)聽https
      KONG_ADMIN_LISTEN: 0.0.0.0:8001     # Kong的管理API私蕾,不可暴露在公網(wǎng)
    depends_on:
      - kong-migration
    links: 
      - kong-database
    healthcheck:
      test: ["CMD", "curl", "-f", "http://kong:8001"]
      interval: 5s
      timeout: 2s
      retries: 15
    ports:
      - "8001:8001"
      - "8000:8000"
      - "8443:8443"
#######################
#以下兩個(gè)是konga  GUI
#######################
  konga-prepare:
    image: pantsel/konga:latest
    command: "-c prepare -a postgres -u postgresql://kong:kong@kong-database:5432/konga"  #注意是用戶名:密碼@數(shù)據(jù)庫服務(wù)名稱:端口
    networks:
      - kong-net
    restart: on-failure
    links:
      - kong-database
    depends_on:
      - kong        #依賴kong服務(wù)
      - kong-database #依賴kong-database服務(wù)
  konga:
    image: pantsel/konga:latest
    restart: always
    networks:
      - kong-net
    environment:
      DB_ADAPTER: postgres
      DB_HOST: kong-database
      DB_USER: kong
      DB_DATABASE: konga
      DB_PASSWORD: kong #必須加上密碼猎提,不然會(huì)失敗
    depends_on:
      - kong
      - kong-database
    ports:
      - "1337:1337" #控制臺(tái)訪問端口
networks:
  kong-net:
    driver: bridge

docker-compose.yml文件參考自
https://wenku.baidu.com/view/eda035c19889680203d8ce2f0066f5335a81670e.html

訪問Konga控制臺(tái)

假設(shè)使用的是本地搭建
使用瀏覽器訪問127.0.0.1:1337
注:端口號(hào)在docker-compose.yml中指定了1337

若是使用云服務(wù)器,注意做好DNS解析以及Nginx配置
這里給出一份可用的kong.conf

server{
    listen 80;
    server_name  kong.YOUR_DOMAIN.com;
    charset utf-8;

    # 接口
    location / {
      proxy_pass http://127.0.0.1:1337;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Forwarded-Port $server_port;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
    }
}

使用瀏覽器訪問kong.YOUR_DOMAIN:1337

首次進(jìn)入配置管理員

打開界面后寸五,是要?jiǎng)?chuàng)建一個(gè)管理員賬號(hào)的梳凛,按說明填寫即可

配置Kong管理API

先理解一下概念:
我們現(xiàn)在操作的可視化平臺(tái)是Konga
Konga通過調(diào)用Kong的admin url,對Kong網(wǎng)關(guān)進(jìn)行配置管理
所以這一步我們需要將Konga和Kong搭上線

在Connection頁面配置要管理的Kong網(wǎng)關(guān)



主要填寫參數(shù)說明:
Name:必填梳杏,唯一韧拒,用于備忘
Kong Admin URL:Kong網(wǎng)關(guān)的管理路徑淹接,默認(rèn)端口是8001,在docker-compose.yml可修改對外暴露的端口號(hào)

這里有個(gè)提示很顯眼:Kong's admin API should not be publicly exposed
故我們在云服務(wù)器部署時(shí)叛溢,都應(yīng)該注意8001的這個(gè)端口不應(yīng)隨意暴露出去塑悼,以免發(fā)生黑客攻擊風(fēng)險(xiǎn)

為什么配置出來是http://kong:8001
因?yàn)楸敬问褂玫氖莇ocker-compose部署楷掉,Kong和Konga還有Postgres這幾個(gè)容器都處于kong-net這個(gè)網(wǎng)絡(luò)環(huán)境下厢蒜,可以直接通過容器名訪問到對方
Konga是在接收到瀏覽器請求后,通過后臺(tái)服務(wù)調(diào)用Kong admin URL
如果用了其他方式部署烹植,則需要按實(shí)際情況填寫Kong admin URL斑鸦,并且注意不要暴露到公網(wǎng)上!

ADD NEW SERVICE 添加一個(gè)要代理的服務(wù)

進(jìn)入Service菜單草雕,點(diǎn)擊 ADD NEW SERVICE(添加新服務(wù))
這里我們假設(shè)要代理某度的服務(wù)

創(chuàng)建服務(wù)

主要填寫參數(shù)說明:
Name:非必填巷屿,服務(wù)名稱,用于備忘這是一個(gè)什么服務(wù)
Protocol:必填促绵,填寫http或https攒庵,指請求轉(zhuǎn)發(fā)到該服務(wù)時(shí)嘴纺,使用哪種協(xié)議
Host:必填败晴,填寫被代理的主機(jī)地址
Port:必填,填寫被代理的主機(jī)的端口號(hào)栽渴,默認(rèn)80

ADD ROUTE 在代理服務(wù)中添加一條路由

點(diǎn)擊剛才創(chuàng)建的服務(wù)尖坤,點(diǎn)擊進(jìn)入Route管理界面
點(diǎn)擊ADD ROUTE

添加路由

主要填寫參數(shù)說明:
Name:非必填,路由名稱闲擦,用于備忘識(shí)別這是一個(gè)什么路由
Paths:這是重點(diǎn)慢味!具體看效果就明白了,這邊添加“/”和“/api/baidu”墅冷,注意要回車

訪問已添加的服務(wù)

訪問服務(wù)的接口為8000(在docker-compose.yml已配置)

若使用的是本地搭建
使用瀏覽器訪問

  • 127.0.0.1:8000
  • 127.0.0.1:8000/api/baidu

若是部署到云服務(wù)器纯路,并做好了域名解析
使用瀏覽器訪問

  • kong.YOUR_DOMAIN
  • kong.YOUR_DOMAIN/api/baidu

都會(huì)被解析Route,指向?qū)?yīng)的Service寞忿,返回的是某度的頁面驰唬,搭建成功

Upstream配置

當(dāng)同一個(gè)服務(wù)為分布式或存在多個(gè)域名、ip時(shí)腔彰,我們可以通過配置Upstream叫编,將這些服務(wù)統(tǒng)一起來

進(jìn)入U(xiǎn)pstream頁面
點(diǎn)擊ADD UPSTREAM

添加upstream

主要填寫參數(shù)說明:
Name:必填,名稱霹抛,用于關(guān)聯(lián)Service中Host字段

進(jìn)入剛添加的Upstream的Detail
進(jìn)入Target管理頁
點(diǎn)擊ADD TARGET

主要填寫參數(shù)說明:
Target:該服務(wù)具體的域名+端口搓逾,注意這里默認(rèn)端口8000,故需要手動(dòng)寫80
Weight:權(quán)重

添加好后是這個(gè)樣子


Target總覽

之后我們回到Service配置
將Host填寫為剛剛命名杯拐,并保存


之后我們再次訪問

  • 127.0.0.1:8000
  • 127.0.0.1:8000/api/baidu
  • kong.YOUR_DOMAIN
  • kong.YOUR_DOMAIN/api/baidu

能發(fā)現(xiàn)不僅能訪問某度霞篡,還能訪問到某奇廣告網(wǎng)(因?yàn)閎aidu1.com世蔗、baidu2.com并不是某度搜索)
至于每次訪問結(jié)果都有變化,是因?yàn)閁pstream做了權(quán)重的負(fù)載均衡寇损,因此實(shí)際訪問的服務(wù)是

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凸郑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子矛市,更是在濱河造成了極大的恐慌芙沥,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浊吏,死亡現(xiàn)場離奇詭異而昨,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)找田,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門歌憨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人墩衙,你說我怎么就攤上這事务嫡。” “怎么了漆改?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵心铃,是天一觀的道長。 經(jīng)常有香客問我挫剑,道長去扣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任樊破,我火速辦了婚禮愉棱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘哲戚。我一直安慰自己奔滑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布顺少。 她就那樣靜靜地躺著朋其,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祈纯。 梳的紋絲不亂的頭發(fā)上令宿,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音腕窥,去河邊找鬼粒没。 笑死,一個(gè)胖子當(dāng)著我的面吹牛簇爆,可吹牛的內(nèi)容都是我干的癞松。 我是一名探鬼主播爽撒,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼响蓉!你這毒婦竟也來了硕勿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤枫甲,失蹤者是張志新(化名)和其女友劉穎源武,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體想幻,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡粱栖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡单鹿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出园欣,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站价认,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏率挣。R本人自食惡果不足惜刻伊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一露戒、第九天 我趴在偏房一處隱蔽的房頂上張望椒功。 院中可真熱鬧,春花似錦智什、人聲如沸动漾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旱眯。三九已至,卻和暖如春证九,著一層夾襖步出監(jiān)牢的瞬間删豺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國打工愧怜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留呀页,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓拥坛,卻偏偏與公主長得像蓬蝶,于是被迫代替她去往敵國和親尘分。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容