我有以下情况:
红色用户向 namespace1 中的三个服务之一发出http请求。在K8中,应该以某种方式验证红色用户是否具有有效的证书,以供 namespace1 调用服务。在这种情况下,红色用户拥有 namespace1 的正确证书,因此它可以调用 namespace1 内的任何服务。相同的规则也适用于蓝色用户。
但是,当红色用户尝试在 namespace2 中调用服务时,则应拒绝请求,因为它不具有 namespace2 的正确证书。
问题是,可以在kubernetes中创建名称空间证书。例如,当我拥有证书A 时,我只能访问 namespace1 ,而不能访问 namespace2 。
答案 0 :(得分:2)
我认为Kubernetes Services不提供此类功能。身份验证应在入口控制器(例如nginx-ingress)中进行。您只需部署两个不同的证书,每个命名空间一个,并使用不同的证书配置。
答案 1 :(得分:0)
不是完全想要的,但是可以按域进行操作。您可以使用带有SNI support的入口控制器(例如大使)。您为不同的域提供单独的TLS证书,而不是对所有域使用单个TLS证书域。它旨在基于每个映射进行配置,使应用程序开发人员或服务所有者可以单独管理如何通过TLS公开其服务。
使用SNI代替多个入口控制器部署更具可伸缩性,因为可以避免为这些入口控制器使用多个负载平衡器或IP。
SNI的问题是客户端库,浏览器支持有限。