我正在尝试在两个 kubernetes 集群中的两个应用程序之间获取 mTLS,而无需使用 Istio 的方式(通过其入口网关),我想知道以下内容是否可行(对于 Istio、Likerd、Consul...)。
假设我们有一个 k8s 集群 A 和一个应用程序 A.A.集群 B 带有应用程序 B.B.,我希望它们与 mTLS 进行通信。
- 集群 A 具有用于 nginx 入口控制器的 letEncrypt 证书,以及用于其应用程序的网格(无论什么)。
- 集群 B 具有来自我们的根 CA 的自签名证书。
- 集群 A 和 B 服务网格具有由我们的根 CA 签名的不同证书。
- 流量从互联网流向集群 A 入口控制器 (HTTPS),再从那里流向应用程序 A.A.
- 流量到达应用程序 A.A. 后,该应用程序想要与应用程序 B.B. 通信。
- 应用程序 A.A.和 B.B. 通过入口(使用其入口控制器)公开端点。
- TLS 证书以端点结尾并且是通配符。
您认为 mTLS 在这种情况下会起作用吗?
基本上是这个blog https://www.portshift.io/blog/secure-multi-cluster-connectivity/?fbclid=IwAR22fqPDRaEdNdj8m7G2hNl2Y7S8lpxJDf5G8eBwnDAj3hnh4S1tcp8qBQk来自 portshift 回答你的问题。
答案取决于您的集群是如何构建的,因为
Istio 提供了一些在多个 kubernetes 集群中部署服务网格的选项,更多相关信息here https://stackoverflow.com/a/60149783/11977760.
因此,如果您有单网格部署
您可以在完全连接的多集群网络上部署单个服务网格(控制平面),并且所有工作负载都可以直接相互访问,而无需 Istio 网关,无论它们在哪个集群上运行。
BUT
如果您有多重网格部署
通过多网格部署,您可以获得更高程度的隔离和可用性,但它会增加设置的复杂性。原本独立的网格使用 ServiceEntries、Ingress Gateway 松散耦合在一起,并使用公共根 CA 作为安全通信的基础。从网络角度来看,唯一的要求是入口网关可以相互访问。给定网格中的每个服务需要访问不同网格中的服务,都需要远程网格中的 ServiceEntry 配置。
在多网格部署中,随着环境的增长和多样化,安全性可能会变得复杂。集群之间的服务身份验证和授权存在安全挑战。本地的Mixer https://istio.io/docs/reference/config/policy-and-telemetry/(服务策略和遥测)需要使用相邻集群中服务的属性进行更新。否则,当这些服务到达其集群时,它将无法对其进行授权。为了实现这一点,每个 Mixer 需要了解相邻集群中的工作负载身份及其属性Citadel https://istio.io/docs/concepts/security/需要使用相邻集群的证书进行更新,以允许集群之间的 mTLS 连接。
跨多网格控制平面的粒度工作负载身份(mTLS 证书)和服务属性的联合可以通过以下方式完成:
-
Kubernetes 入口:将来自集群外部的 HTTP 和 HTTPS 路由公开给services https://kubernetes.io/docs/concepts/services-networking/service/集群内。流量路由由入口资源上定义的规则控制。 Ingress 可以终止 SSL / TLS,并提供基于名称的虚拟托管。然而,它需要一个入口控制器 https://kubernetes.io/docs/concepts/services-networking/ingress-controllers满足 Ingress 规则
-
服务网格网关:Istio 服务网格提供了不同的配置模型,Istio网关 https://istio.io/docs/reference/config/networking/v1alpha3/gateway/。网关允许将监控和路由规则等 Istio 功能应用于进入集群的流量。入口 gateway https://istio.io/docs/reference/config/networking/v1alpha3/gateway/描述了一个在网格边缘运行的负载均衡器,用于接收传入的 HTTP/TCP 连接。它配置公开的端口、协议等。入口流量的流量路由是使用 Istio 路由规则配置的,与内部服务请求的方式完全相同。
您认为 mTLS 在这种情况下会起作用吗?
根据以上信息
我希望它能回答你的问题。如果您还有其他问题,请告诉我。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)