天天看點

API Gateway Kong在Rainbond上的部署API Gateway Kong在Rainbond上的部署什麼是Kong從應用市場安裝配置KongKong應用怎麼制作

API Gateway Kong在Rainbond上的部署

[TOC]

什麼是Kong

API Gateway Kong在Rainbond上的部署API Gateway Kong在Rainbond上的部署什麼是Kong從應用市場安裝配置KongKong應用怎麼制作

Kong是一個可擴充的開源API平台(也稱為API網關,API中間件或微服務服務網格)。Kong最初是由

Kong Inc.

(以前稱為Mashape)實作的,用于為其API Marketplace維護、管理和擴充超過15,000個微服務,這些微服務每月産生數十億個請求。

技術上講,Kong是在Nginx中運作的Lua應用程式,并且通過

lua-nginx-module

實作。Kong是與

OpenResty

一起分發的,而不是使用此子產品來編譯Nginx,

已經包括lua-nginx-module。

了解更多有關Kong的事情,你需要點選

了解一下

從應用市場安裝

快速安裝

目前我們已經将最新版本(v1.4.X)的Kong釋出到了應用市場,如果你想要快速的搭建以及使用Kong,你隻需要做一件事情,那就是點選一下安裝:

API Gateway Kong在Rainbond上的部署API Gateway Kong在Rainbond上的部署什麼是Kong從應用市場安裝配置KongKong應用怎麼制作

等待一小段時間後,Kong就已經部署在了你的Rainbond叢集中了。在這個應用中,我們已經內建了

Konga

作為UI管理工具,接下來的步驟,需要你通路Konga,做幾步簡單的設定,就可以愉快的探索Kong了。

  • 注冊Konga
API Gateway Kong在Rainbond上的部署API Gateway Kong在Rainbond上的部署什麼是Kong從應用市場安裝配置KongKong應用怎麼制作
  • 配置Kong的連接配接位址,寫入

    http://127.0.0.1:8001

    即可
API Gateway Kong在Rainbond上的部署API Gateway Kong在Rainbond上的部署什麼是Kong從應用市場安裝配置KongKong應用怎麼制作
  • 連接配接成功,就可以使用Konga來管理你的Kong了
API Gateway Kong在Rainbond上的部署API Gateway Kong在Rainbond上的部署什麼是Kong從應用市場安裝配置KongKong應用怎麼制作

注意事項

  • 如果你所使用的Rainbond平台,是在2019年12月25日以前安裝的,并且沒有進行過任何更新操作,那麼你可能遇到Konga連接配接不到Kong的問題,解決的方案如下:
    • 如果你使用了v5.1.9以前的版本,請更新到 最新版本
    • 如果你現在已經在使用v5.1.9版本,那麼請 點選連結 ,打個更新檔。
  • Kong的啟動很消耗記憶體

配置Kong

環境變量

Kong支援以

KONG_

開頭的環境變量進行配置。舉例說明:

對于部署在Rainbond上的Kong來說,直接

添加環境變量
KONG_LOG_LEVEL = error           

即可在Kong的配置檔案中生成

log_level = error           

添加完成後,點選更新,即可使之生效。

注入Nginx配置

通過調整Kong執行個體的Nginx配置,可以優化其基礎架構的性能。

Kong啟動時,将建構一個Nginx配置檔案。你可以通過Kong配置直接将自定義Nginx配置注入此檔案。

注入單個Nginx配置

Kong的配置檔案中的任何字首為的條目

nginx_http_

nginx_proxy_

nginx_admin_

通過删除字首将其轉換為等效的Nginx指令,并将其添加到Nginx配置的相應部分:

  • 字首為的條目

    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           

它将以下指令添加到

server

Kong的Nginx配置的代理塊中:

large_client_header_buffers 16 128k;           

為了達到這個目的,你需要參考

,為Kong添加以下環境變量:

KONG_NGINX_HTTP_OUTPUT_BUFFERS = "4 64k"           

通過注入的Nginx指令包含檔案

對于更複雜的配置方案,例如添加整個新

server

塊,可以使用上述方法

include

向Nginx配置注入 指令,指向包含其他Nginx設定的檔案。

可以通過在

kong.conf

檔案中添加以下條目來包含目标檔案:

nginx_http_include = /path/to/your/my-server.kong.conf           

在Rainbond上,可以通過環境變量進行配置:

KONG_NGINX_HTTP_INCLUDE="/path/to/your/my-server.kong.conf"           

Kong應用怎麼制作

即點即用的Kong,使用起來非常友善。那麼這個應用是怎麼制作的呢?

我們隻需要做到以下幾點,就可以釋出出可以即點即用的雲市場應用:

  • 目标應用的所有元件都已經部署在Rainbond并正常運作
  • 各服務元件使用的資料庫具備自動初始化資料的功能
  • 各服務元件間的依賴關系已經處理妥當,從業務層面已經正常運作

接下來,隻需要參考

應用分享與釋出

,将你的應用釋出出去即可。

資料庫自動初始化

Kong可以使用的資料庫包括

Postgres與Cassandra

,我們這裡使用了前者。

首先利用docker run 指令快速部署一個Postgresql:

docker run -d --name kong-database \
                -p 5432:5432 \
                -e "POSTGRES_USER=kong" \
                -e "POSTGRES_DB=kong" \
                postgres:9.6           

使用Kong的鏡像,即可初始化資料庫表結構,在部署初始化元件時,要記得建立從

kong-init

指向

kong-database

的依賴關系:

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

運作完成後會自動退出,在Rainbond上顯示運作異常,不用擔心,它已經完成了使命,驗證下

kong-database

中已存在資料表結構,就可以删除

kong-init

了。

進入

kong-database

的容器執行個體,通過指令行工具備份出資料庫。

pg_dump -U kong -d kong > /var/lib/postgresql/data/data.sql
           

找到

kong-database

的資料持久化目錄,得到

data.sql

kong-database

的使命也就達成了,可以被關閉删除。

自定義一個代碼倉庫,參考

https://github.com/dazuimao1990/pri-postgresql/tree/kong

data.sql

放到

sql

目錄下,即可用這份代碼建立一個可以自動初始化表結構的Postgresql了。建立之,命名為

kong-postgres

備用。

部署Kong

直接使用docker run 指令建立Kong,要記得建立從

Kong

kong-postgres

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
           

記憶體至少提高至4G。

部署Konga

直接使用docker run 指令建立Konga,要記得建立從

Konga

Kong

docker run -p 1337:1337 \
             --name konga \
             pantsel/konga
           

完成後,最終拓撲将會是這個樣子的:

API Gateway Kong在Rainbond上的部署API Gateway Kong在Rainbond上的部署什麼是Kong從應用市場安裝配置KongKong應用怎麼制作

釋出應用

點選

釋出到市場

,編輯它的資訊,即可釋出了。