kong 一個高效能的 API 閘道器

daijunooo發表於2020-04-24
  1. 先安裝好 docker,新建 docker-compose.yml 檔案,將下面程式碼貼上到 docker-compose.yml 裡面
  2. cd 到 docker-compose.yml 所在目錄執行 docker-compose up
  3. 百度到的安裝方法都太複雜,此方式較為簡單快捷,適合懶人,執行結束後訪問localhost:8001,返回json表示一切ok
version: '3'
networks:
  kong-net:
services:
  kong:
    image: kong:2.0.0-alpine
    user: kong
    environment:
      KONG_DATABASE: 'off'
      KONG_ADMIN_ACCESS_LOG: /dev/stdout
      KONG_ADMIN_ERROR_LOG: /dev/stderr
      KONG_ADMIN_LISTEN: '0.0.0.0:8001'
      KONG_PROXY_ACCESS_LOG: /dev/stdout
      KONG_PROXY_ERROR_LOG: /dev/stderr
    networks:
      - kong-net
    ports:
      - "8000:8000/tcp"
      - "8001:8001/tcp"
      - "8443:8443/tcp"
      - "8444:8444/tcp"
    healthcheck:
      test: ["CMD", "kong", "health"]
      interval: 10s
      timeout: 10s
      retries: 10
    restart: on-failure

此模式為無資料庫模式

  1. 使用 docker-compose start 啟動 kong,前提 cd 到 docker-compose.yml 目錄
  2. 使用 docker-compose stop 停止 kong 服務
  1. 建立一個服務
curl -i -X POST \
  --url http://localhost:8001/services/ \
  --data 'name=baidu' \
  --data 'url=http://baidu.com'
  1. 建立一個路由和剛剛的服務關聯
curl -i -X POST \
  --url http://localhost:8001/services/baidu/routes \
  --data 'paths[]=/baidu'

以上請求可以使用介面工具傳送

  1. 測試閘道器是否可以成功轉發請求
  • 瀏覽器訪問 localhost:8000/baidu
  • 如果成功訪問了百度,說明以上設定成功
  1. 以上測試是透過url規則來匹配,kong支援多種方式,有一種是在header頭中加入host標識來路由到服務,這種我沒有測試成功,如果有人測試通了麻煩告知我一下
  • 開源並且基於nginx效能卓越
  • 配合kanga可實現視覺化操作,多種外掛可選,實現服務監控限流熔斷等等功能
  • 跨語言,任何語言的寫的後端服務都可以使用
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章