Rainbond上部署API?Gateway?Kong及環(huán)境配置教程
什么是Kong
Kong是一個(gè)可擴(kuò)展的開源API平臺(tái)(也稱為API網(wǎng)關(guān),API中間件或微服務(wù)服務(wù)網(wǎng)格)。Kong最初是由Kong Inc.(以前稱為Mashape)實(shí)現(xiàn)的,用于為其API Marketplace維護(hù)、管理和擴(kuò)展超過(guò)15,000個(gè)微服務(wù),這些微服務(wù)每月產(chǎn)生數(shù)十億個(gè)請(qǐng)求。
技術(shù)上講,Kong是在Nginx中運(yùn)行的Lua應(yīng)用程序,并且通過(guò)lua-nginx-module實(shí)現(xiàn)。Kong是與OpenResty一起分發(fā)的,而不是使用此模塊來(lái)編譯Nginx,OpenResty已經(jīng)包括lua-nginx-module。
OpenResty® 是一個(gè)基于 Nginx 與 Lua 的高性能 Web 平臺(tái),其內(nèi)部集成了大量精良的 Lua 庫(kù)、第三方模塊以及大多數(shù)的依賴項(xiàng)。用于方便地搭建能夠處理超高并發(fā)、擴(kuò)展性極高的動(dòng)態(tài) Web 應(yīng)用、Web 服務(wù)和動(dòng)態(tài)網(wǎng)關(guān)。
OpenResty® 通過(guò)匯聚各種設(shè)計(jì)精良的 Nginx 模塊(主要由 OpenResty 團(tuán)隊(duì)自主開發(fā)),從而將 Nginx 有效地變成一個(gè)強(qiáng)大的通用 Web 應(yīng)用平臺(tái)。這樣,Web 開發(fā)人員和系統(tǒng)工程師可以使用 Lua 腳本語(yǔ)言調(diào)動(dòng) Nginx 支持的各種 C 以及 Lua 模塊,快速構(gòu)造出足以勝任 10K 乃至 1000K 以上單機(jī)并發(fā)連接的高性能 Web 應(yīng)用系統(tǒng)。
OpenResty® 的目標(biāo)是讓你的Web服務(wù)直接跑在 Nginx 服務(wù)內(nèi)部,充分利用 Nginx 的非阻塞 I/O 模型,不僅僅對(duì) HTTP 客戶端請(qǐng)求,甚至于對(duì)遠(yuǎn)程后端諸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都進(jìn)行一致的高性能響應(yīng)。
參考 組件 可以知道 OpenResty® 中包含了多少軟件。
參考 上路 學(xué)習(xí)如何從最簡(jiǎn)單的 hello world 開始使用 OpenResty® 開發(fā) HTTP 業(yè)務(wù),或前往 下載 直接獲取 OpenResty® 的源代碼包開始體驗(yàn)。
了解更多有關(guān)Kong的事情,你需要點(diǎn)擊Kong Inc.了解一下。
從應(yīng)用市場(chǎng)快速安裝
目前我們已經(jīng)將最新版本(v1.4.X)的Kong發(fā)布到了應(yīng)用市場(chǎng),如果你想要快速的搭建以及使用Kong,你只需要做一件事情,那就是點(diǎn)擊一下安裝:
等待一小段時(shí)間后,Kong就已經(jīng)部署在了你的Rainbond集群中了。在這個(gè)應(yīng)用中,我們已經(jīng)集成了Konga作為UI管理工具,接下來(lái)的步驟,需要你訪問(wèn)Konga,做幾步簡(jiǎn)單的設(shè)置,就可以愉快的探索Kong了。
- 注冊(cè)Konga
- 配置Kong的連接地址,寫入 http://127.0.0.1:8001即可
- 連接成功,就可以使用Konga來(lái)管理你的Kong了
注意事項(xiàng)
如果你所使用的Rainbond平臺(tái),是在2019年12月25日以前安裝的,并且沒(méi)有進(jìn)行過(guò)任何升級(jí)操作,那么你可能遇到Konga連接不到Kong的問(wèn)題,解決的方案如下:
- 如果你使用了v5.1.9以前的版本,請(qǐng)升級(jí)到最新版本。
- 如果你現(xiàn)在已經(jīng)在使用v5.1.9版本,那么請(qǐng)點(diǎn)擊鏈接,打個(gè)補(bǔ)丁。
Kong的啟動(dòng)很消耗內(nèi)存
配置Kong
環(huán)境變量
Kong支持以KONG_開頭的環(huán)境變量進(jìn)行配置。舉例說(shuō)明:
對(duì)于部署在Rainbond上的Kong來(lái)說(shuō),直接添加環(huán)境變量
KONG_LOG_LEVEL = error
即可在Kong的配置文件中生成
log_level = error
添加完成后,點(diǎn)擊更新,即可使之生效。
注入Nginx配置
通過(guò)調(diào)整Kong實(shí)例的Nginx配置,可以優(yōu)化其基礎(chǔ)架構(gòu)的性能。
Kong啟動(dòng)時(shí),將構(gòu)建一個(gè)Nginx配置文件。你可以通過(guò)Kong配置直接將自定義Nginx配置注入此文件。
注入單個(gè)Nginx配置
Kong的配置文件中的任何前綴為的條目nginx_http_, nginx_proxy_或nginx_admin_通過(guò)刪除前綴將其轉(zhuǎn)換為等效的Nginx指令,并將其添加到Nginx配置的相應(yīng)部分:
前綴為的條目nginx_http_將注入到整體http 塊指令中。
前綴為的條目nginx_proxy_將注入到server處理Kong代理端口的block指令中。
前綴為的條目nginx_admin_將注入到server處理Kong的Admin API端口的block指令中。
例如,如果將以下行添加到kong.conf文件中:
nginx_proxy_large_client_header_buffers=16 128k
它將以下指令添加到serverKong的Nginx配置的代理塊中:
large_client_header_buffers 16 128k;
為了達(dá)到這個(gè)目的,你需要參考環(huán)境變量,為Kong添加以下環(huán)境變量:
KONG_NGINX_HTTP_OUTPUT_BUFFERS = "4 64k"
通過(guò)注入的Nginx指令包含文件
對(duì)于更復(fù)雜的配置方案,例如添加整個(gè)新 server塊,可以使用上述方法include向Nginx配置注入 指令,指向包含其他Nginx設(shè)置的文件。
可以通過(guò)在kong.conf文件中添加以下條目來(lái)包含目標(biāo)文件:
nginx_http_include = /path/to/your/my-server.kong.conf
在Rainbond上,可以通過(guò)環(huán)境變量進(jìn)行配置:
KONG_NGINX_HTTP_INCLUDE="/path/to/your/my-server.kong.conf"
Kong應(yīng)用怎么制作
即點(diǎn)即用的Kong,使用起來(lái)非常方便。那么這個(gè)應(yīng)用是怎么制作的呢?
我們只需要做到以下幾點(diǎn),就可以發(fā)布出可以即點(diǎn)即用的云市場(chǎng)應(yīng)用:
目標(biāo)應(yīng)用的所有組件都已經(jīng)部署在Rainbond并正常運(yùn)行各服務(wù)組件使用的數(shù)據(jù)庫(kù)具備自動(dòng)初始化數(shù)據(jù)的功能各服務(wù)組件間的依賴關(guān)系已經(jīng)處理妥當(dāng),從業(yè)務(wù)層面已經(jīng)正常運(yùn)行
接下來(lái),只需要參考應(yīng)用分享與發(fā)布,將你的應(yīng)用發(fā)布出去即可。
數(shù)據(jù)庫(kù)自動(dòng)初始化
Kong可以使用的數(shù)據(jù)庫(kù)包括 Postgres與Cassandra,我們這里使用了前者。
首先利用docker run 命令快速部署一個(gè)Postgresql:
docker run -d --name kong-database \ -p 5432:5432 \ -e "POSTGRES_USER=kong" \ -e "POSTGRES_DB=kong" \ postgres:9.6
使用Kong的鏡像,即可初始化數(shù)據(jù)庫(kù)表結(jié)構(gòu),在部署初始化組件時(shí),要記得建立從 kong-init 指向 kong-database的依賴關(guān)系:
docker run --rm \ --name kong-init \ --link kong-database:kong-database \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=127.0.0.1" \ -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \ kong kong migrations bootstrap
kong-init 運(yùn)行完成后會(huì)自動(dòng)退出,在Rainbond上顯示運(yùn)行異常,不用擔(dān)心,它已經(jīng)完成了使命,驗(yàn)證下 kong-database 中已存在數(shù)據(jù)表結(jié)構(gòu),就可以刪除kong-init 了。
進(jìn)入 kong-database 的容器實(shí)例,通過(guò)命令行工具備份出數(shù)據(jù)庫(kù)。
pg_dump -U kong -d kong > /var/lib/postgresql/data/data.sql
找到 kong-database 的數(shù)據(jù)持久化目錄,得到 data.sql,kong-database 的使命也就達(dá)成了,可以被關(guān)閉刪除。
自定義一個(gè)代碼倉(cāng)庫(kù),參考 https://github.com/dazuimao1990/pri-postgresql/tree/kong 將 data.sql 放到 sql 目錄下,即可用這份代碼創(chuàng)建一個(gè)可以自動(dòng)初始化表結(jié)構(gòu)的Postgresql了。創(chuàng)建之,命名為 kong-postgres 備用。
部署Kong
直接使用docker run 命令創(chuàng)建Kong,要記得建立從 Kong 指向 kong-postgres 的依賴關(guān)系:
docker run -d --name kong \ --link kong-database:kong-database \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=127.0.0.1" \ -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
內(nèi)存至少提高至4G。
部署Konga
直接使用docker run 命令創(chuàng)建Konga,要記得建立從 Konga 指向 Kong 的依賴關(guān)系:
docker run -p 1337:1337 \ --name konga \ pantsel/konga
完成后,最終拓?fù)鋵?huì)是這個(gè)樣子的:
發(fā)布應(yīng)用
點(diǎn)擊 發(fā)布到市場(chǎng),編輯它的信息,即可發(fā)布了。
以上就是Rainbond上部署API Gateway Kong及環(huán)境配置教程的詳細(xì)內(nèi)容,更多關(guān)于Rainbond部署API Gateway Kong環(huán)境配置的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Rainbond云原生部署SpringCloud應(yīng)用架構(gòu)實(shí)踐
- Rainbond云原生部署開源社區(qū)Discourse的配置過(guò)程
- Rancher部署配置開源Rainbond云原生應(yīng)用管理平臺(tái)
- Rainbond配置組件自動(dòng)構(gòu)建部署官方文檔講解
- Rainbond對(duì)前端項(xiàng)目Vue及React的持續(xù)部署
- Rainbond部署組件Statefulset的使用官方文檔
- Rainbond自動(dòng)部署初始化Schema的數(shù)據(jù)庫(kù)步驟教程
- Rainbond云原生快捷部署生產(chǎn)可用的Gitlab步驟詳解
相關(guān)文章
詳解Rainbond云原生平臺(tái)簡(jiǎn)化Kubernetes業(yè)務(wù)問(wèn)題排查
這篇文章主要介紹了詳解Rainbond云原生平臺(tái)簡(jiǎn)化Kubernetes業(yè)務(wù)問(wèn)題排查,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03玩客云內(nèi)置EMMC存儲(chǔ)刷入Armbian系統(tǒng)(圖文詳解)
Armbian是其他項(xiàng)目可以信賴的單板計(jì)算機(jī)(SBC)的基本操作系統(tǒng)平臺(tái),接下來(lái)通過(guò)本文給大家介紹玩客云內(nèi)置EMMC存儲(chǔ)刷入Armbian系統(tǒng),需要的朋友可以參考下2022-05-05K8S如何利用Prometheus監(jiān)控pod的實(shí)時(shí)數(shù)據(jù)指標(biāo)
這篇文章主要給大家介紹了關(guān)于K8S如何利用Prometheus監(jiān)控pod的實(shí)時(shí)數(shù)據(jù)指標(biāo)的相關(guān)資料,Prometheus是一個(gè)開源的服務(wù)監(jiān)控系統(tǒng)和時(shí)序數(shù)據(jù)庫(kù),其提供了通用的數(shù)據(jù)模型和快捷數(shù)據(jù)采集、存儲(chǔ)和查詢接口,需要的朋友可以參考下2024-01-01云原生技術(shù)kubernetes之volumes容器的使用
這篇文章主要為大家介紹了云原生技術(shù)kubernetes之volumes容器使用方式,?有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03一文詳解基于Kubescape進(jìn)行Kubernetes安全加固
這篇文章主要為大家介紹了基于Kubescape進(jìn)行Kubernetes安全加固詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Rainbond云原生部署開源社區(qū)Discourse的配置過(guò)程
這篇文章主要為大家介紹了Rainbond云原生部署開源社區(qū)Discourse配置過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04詳解Rainbond內(nèi)置ServiceMesh微服務(wù)架構(gòu)
這篇文章主要為大家介紹了詳解Rainbond內(nèi)置ServiceMesh微服務(wù)架構(gòu),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04