雲原生微服務網關 Kong 和Kong 管理UI Konga快速安裝攻略

2021-03-06 SpringForAll社區


1. 前言

上一文我們對Kong網關的簡單介紹,今天我們來搭建Kong的環境。以便於以後對Kong的進一步了解和學習。

2. Kong支持的環境

從上圖來看Kong對Linux、MacOS、容器、雲 支持的還是比較全面的。鑑於大部分國內開發者使用的是Windows環境。本文依然使用Docker進行安裝。建議對Docker不太了解的同學學習相關的知識。也可以關注我的公眾號:Felordcn 來及時獲取相關的知識。

3. 安裝Kong

你的機器中必須有Docker環境,這個是前提。假設你已經具備了必須的環境。Kong的安裝其實還是不複雜的,有些文章可能介紹的不是那麼清楚。Kong 安裝有兩種方式一種是沒有資料庫依賴的DB-less 模式,另一種是with a Database 模式。我們這裡使用第二種帶Database的模式,因為這種模式功能更全。

3.1 構建Kong的容器網絡

首先我們創建一個Docker自定義網絡,以允許容器相互發現和通信。在下面的創建命令中kong-net是我們創建的Docker網絡名稱,當然你可以使用你認為合適的名稱。

docker network create kong-net

3.2 搭建資料庫環境

Kong 目前使用Cassandra(Facebook開源的分布式的NoSQL資料庫) 或者PostgreSql,你可以執行以下命令中的一個來選擇你的Database。請注意定義網絡 --network=kong-net 。

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 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

3.3 初始化或者遷移資料庫

