我试图在两个kubernetes集群中的两个应用程序之间获取mTLS,而Istio却没有这样做(使用其入口网关),我想知道以下方法是否可行(对于Istio,Likerd,Consul。 )。
假设我们有一个k8s集群A和一个应用A.A.和具有应用B.B.的集群B,我希望他们与mTLS通信。
您认为mTLS在这种情况下会起作用吗?
答案 0 :(得分:2)
基本上,来自portshift的blog会回答您的问题。
答案取决于集群的构建方式,因为
Istio提供了几种在多个kubernetes集群中部署服务网格的选项,更多关于here。
因此,如果您具有Single Mesh部署
您可以在完全连接的多群集网络上部署单个服务网格(控制平面),并且所有工作负载都可以在没有Istio网关的情况下直接到达彼此,而无论它们在哪个群集上运行。
BUT
如果您进行了多网格部署
在多网格部署中,您具有更高的隔离度和可用性,但会增加设置的复杂性。使用ServiceEntries,Ingress Gateway将原本独立的网格松散地耦合在一起,并使用公共根CA作为安全通信的基础。从网络的角度来看,唯一的要求是入口网关之间可以相互访问。给定网格中需要访问的每个服务都需要在另一个网格中进行,而远程网格中的ServiceEntry配置则需要
。
在多网格部署中,随着环境的发展和多样化,安全性可能变得复杂。在集群之间对服务进行身份验证和授权方面存在安全挑战。需要使用相邻集群中服务的属性来更新本地Mixer(服务策略和遥测)。否则,当这些服务到达其群集时将无法授权这些服务。为此,每个Mixer需要了解相邻集群中的工作负载标识及其属性。每个Citadel都需要使用相邻集群的证书进行更新,以允许集群之间进行mTLS连接。
跨多网状控制平面的细化工作负载身份(mTLS证书)和服务属性的联合可以通过以下方式完成:
- Kubernetes入口:公开从群集外部到群集内services的HTTP和HTTPS路由。流量路由由Ingress资源上定义的规则控制。 Ingress可以终止SSL / TLS,并提供基于名称的虚拟主机。但是,它需要Ingress controller才能符合Ingress规则
- 服务网格网关: Istio服务网格提供了不同的配置模型Istio Gateway。网关允许将Istio功能(例如监视和路由规则)应用于进入群集的流量。入口g ateway描述了一个负载均衡器,该负载均衡器在网格的边缘运行,用于接收传入的HTTP / TCP连接。它配置暴露的端口,协议等。使用Istio路由规则配置入口流量的流量路由,与内部服务请求的方式完全相同。
您认为mTLS在这种情况下会起作用吗?
基于以上信息
如果您具有单网格部署
应该没有任何问题。
如果您具有多网格部署
它应该可以工作,但是由于您不想使用istio网关,因此唯一的选择是kubernetes ingress。
希望它能回答您的问题。让我知道您是否还有其他问题。
答案 1 :(得分:0)
您需要领事的Mesh Gateways。它们在部署在不同数据中心,群集或运行时环境中的联合Consul群集之间建立了mTLS服务到服务的连接。