操作场景
云原生 API 网关 Kong 提供插件管理功能,您可以在控制台上管理您的系统插件、原生插件、部署自定义插件等。本文介绍相关的插件定义和开发自定义插件并部署到云原生 API 网关 Kong 的操作步骤。
插件介绍
系统插件是指云原生 API 网关在开源基础上提供的增强插件。
名称 | 类型 | 说明 |
tse-breaker | 流量控制 | |
tse-traffic-mirror | 流量控制 | |
tse-rate-limiting | 流量控制 | |
tse-proxy-rewrite | 请求转换 | |
tse-custom-auth | 安全 | |
tse-cloud-waf | 安全 | |
tse-kafka-log | 可观测 | |
tse-prometheus | 可观测 | |
tse-trace | 可观测 | |
tse-global-configuration | 全局配置 | |
tse-scf-web | 无服务器 | |
tse-scf-event | 无服务器 | |
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. 当您不再需要该插件时,可以单击插件右上角的卸载,卸载该插件。