我們使用docker run --rm來初始化資料庫,該命令執行後會退出容器而保留內部的數據卷(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

這個命令我們還是要注意的,一定要跟你聲明的網絡,資料庫類型、host名稱一致。同時注意Kong的版本號,本文是在Kong 1.3 版本下完成的。

3.4 啟動Kong容器

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

3.5 驗證

可通過 curl -i http://localhost:8001/ 或者瀏覽器調用 http://localhost:8001/ 來驗證Kong Admin 是否聯通 。

4. 安裝Kong 管理UI

Kong 企業版提供了管理UI,開源版本是沒有的。但是有很多的開源的管理 UI ,其中比較好用的是Konga。項目地址:https://github.com/pantsel/konga

4.1 Konga 特性

Konga 主要是用 AngularJS 寫的,運行於nodejs服務端。具有以下特性:

管理所有Kong Admin API對象。

支持從遠程源(資料庫,文件,API等)導入使用者。

管理多個Kong節點。使用快照備份,還原和遷移Kong節點。

使用運行狀況檢查監視節點和API狀態。

支持電子郵件和閒置通知。

支持多用戶。

易於資料庫集成(MySQL,postgresSQL,MongoDB,SQL Server)。

4.2 docker安裝Konga

同樣我們今天通過Docker來安裝Konga。安裝步驟同樣遵循配置資料庫,初始化資料庫,啟動容器的流程。

4.2.1 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

4.2.2 初始化Konga資料庫

初始化 PostgreSQL 資料庫。

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

相關命令解讀:

命令描述默認-c執行的命令,這裡我們執行的是prepare--aadapter 簡寫 ,可以是postgres 或者mysql--udb url 資料庫連接全稱-

到此Konga的資料庫環境就搞定了。

4.2.3 環境參數

Konga 還有一些可配置的環境參數:

4.2.4 啟動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. 所顯現的界面。

5. 總結

今天對Kong的安裝、Konga的安裝進行了詳細的介紹。希望對你進一步了解和學習Kong有所幫助。

相關焦點

  • Kong 0.13.1 發布, 分布式微服務抽象層
    Kong 0.13.1 已發布,這是一個小版本,包含一些 bug 修復和小的新特性。
  • Envoy 1.9.0和Kong 1.0 GA同時發版本了!
    之前公眾號分享了一篇文章拋棄了 Nginx, 選擇了 Envoy,在發這篇文章的當天2018年12月20日,Envoy 和 Kong 同時發布了版本,2018年最後兩個星期又臨近聖誕節還要發版本,看來2019年 Service
  • 《Hey Kong》| KEY.L寫給你的留言
    網易網友部分熱評劉聰從自己的視角出發,講述了從過去到未來的心理變化過程和差異、生活水平情感表達的差異和萬古不變的對於夢想和明天執著與堅持。我想每個人都很珍惜自己的年少時光,也時常會向未來的自己提出疑問和不解,或者每個現在的你我都在回憶從前,試圖找到任意一個值得感動值得收藏的「似曾相識」的過去瞬間。突然不知道該寫什麼了。這期文章和以往不一樣,我總是無法用語言表達我做這篇文章的感受和繼續下去的內容呈現。有幸擁有前排所得現場版《Hey Kong》,特地前來分享給每一位認真且感性的讀者朋友!!!
  • Hongkong Jet, soaring high in Asian Bizjet Market
    Denzil White, CEO of Hongkong JetChina Aviation News, Singapore: When Denzil White firstto its capacity; in April 2016, Hongkong Jet further announced its acquisition of Asia Jet, strengthening its charter capability inthe region.
  • Xuankong Temple a breathtaking architectural wonder of...
    Xuankong Temple, built in the Northern Wei Dynasty (386-534), is a prime example of engineering achievements in
  • 他看著窗外的風景十月的天空很乾淨是什麼歌 Hey KONG歌詞
    據了解,這首歌是由劉聰KEY.L和$CC731演唱的歌曲《Hey KONG》。他看著窗外的風景十月的天空很乾淨什麼歌  「他看著窗外的風景十月的天空很乾淨」這首歌叫做《Hey KONG》,由劉聰KEY.L、$CC731演唱,收錄於《Hey KONG》專輯中,目前這首歌已經上線,還沒有聽過的小夥伴可以在各大音樂平臺搜索試聽。
  • 騫雲:雲原生時代下的IT管理之痛
    一、雲原生不是趨勢,已是事實現如今,雲越來越普及,無論是個人專業用戶,還是企業用戶,上雲已經是普遍現象。伴隨著雲計算的快速發展,雲已逐步超越了虛擬化,各種雲原生服務日新月異。
  • 憂愁的下午心裡有點堵走在回家路是什麼歌 Hey KONG完整歌詞
    verse 1  hey kong 我坐在最後一排給你寫信  窗外球場很安靜 數學課我聽不進  o 給我發來簡訊 說星期六去坐船和她姐妹一起 我不想去  我不想讀書了 但我得給爸媽一個交代  跟我媽說做音樂 估計會說我燒了腦袋  不過下 學期我就可以去校外租房子  就不用去暴力擠食堂了
  • 衝量網絡|雲原生技術
    雲原生包含完整的應用形式,可以幫助開發者快速,持續,可靠,規模化地交付業務軟體,其涉及到微服務和容器等技術,雖然雲原生技術的起步較晚,但是其受到的關注度完全不輸於其他傳統技術,包括騰訊、招商銀行等公司也參與到雲原生技術的開發中,來加速技術創新和落地。
  • PG One《聖誕節》被下架,歌詞中的kingkong另有含義?孔令輝躺槍
    當時事件發生之後,馬蘇首先站出來替PG One和李小璐說話,但是馬蘇的說的跟另外的兩個當事人驢唇不對馬嘴,這也讓廣大網友對於馬蘇初衷產生了質疑。但是隨後黃奕前夫黃毅清的爆料又是讓事件登上了另外的高潮,黃毅清直接質問馬蘇「被李小璐搶男友還包庇,你的底線在哪裡」也是讓我們這些吃瓜群眾知道原來馬蘇和PG One有不同尋常的關係。
  • Konga
    konga平臺開店費用:佣金低至3% 開店免費konga平臺上傳產品流程:進入店鋪後點擊sell an item,接下來選擇你想要的產品類別,如果不知道選擇哪種類別可以查看其它賣家的同款產品類別,或者直接寫郵件給rejectedlistings@konga.com。
  • ...for freedom, Stand with Hongkong)」。此舉引發軒然大波,不久...
    去年10月5日,莫雷曾在推特上發表涉港言論:「為自由而戰,和香港在一起(Fight for freedom, Stand with Hongkong)」。去年10月5日,莫雷曾在推特上發表涉港言論:「為自由而戰,和香港在一起(Fight for freedom, Stand with Hongkong)」。此舉引發軒然大波,不久莫雷刪除了相關內容。隨後,中國籃協暫停與火箭隊的合作,李寧、浦發銀行等中國企業也宣布暫停與火箭隊的合作,央視也一度暫停轉播NBA比賽。
  • 詳解API網關核心功能和API管理擴展
    本文將詳細講解API網關的基礎概念,使用場景和核心功能,以及基於API網關核心引擎做的API全生命周期管理功能擴展等,最後介紹當前主流的開源API網關引擎。API網關概述在微服務架構體系裡面,我們一般會使用到微服務網關或叫API網關。
  • 【申請攻略】香港2021/2022年度博士獎學金Hong Kong PhD Fellowship(HKPFS)即將開通申請!
    申請人需要表現自身優異的學業成績、研究能力、潛力、溝通和人際交往能力以及領導能力。Hong Kong PhD Fellowship的金額及名額HKPFS將為每位獲獎者提供:每年319200港元(約40900美元)的津貼和13300港元(約1700美元)的會議和研究相關差旅津貼,為期三年。
  • WFA丨2021.02.27-02.28(Hongkong)
    COURSE INFORMATIONCOURSE TYPE:WFA - Wilderness First AidDATE:27th~28th Feb.2021COST:HKD$ 3100/paxCOUNTRY:Hongkong ChinaLOCATION:HongkongTEACHING LANGUAGE
  • 三大玩具公司:Sonokong增收卻虧損,人氣動畫助Auroraworld盈利
    Sonokong、Auroraworld、Daewon Media這三家韓國上市玩具公司的半年財務數據解讀。日本情況回顧:疫情下的日本五大玩具公司:多美三麗鷗虧損,壽屋萬代利潤下降Sonokong半年淨虧損452.6萬元受到疫情的影響,Sonokong第一個季度的銷售額同比減少了2012.39萬元。
  • 雲原生時代的流量入口:Envoy Gateway
    背景 —— 流量入口的眾多選型與場景在網際網路體系下,凡是需要對外暴露的系統幾乎都需要網絡代理:較早出現的 HAProxy、Nginx 至今仍在流行;進入微服務時代後,功能更豐富、管控能力更強的 API 網關又成為流量入口必備組件;在進入容器時代後,Kubernetes Ingress 作為容器集群的入口,是容器時代微服務的流量入口代理標準。
  • Employees Only will open in Hong Kong this June
    That’s good news for you, if you never gotthe chance to catch the charismatic pro back in his days as 28 Hongkong Street’s founding bartender.Photos from network.
  • 疫情下的韓國三大玩具公司:Sonokong增收卻虧損,人氣動畫助Aurora...
    Sonokong半年淨虧損452.6萬元受到疫情的影響,Sonokong第一個季度的銷售額同比減少了2012.39萬元。隨著韓國疫情逐漸好轉,人們開始恢復到常規的防疫生活狀態,第二季度的銷售額就報復性的增長,實現了近1.36億元,同比增長了44.78%。
  • 雲原生發展趨勢淺談
    從更為抽象的指導思想角度來看,雲原生表達了一種未來軟體開發生長的管理和實踐思路:即軟體產生並部署在雲上,且遵循一種新的軟體開發、發布和運維模式,從而使軟體能夠最大化發揮雲的能力。2013年,Pivotal(美國雲軟體開發工具與服務公司)的Matt Stine根據其多年的架構和諮詢經驗總結出來了一個思想集合,並得到了不斷發展和完善。