有奖:语音产品征文挑战赛火热进行中> HOT

操作场景

云原生 API 网关 Kong 提供插件管理功能,您可以在控制台上管理您的系统插件、原生插件、部署自定义插件等。本文介绍相关的插件定义和开发自定义插件并部署到云原生 API 网关 Kong 的操作步骤。

插件介绍

系统插件
原生插件
自定义插件
系统插件是指云原生 API 网关在开源基础上提供的增强插件。
名称
类型
说明
tse-breaker
流量控制
tse-traffic-mirror
流量控制
tse-proxy-rewrite
请求转换
tse-rate-limiting
流量控制
tse-route
路由转发

原生插件指开源 Kong 网关自带的插件。

名称
类型
说明
acl
安全
通过使用任意 ACL 组名称将消费者列入白名单或将其列入黑名单来限制对 Service 或者 Route 的访问。此插件需要在服务或路由上启用身份验证插件。
acme
认证鉴权
允许 Kong 使用来自 Let’s Encrypt 或者其他 ACMEv2 服务的证书,并且支持自动续期。
aws-lambda
无服务器
从 Kong 调用 AWS Lambda 函数。它可以与其他请求插件结合使用以保护,管理或扩展功能。
azure-functions
无服务器
从 Kong 调用 Azure上的无服务器函数。它可以与其他请求插件结合使用以保护,管理或扩展功能。
basic-auth
认证鉴权
使用用户名和密码保护将基础认证添加到 Service 或 Route 。
bot-detection
安全
保护服务或路由免受大多数常见机器人的攻击,并具有将自定义客户端列入白名单和列入黑名单的能力。
correlation-id
请求转换
使用通过 HTTP header 传输的唯一 ID 关联请求和响应。
cors
安全
通过启用此插件,轻松将跨源资源共享(CORS)添加到 Service, Route
datadog
分析和监控
记录 Service 的指标,并路由到本地 Datadog 代理。
file-log
日志
将请求和响应数据写入磁盘上的日志文件中。不建议在生产中使用此插件。
grpc-gateway
其他
通过 HTTP REST 接口公开 gRPC 服务。它以 JSON 格式转换请求和响应,允许通过普通 HTTP 请求访问上游 gRPC 服务。
grpc-web
其他
通过 gRPC-web 协议访问 gRPC 服务。
hmac-auth
认证鉴权
将 HMAC 签名身份验证添加到服务或路由以确定传入请求的完整性。该插件将验证在 Proxy-Authorization或Authorization header 中发送的数字签名(按此顺序)。
http-log
日志
将请求和响应数据转发到http服务器。
ip-restriction
安全
通过将 IP 地址列入白名单或列入黑名单来限制对 Service 或 Route 的访问,支持配置单个 IP,多个 IP 或 CIDR 范围,如10.10.10.0/24。
jwt
认证鉴权
验证包含 HS256 或 RS256 签名 JSON Web 令牌的请求。在请求中如果验证了令牌的签名,Kong 会将请求代理到您的上游服务,否则将丢弃该请求。
key-auth
认证鉴权
将密钥身份验证(有时也称为 API 密钥)添加到 Service 或 Route 。
ldap-auth
认证鉴权
使用用户名和密码保护将 LDAP 绑定身份验证添加到路由。 该插件将检查Proxy-Authorization和Authorization header 中的有效凭据(按此顺序)。
loggly
日志
通过 UDP 将请求和响应数据记录到 Loggly。
oauth2
认证鉴权
使用授权码模式(Authorization Code Grant),客户端凭证模式(Client Credentials),简化授权模式(Implicit Grant)或密码模式(Resource Owner Password Credentials Grant)授予流添加 OAuth 2.0身份验证层。
post-function
无服务器
在访问阶段运行其他插件之后运行一段 Lua 代码。
pre-function
无服务器
在访问阶段运行其他插件之前运行一段 Lua 代码。
prometheus
分析和监控
以 Prometheus exposition 格式公开与 Kong 和代理上游服务相关的指标,Prometheus 服务器可以对这些指标进行抓取。
proxy-cache
流量控制
基于可配置的响应代码和内容类型以及请求方法来缓存响应实体。它可以缓存每个 Consumer 或每个 API。
request-size-limiting
流量控制
限制body大于特定大小(以兆字节为单位)的传入请求。
request-termination
流量控制
使用指定的状态代码和消息终止传入请求。
request-transformer
请求转换
在将请求转发给上游服务之前,转换客户端发送的请求。
response-ratelimiting
流量控制
根据上游服务返回的自定义响应头限制可以发出的请求数。
response-transformer
请求转换
在将响应返回给客户端之前,转换上游服务发送响应。
session
认证鉴权
管理通过 Kong 代理的 API 的浏览器会话,它为会话数据存储、加密、续订、到期和浏览器 Cookie 提供配置和管理。
statsd
日志
为 Service Route 记录日志指标到一个 StatsD 服务器。
syslog
日志
将请求和响应数据转发到 syslog 服务器。
tcp-log
日志
将请求和响应数据转发到 TCP 服务器。
udp-log
日志
将请求和响应数据转发到 UDP 服务器。
zipkin
日志
传播 Zipkin 分布式跟踪 span,并向 Zipkin 服务器报告 span。

云原生 API 网关 Kong 提供自定义插件能力扩展,您可按照 Kong 规定的数据格式,开发自己的定制插件,以实现对数据流的修改和深层次的集成。详细操作请参考使用自定义插件。

准备自定义插件代码
根据 kong lua 插件开发规范:Plugin Development - File Structure - v2.7.x | Kong Docs,自定义插件在保留 Kong 原生插件开发规范的情况下,同时还支持了so 库的能力,建议 so 库在 Centos7 的环境下编译。
插件目录结构可以参照如下:




进入插件管理入口

1. 登录 TSE 控制台
2. 在左侧导航栏单击云原生 API 网关 > 插件管理,在页面上方选择好网关实例,可以查看系统插件、原生插件和自定义插件信息。



部署自定义插件

1. 参考 插件介绍-自定义插件 准备好插件代码。
2. 在插件管理页面,选择自定义插件页页签,单击上传插件



3. 选择插件后,填写好插件版本号和版本描述信息,单击确定,完成上传。
4. 上传完插件后,单击切换到此版本,插件会自动部署在所有的 Kong 节点中。



5. 当您不再需要该插件时,可以单击插件右上角的卸载,卸载该插件。