我想为服务 A 创建外部身份验证,它侦听 port 上的流量8080
。我想要的是让第二个容器(Service B )在与Service A相同的 pod 中运行,它拦截、评估和(可能)转发进入端口8080
“可能”的流量,这意味着Service B应该过滤掉每个请求,没有经过身份验证。
服务 B将被注入到正在部署的每个服务中,以确保一致的授权并仍然保持部署过程简单。
(这怎么可能?
我想为服务 A 创建外部身份验证,它侦听 port 上的流量8080
。我想要的是让第二个容器(Service B )在与Service A相同的 pod 中运行,它拦截、评估和(可能)转发进入端口8080
“可能”的流量,这意味着Service B应该过滤掉每个请求,没有经过身份验证。
服务 B将被注入到正在部署的每个服务中,以确保一致的授权并仍然保持部署过程简单。
(这怎么可能?
东西交通流
这当然是可能的,您可以制作自己的 sidecar,也可以使用经过实战考验的 sidecar,例如 envoy。有一些服务网格(istio、linkerd)也提供了开箱即用的功能,其中一些服务网格在内部使用了 envoy。每个 pod 部署的 sidecar 将拦截 Kubernetes 集群中部署的服务之间的东西向流量。
南北交通流量
Ingress(nginx等),API网关(contour等)可以拦截南北向流量,并在前门提供认证服务。其中一些入口控制器也在内部使用 envoy。在这个流程中,每个 pod 都没有部署 sidecar。
查找 Traefiks forward auth mode 或 nginx 的 mod auth request。他们都做你正在寻找的东西。或者更一般地说,这种东西称为 API 网关,有很多好的。