原文链接:https://konghq.com/blog/kong-gateway-3-0
Kong Gateway 3.0是一个重要的里程碑版本,它引入了我们原生云API平台的下一个发展。Kong Gateway 3.0的企业版和开源版现在都可以从各个发行渠道获得。
在Kong Gateway 3.0中,我们引入了许多功能强大的功能,可带来以下主要好处:
了解Kong Gateway如何执行是部署的关键一环,我们很高兴地宣布在Kong Gateway 开源版和企业版中都提供了广泛的跟踪支持。有两种方法可以开始。可以使用开箱即用的 OpenTelemetry 插件直接将OTel发送到任何兼容的后端,或发送到 OpenTelemetry 收集器。我们一直在用 Honeycomb 测试 Kong Gateway,它很管用。
这是一个代理一个请求到 mockbin.org 的跟踪:
图1:将单个请求代理到mockbin.org的跟踪
然后同样的请求,一旦启用速率限制插件(使用Redis):
图2:启用速率限制插件的相同请求
第二个选择是使用Kong的跟踪插件开发工具包(PDK)来挂钩所有关键事件。这就是 OpenTelemetry 插件的工作方式,它可以完全控制如何收集和抽样跟踪信息,以及如何将数据导出到其他系统。
无论您选择哪种选择,了解Kong Gateway的表现是关键。确定在每个请求上花费的时间可以帮助您优化更高的性能,从而优化用户体验。
我们最初在 Kong Gateway 2.8 中发布了 Secrets Management 测试版,我们很高兴地宣布,在本版本中已正式支持。
Secrets Management 允许您将敏感信息安全地存储在外部存储中(用于OSS的环境变量、AWS Secrets Manager 和用于企业的HashiCorp Vault)中,Kong可以在运行时访问这些外部存储。通过将敏感值作为机密存储,可以确保它们不以明文形式通过平台、在Kong.conf
或声明性配置文件、日志或 Kong Manager UI 中可见。
此外,使用 Secrets Management 可以为开发、预发布和生产环境提供特定的值,同时使用完全相同的声明性配置文件配置每个环境。
开始Secrets Management 是很容易的,在之前设置明文密码的任何地方,将其替换为一个保险库路径,例如:
|
|
Kong将检测到此引用,并在运行的时候安全地解析。
要更深入地了解秘密管理,请关注我们即将发布的博客,该博客将介绍如何在使用代理缓存高级插件时在 HashiCorp Vault 中存储 Redis 密码。
这个新功能还是有一些技术含量,Kong Gateway 3.0附带了一个全新的「表达式」路由引擎,可以使用该引擎将请求路由到上游 api。
假设想要路由GET和POST请求,但仅当它们是HTTP请求时。如果不用使用 JSON 来配置路由,可以写一个如下所示的表达式:
|
|
这是一个简单的示例,但是假设希望路由与特定主机匹配的请求,并包含包含主机名的头信息。这是很难预想的,所以让我们来看看它是什么样子的:
|
|
只有当主机为example.com
且header头x-example-version
头的值是v2
,或者host为store.example.com
且header头x-store-version
头为v1
时,此路由才会匹配。这是Kong Gateway 3.0新路由引擎灵活性的一个很好的例子。如果在2.x中实现相同的功能将要创建两个单独的路由。
新路由器不仅表现力更强,性能也更好,大型路由配置现在可以增量地重新加载,而不是每次配置更改时都重新构建整个路由器。这使得P99时间在我们的测试中从1.5s减少到0.1s。
最后,介绍一下2.x中的JSON路由器。在这个版本中依旧可以使用,因为目前需要支持现有的路由规则,所以在3.0中保留了现有的路由器。你可以在 kong.conf
中将 router_flavor
设置为traditional
,那么路由匹配会和2.x版本一样。
Kong对稳定性的承诺意味着我们在一个主要版本的所有发行版中都保持向后兼容性。Kong Gateway 3.0让我们有机会弃用一些功能,并删除其他功能,以提高产品的质量。
以下是已弃用或删除的项目:
nginx-opentracing
模块的支持,将在4.0版本时移除。并使用新的跟踪PDK和OpenTracing模块作为替换