需求背景 為微服務架構添加 API 網關,實現路由轉發、認證、限流功能,使用 Kong 作為網關,容器化部署並與現有服務集成。
實現步驟 架構設計 後端服務:已有的用户服務(/users)和訂單服務(/orders)。 Kong 網關:接收所有外部請求,轉發到對應服務。 數據庫:Kong 使用 PostgreSQL 存儲配置(路由、插件等)。 Kong 初始化 啓動 Kong 前需初始化數據庫:
bash
docker run --rm \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=kong-db" \ kong:3.3 kong migrations bootstrap 1. 2. 3. 4. Docker Compose 配置
yaml
version: '3.8' services: kong-db: image: postgres:14 environment: - POSTGRES_DB=kong - POSTGRES_USER=kong - POSTGRES_PASSWORD=kong volumes: - kong-data:/var/lib/postgresql/data kong: image: kong:3.3 depends_on: - kong-db environment: - KONG_DATABASE=postgres - KONG_PG_HOST=kong-db - KONG_PG_USER=kong - KONG_PG_PASSWORD=kong - KONG_PROXY_LISTEN=0.0.0.0:8000 - KONG_ADMIN_LISTEN=0.0.0.0:8001 # 管理API ports: - "8000:8000" # 代理端口 - "8001:8001" # 管理端口 networks: - api-network user-service: image: my-user-service:v1 networks: - api-network order-service: image: my-order-service:v1 networks: - api-network networks: api-network: volumes: kong-data: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 配置 Kong 路由與插件