使用 Kong Konnect 和 Amazon MSK 实现 API 管理的事件流处理

作者:API传播员 · 2025-11-16 · 阅读时间:5分钟

事件流技术为企业构建高扩展性和松耦合的实时应用程序提供了可能。这种技术不仅支持高并发需求,还能简化服务的开发过程。然而,为了实现事件流的最大化价值,企业需要向多种实体开放访问权限,例如允许外部应用程序发布供内部系统使用的事件。

事件网关模式正是为了解决这一问题而设计的。它通过高级策略定义实现对事件流基础设施的暴露控制,确保只有可信应用程序能够访问这些资源。本文将介绍如何利用 Kong Konnect 和 Amazon MSK 实现事件流平台的 API 管理与消费控制。


Kong Konnect API 管理

Kong 网关是 Kong Konnect API 管理平台的核心组件,因其高性能和可扩展性而广受欢迎。它提供了代理、路由、负载均衡、健康检查、身份验证等功能,成为微服务和传统 API 流量管理的核心工具。

Kong Gateway 的可扩展性

Kong Gateway 的一大优势在于其可扩展性。通过插件机制,网关能够卸载后端服务的复杂处理任务,让后端专注于业务逻辑,从而加速开发流程。以下是一些常用插件:

  • 身份验证/授权:支持 OIDC、基本身份验证、LDAP、Mutual TLS、API 密钥等多种机制。
  • 速率限制:控制单位时间内的 HTTP 请求数量。
  • 无服务器支持:与 AWS Lambda 集成。
  • 日志处理:将请求日志外部化到第三方系统。
  • 分析与监控:支持 Datadog 和 Prometheus 等外部监控工具。
  • 流量控制:实现金丝雀发布、模拟端点、基于请求头的路由等。
  • 代理缓存:缓存常用响应以提升性能。
  • 请求/响应转换:支持将 GraphQL 转换为 REST API 等功能。

Kong Gateway 的混合部署

Kong Gateway 原生支持混合部署,能够在多个平台(如 Linux、Docker、Kubernetes)上运行并保护工作负载。这种部署方式尤其适用于云迁移和现代化应用场景。

下图展示了典型的 Kong Gateway 混合部署架构:

在混合部署中,控制平面(CP)负责管理任务,而数据平面(DP)则专注于 API 消费者的请求处理。两者运行在完全独立的环境中,这种分离设计增强了数据平面的弹性和吞吐量支持。

Kong 提供两种控制平面选项:Kong Konnect SaaS 和自托管控制平面。无论数据平面运行于何处,都需要与控制平面保持连接。


使用 Amazon MSK 部署事件流平台

为了展示 Kong Konnect 的能力,我们将通过 Amazon MSK(托管 Kafka 服务)创建一个简单的事件流平台,并结合 Kong 数据平面实现暴露与保护。

部署架构

以下是部署架构示意图:

  • Kong 数据平面运行在 Amazon EKS(弹性 Kubernetes 服务)集群上,并通过 Kafka Upstream 插件连接到 Amazon MSK 集群。
  • 数据平面、MSK 和 Kafka 消费者运行在同一 VPC 中。
  • API 消费者通过 REST 请求与数据平面交互,数据平面将请求转换为事件并发布到 Kafka 主题。
  • Kafka 消费者订阅这些主题以消费事件。

配置 Amazon MSK 集群

以下是创建 MSK 集群的主要步骤:

  1. 集群配置:定义主题、日志等基本设置。
  2. 集群信息:设置子网、安全组、Kafka 版本等。
  3. 客户端身份验证:支持多种连接机制,包括明文、TLS 和 SASL/SCRAM。

配置示例

创建一个名为 cluster_config.txt 的文件并添加以下内容:

auto.create.topics.enable=true
delete.topic.enable=true
log.retention.hours=8

使用以下命令推送配置:

aws kafka create-configuration --region us-east-2 --name "kong-msk" --kafka-versions "3.3.2" --server-properties fileb://cluster_config.txt

测试 MSK 集群连接

完成集群配置后,可以通过 Kafka CLI 工具测试连接。以下是一些常见测试:

  • 明文连接:使用 kafka-topics.sh 列出主题。
  • TLS 连接:配置 client_ssl.properties 文件后,使用 TLS/SSL 端点测试。
  • SASL/SCRAM 连接:创建用户凭据并配置 ACL 权限后测试。

部署 Kong 数据平面

在 MSK 集群准备就绪后,我们将部署 Kong 数据平面。以下是主要步骤:

  1. 使用 eksctl 创建 Amazon EKS 集群。
  2. 在 Kong Konnect 控制平面中生成证书,并将其注入 Kubernetes 集群。
  3. 使用 Helm 部署 Kong 数据平面。

配置 Kafka Upstream 插件

在 Kong 数据平面中,我们通过 Kafka Upstream 插件实现与 MSK 集群的集成。以下是插件的关键配置:

  • 身份验证机制:SCRAM-SHA-512
  • Kafka 主机和端口:指定 MSK 集群的引导服务器。
  • 主题:定义事件发布的目标主题。

配置完成后,插件将启用并开始工作。


测试事件流处理

配置完成后,可以通过以下方式验证事件流处理的效果:

  1. 使用 REST 请求向 Kong 数据平面发送事件。
  2. 验证事件是否成功发布到 Kafka 主题。
  3. 使用 Kafka 消费者检查事件内容。

总结

本文展示了如何利用 Kong Konnect 和 Amazon MSK 实现事件流平台的 API 管理与保护。通过 Kong Gateway 的强大功能,企业可以轻松构建高效、安全的事件流处理架构,从而提升服务连接平台的可用性和智能化水平。

原文链接: https://konghq.com/blog/engineering/api-managed-event-streaming