我有一个提供服务的Kubernetes集群,我使用Ambassador作为外界和我的服务之间的API网关。
我知道我可以使用大使馆提供的服务来检查传入请求的身份验证和授权,但这仅适用于群集外的请求吗?
我也想拦截服务到服务的呼叫。
答案 0 :(得分:0)
如果您不能,我会感到惊讶。
此答案需要一些术语,以免迷失单词汤。
Service
的使用者,并且将向大使进行身份验证Service
的提供者(选择器将针对其Pod
s)Service
,我们将在z-service
命名空间中调用z
,FQDN为z-service.z.svc.cluster.local
您似乎可以使用its v-host support并教它尊重集群内虚拟主机(上述的FQDN),然后更新z-service
选择器以定位 Ambassador Pod,而不是基础的app-Z Pod。
从app-A的角度来看,唯一要更改的是它现在必须提供用于联系z-service.z.svc.cluster.local
的身份验证。
如果不进一步研究大使的设置,那么很难知道此时的大使是否会“正常工作”,或者您是否随后需要“实施” Service
(例如z-for-real.z.svc.cluster.local
),因此大使知道如何找到实际的app-Z Pods。
答案 1 :(得分:0)
我现在有同样的问题。大使会将每个请求路由到身份验证服务(如果提供),身份验证服务可以是任何东西。因此,您可以设置http基本身份验证,oauth,jwt身份验证等。 要提及的下一件重要事情是您的服务可能使用基于标头的路由(https://www.getambassador.io/reference/headers)。仅当存在承载者(或类似的东西)时,该请求才对您的服务有效,否则将失败。在您的服务中,您可以检查权限等。因此,所有大使都可以为您提供帮助,但是您仍然需要自己编写一些程序。
如果您希望从一开始就准备好东西或更高级的东西,可以尝试 https://github.com/ory/oathkeeper或https://istio.io。
如果您已经找到了解决方案,那将很有趣。