【API網關】|?總結/Edison Zhou
最近在學習Kong網關,因此根據老習慣,我會將我的學習過程記錄下來,一來體系化整理,二來作為筆記供將來翻看。由于我司會直接使用Kong企業版,學習過程中我會使用Kong開源版。
本篇,我們學習如何快速搭建一個Kong實驗環境。
搭建方式
目前,我們可以選擇多種部署方式,包括:宿主機部署、Docker部署、Kubernetes部署 以及 混合部署。
這里,我們的目的是學習實踐,因此選擇Docker部署,為了方便,我們選擇基于docker compose的一鍵部署。
首先,你需要安裝docker engine及docker-compose:
# sudo curl -L "https://github.com/docker/compose/releases/download/1.28.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# sudo chmod +x /usr/local/bin/docker-compose
# docker-compose --version
All-In-One快速部署
我們需要準備一個yml模板文件:
version: "3.8"volumes:kong_data: {}networks:kong-net:services:######################################## Postgres: The database used by Kong#######################################kong-database:image: postgres:10container_name: kong-postgresrestart: on-failurenetworks:- kong-netvolumes:- kong_data:/var/lib/postgresql/dataenvironment:POSTGRES_USER: kongPOSTGRES_PASSWORD: ${KONG_PG_PASSWORD:-kong}POSTGRES_DB: kongports:- "5432:5432"healthcheck:test: ["CMD", "pg_isready", "-U", "kong"]interval: 30stimeout: 30sretries: 3######################################## Kong database migration#######################################kong-migration:image: ${KONG_DOCKER_TAG:-kong:latest}command: kong migrations bootstrapnetworks:- kong-netrestart: on-failureenvironment:KONG_DATABASE: postgresKONG_PG_HOST: kong-databaseKONG_PG_DATABASE: kongKONG_PG_USER: kongKONG_PG_PASSWORD: ${KONG_PG_PASSWORD:-kong}depends_on:- kong-database######################################## Kong: The API Gateway#######################################kong:image: ${KONG_DOCKER_TAG:-kong:latest}restart: on-failurenetworks:- kong-netenvironment:KONG_DATABASE: postgresKONG_PG_HOST: kong-databaseKONG_PG_DATABASE: kongKONG_PG_USER: kongKONG_PG_PASSWORD: ${KONG_PG_PASSWORD:-kong}KONG_PROXY_LISTEN: 0.0.0.0:8000KONG_PROXY_LISTEN_SSL: 0.0.0.0:8443KONG_ADMIN_LISTEN: 0.0.0.0:8001depends_on:- kong-databasehealthcheck:test: ["CMD", "kong", "health"]interval: 10stimeout: 10sretries: 10ports:- "8000:8000"- "8001:8001"- "8443:8443"- "8444:8444"######################################## Konga database prepare#######################################konga-prepare:image: pantsel/konga:latestcommand: "-c prepare -a postgres -u postgresql://kong:${KONG_PG_PASSWORD:-kong}@kong-database:5432/konga"networks:- kong-netrestart: on-failuredepends_on:- kong-database######################################## Konga: Kong GUI#######################################konga:image: pantsel/konga:latestrestart: alwaysnetworks:- kong-net environment:DB_ADAPTER: postgresDB_URI: postgresql://kong:${KONG_PG_PASSWORD:-kong}@kong-database:5432/kongaNODE_ENV: productiondepends_on:- kong-databaseports:- "1337:1337"
備注:
(1)該yml文件定義了Kong、PostgreSQL 和 Konga 三個核心組成部分
(2)kong-migration會做Kong的數據庫數據初始化操作
(3)kong-prepare會做Konga的數據庫數據初始化操作
(3)該yml文件支持自定義環境變量替換當中的Kong鏡像名字、PostgreSQL的密碼
運行以下命令進行部署:
docker-compose up -d
Konga連接Kong
部署完成后,訪問服務器的1337端口即可看到Konga的登錄注冊頁面,首次訪問需要創建一個Admin賬號,隨意輸入即可,但密碼要大于7位字符。
通過Admin賬號登錄之后,需要指定Kong的Admin URL讓Konga能夠連接Kong。這里我們綁定的Kong Admin API端口是8001(http),8444(https,但這里我們實驗環境,沒有配置SSL證書,因此跳過)。
點擊CREATE CONNECTION之后,即可看到首頁儀表盤了:
這個儀表盤主要展示了五大類的信息:
連接信息:有多少活動的客戶端連接數等
節點信息:Kong的節點名、管理端口等
定時器信息:等待運行 和 正在運行 的定時器
數據庫信息:當前的數據庫連接信息及端口等
插件信息:開啟啟用的插件有哪些
看到這里,我們的實驗環境就初步完成了。
下一篇,我們會嘗試配置路由轉發,歡迎持續關注。
參考資料
閆觀濤,《Kong入門與實踐-基于Nginx和OpenRestry的云原生微服務網關》
風起云邊,《Kong - Overview》
風一樣的程序員,《45張圖帶你從0玩轉Kong Gateway》
年終總結:Edison的2021年終總結
數字化轉型:我在傳統企業做數字化轉型
C#刷題:C#刷劍指Offer算法題系列文章目錄
.NET面試:.NET開發面試知識體系
.NET大會:2020年中國.NET開發者大會PDF資料