我正在尝试在 Azure 中实施以下工作流程设置:
用于部署我的应用程序的专用 AKS 群集 - 已配置
用于将流量路由到 Pod 的入口控制器(最好是 AGIC)- 已配置
用于生成 JWT 令牌的 APIM - 在我弄清楚它是可行的之前尚未配置我需要的是,当用户尝试访问 URL(例如:test.example.de)时,流量流应如下:
a. 用户访问 DNS,该 DNS 被路由到 AGIC 创建的应用程序网关
b. 然后,APP Gateway 应该使用 APIM 进行身份验证以生成 JWT 令牌或验证用户是否具有权限,而无需将流量发送到 Ingress,然后再发送到服务和 pod。
c. 如果用户有权限,流量将被路由到入口,然后路由到服务和 pod。
d. 如果用户没有权限,则不路由流量
我查看了这个 azure 文档 [1],但它似乎没有执行 JWT 身份验证。
有人可以帮帮我吗?
[1] -https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/apis/protect-apis
答案1
您所拥有的无法实现这一点。在 AGIC 模式下使用 App Gateway 时,它是您的 AKS 群集的入口,不存在“不发送到入口”,一个流量到达 App Gateway,它到达 AKS 入口,它们是同一件事。
要执行您想要的操作,您需要将 APIM 放在 App Gateway 前面(我假设您目前没有这样做来处理 WAF?),或者您需要将非 AGIC 模式的 App Gateway 放在 APIM 前面,然后让另一个 App Gateway 以 AGIC 模式提供入口,或者使用单独的入口服务,例如 Nginx。
在您提到的图表中,应用程序网关未处于 AGIC 模式,只是将流量传递给 APIM,后者又将流量发送到 AKS 入口(不是应用程序网关)