【问题标题】:Filter traffic/authorise requests with Kubernetes sidecar使用 Kubernetes sidecar 过滤流量/授权请求
【发布时间】:2020-06-08 13:08:04
【问题描述】:
我想为服务 A 创建外部身份验证,它侦听端口 8080 上的流量。
我希望有第二个容器(Service B)在与 Service A 相同的 pod 中运行,它拦截、评估和(也许)转发正在进行的流量端口8080
“也许”意味着 Service B 应该过滤掉所有未经过身份验证的请求。
Service B 将被注入到正在部署的每个服务中,以确保一致的授权并仍然保持部署过程简单。
(如何)这可能吗?
【问题讨论】:
标签:
networking
kubernetes
authorization
code-injection
sidecar
【解决方案1】:
查找 Traefiks forward auth mode 或 nginx 的 mod auth request。他们都做你正在寻找的东西。或者更一般地说,这种东西被称为 API 网关,还有很多好东西。
【解决方案2】:
东西向交通流
这当然是可能的,您可以制作自己的 sidecar,也可以使用经过实战考验的 sidecar,例如 envoy。有一些服务网格(istio、linkerd)也提供了开箱即用的功能,其中一些服务网格在内部使用了 envoy。每个 pod 部署的 sidecar 将拦截 Kubernetes 集群中部署的服务之间的东西向流量。
南北交通流
Ingress(nginx等)、API网关(contour等)可以拦截南北向流量,提供前门认证服务。其中一些入口控制器也在内部使用 envoy。在这个流程中,每个 pod 都没有部署 sidecar。