kong/kong-gateway-serverlessKong Enterprise Serverless 增强版镜像是基于 Kong Enterprise 构建的专用版本,针对无服务器(Serverless)环境进行了功能增强与优化,旨在提升企业级用户在无服务器架构中部署和管理 API 的可用性与效率。该镜像继承了 Kong Enterprise 强大的 API 网关核心能力,并通过定制化插件、配置优化及架构调整,专门适配无服务器函数(如 AWS Lambda、Azure Functions、Google Cloud Functions 等)的生命周期管理与流量治理需求。
作为企业级 API 网关,该镜像的核心用途包括:
bashdocker run -d \ --name kong-enterprise-serverless \ -p 8000:8000 \ # 代理端口(HTTP) -p 8443:8443 \ # 代理端口(HTTPS) -p 8001:8001 \ # Admin API 端口 -e KONG_DATABASE=off \ # 无数据库模式(适用于简单测试,生产环境推荐 PostgreSQL) -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 \ -e KONG_SERVERLESS_PLUGINS=serverless-functions,aws-lambda,azure-functions \ # 启用 Serverless 插件 -e KONG_LICENSE_DATA=<your-kong-license-json> \ # 替换为实际的 Kong Enterprise 许可证 JSON kong/kong-enterprise-serverless:latest
创建 docker-compose.yml 文件:
yamlversion: '3.8' services: kong: image: kong/kong-enterprise-serverless:latest container_name: kong-enterprise-serverless restart: always ports: - "8000:8000" # 代理 HTTP 端口 - "8443:8443" # 代理 HTTPS 端口 - "8001:8001" # Admin API 端口 - "8444:8444" # Admin API HTTPS 端口 environment: # 基础配置 KONG_DATABASE: postgres # 生产环境推荐使用 PostgreSQL KONG_PG_HOST: postgres # PostgreSQL 服务地址(需单独部署或使用外部数据库) KONG_PG_PORT: 5432 KONG_PG_USER: kong KONG_PG_PASSWORD: ${KONG_PG_PASSWORD} KONG_PG_DATABASE: kong KONG_PROXY_ACCESS_LOG: /dev/stdout KONG_ADMIN_ACCESS_LOG: /dev/stdout KONG_PROXY_ERROR_LOG: /dev/stderr KONG_ADMIN_ERROR_LOG: /dev/stderr KONG_ADMIN_LISTEN: 0.0.0.0:8001, 0.0.0.0:8444 ssl # Serverless 增强配置 KONG_SERVERLESS_PLUGINS: serverless-functions,aws-lambda,azure-functions,google-cloud-functions # 启用多平台 Serverless 插件 KONG_LAMBDA_REGION: us-east-1 # 默认 AWS Lambda 区域(可通过插件动态覆盖) KONG_AZURE_FUNCTIONS_BASE_URL: "https://<your-function-app>.azurewebsites.net" # 默认 Azure Functions 基础 URL # 许可证配置 KONG_LICENSE_DATA: ${KONG_LICENSE_DATA} # 从环境变量注入许可证 JSON volumes: - ./kong-plugins:/usr/local/kong/plugins # 挂载自定义 Serverless 插件(可选) depends_on: - postgres # 依赖 PostgreSQL 数据库(需提前部署) postgres: image: postgres:14-alpine container_name: kong-db restart: always environment: POSTGRES_USER: kong POSTGRES_PASSWORD: ${KONG_PG_PASSWORD} POSTGRES_DB: kong volumes: - postgres-data:/var/lib/postgresql/data volumes: postgres-data:
启动命令:
bash# 导出环境变量(替换为实际值) export KONG_PG_PASSWORD=your-secure-password export KONG_LICENSE_DATA='{"license":{"payload":{"admin_seats":5,"customer":"Your Company","dataplanes":10,"license_creation_date":"2024-01-01","license_expiration_date":"2025-01-01","license_key":"...","product_subscription":"enterprise","support_plan":"standard"}}}' # 启动服务 docker-compose up -d
| 环境变量名 | 描述 | 默认值 |
|---|---|---|
KONG_DATABASE | 数据库类型(支持 postgres、cassandra 或 off,生产环境推荐 postgres) | off |
KONG_SERVERLESS_PLUGINS | 启用的 Serverless 插件列表(逗号分隔) | serverless-functions |
KONG_LAMBDA_REGION | 默认 AWS Lambda 区域(可通过插件配置覆盖) | us-east-1 |
KONG_AZURE_FUNCTIONS_BASE_URL | 默认 Azure Functions 应用基础 URL(如 [***]) | 无 |
KONG_LICENSE_DATA | Kong Enterprise 许可证 JSON 字符串(必填,需联系 Kong 官方获取) | 无 |
KONG_ADMIN_LISTEN | Admin API 监听地址与端口 | 0.0.0.0:8001 |
通过 Kong Admin API 为路由启用 aws-lambda 插件,将请求转发至 AWS Lambda 函数:
bash# 创建路由 curl -X POST http://localhost:8001/services \ --data "name=my-lambda-service" \ --data "url=[***]" # 虚拟 URL(实际由插件转发至 Lambda) curl -X POST http://localhost:8001/services/my-lambda-service/routes \ --data "name=lambda-route" \ --data "paths[]=/lambda" # 启用 aws-lambda 插件 curl -X POST http://localhost:8001/routes/lambda-route/plugins \ --data "name=aws-lambda" \ --data "config.aws_key=AKIAXXXXXXXXXX" \ # AWS Access Key --data "config.aws_secret=xxxxxxxxxx" \ # AWS Secret Key --data "config.function_name=my-serverless-function" \ # Lambda 函数名 --data "config.region=us-west-2" # 覆盖默认区域(可选)
lambda:InvokeFunction);pre-warm 机制(如定时触发函数)或调整插件的 timeout 参数;prometheus),并对接 Grafana 等平台监控函数调用指标与网关性能。manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务