1.2. 3scale APIcast 网关策略
3scale 与 3scale APIcast 结合使用,3scale APIcast 是一个与 3scale 一起部署的 API 网关,为 Kafka Bridge 提供单一入口点。
APIcast 策略提供了一种机制来定制网关的运行方式。3scale 为网关配置提供一组标准策略。您还可以创建自己的策略。
有关 APIcast 策略的更多信息,请参阅 Red Hat 3scale 文档。
Kafka Bridge 的 APIcast 策略
3scale 与 Kafka Bridge 集成的示例策略配置随 policies_config.json
文件提供,该文件定义:
- 匿名访问
- 标头修改
- 路由
- URL rewriting
网关策略通过此文件启用或禁用。
您可以使用此示例来定义您自己的策略。
- 匿名访问
- 匿名访问策略在没有身份验证的情况下公开服务,在 HTTP 客户端不提供它们时提供默认凭证(匿名访问)。该策略不是强制性的,如果始终需要身份验证,则可以禁用或删除。
- 标头修改
标头修改策略允许修改现有的 HTTP 标头,或向通过网关的请求或响应添加新的标头。对于 3scale 集成,策略会向从 HTTP 客户端通过网关传递给 Kafka 网桥的每个请求添加标头。
当 Kafka Bridge 收到创建一个新消费者的请求时,它会返回一个 JSON 有效负载,其中包含一个带有消费者所有后续请求必须使用的 URI 的
base_uri
。例如:{ "instance_id": "consumer-1", "base_uri":"http://my-bridge:8080/consumers/my-group/instances/consumer1" }
使用 APIcast 时,客户端会将所有后续请求发送到网关,而不是直接发送到 Kafka Bridge。因此,URI 需要网关主机名,而不是网关后面的 Kafka 网桥的地址。
使用标头修改策略,将标头添加到来自 HTTP 客户端的请求,以便 Kafka Bridge 使用网关主机名。
例如,通过应用
Forwarded: host=my-gateway:80;proto=http
标头,Kafka Bridge 会为使用者提供以下内容。{ "instance_id": "consumer-1", "base_uri":"http://my-gateway:80/consumers/my-group/instances/consumer1" }
X-Forwarded-Path
标头将来自客户端的请求中包含的原始路径传输到网关。当网关支持多个 Kafka Bridge 实例时,这个标头严格与应用的路由策略相关。- 路由
当存在多个 Kafka Bridge 实例时,会应用路由策略。请求必须发送到初始创建使用者的同一 Kafka Bridge 实例,因此请求必须为网关指定一个路由,以将请求转发到适当的 Kafka Bridge 实例。
路由策略会命名每个网桥实例,并使用名称执行路由。在部署
Kafka Bridge
时,您可以在 KafkaBridge 自定义资源中指定名称。例如,每个请求(使用
X-Forwarded-Path
)从消费者到:http://my-gateway:80/my-bridge-1/consumers/my-group/instances/consumer1
转发到:
http://my-bridge-1-bridge-service:8080/consumers/my-group/instances/consumer1
URL 重写策略会删除网桥名称,因为它在将请求从网关转发到 Kafka Bridge 时不使用它。
- URL rewriting
在将请求从网关转发到 Kafka Bridge 时,URL rewiring 策略确保从客户端到特定 Kafka Bridge 的请求不包含网桥名称。
网桥名称不在网桥公开的端点中使用。