如何在Kubernetes中为Spring应用程序提供双向TLS(mTLS)



我有一个有趣的问题,也许你可以帮我。

有两个spring应用程序,分别称为app1和app2。这两种服务都有大量的REST调用。我需要实现一个安全解决方案,其中他们两个都可以在REST上相互通信,但它受到双向TLS(mTLS,其中两个应用程序都有自己的证书(的保护

以标准方式实现它并不难,Spring有针对它的解决方案(包括密钥库等(,但问题是,我必须在Kubernetes环境中创建它。这两个应用程序不在同一个集群中,所以app1在我们的集群中,但app2部署在我们合作伙伴的一个系统中
我对k8s还很陌生,不确定实现这一点的最佳方法是什么。我应该将证书或密钥库作为机密存储吗?以某种方式使用和配置nginxingress,也许Istio会有用?我真的很想找到最佳解决方案,但我不知道正确的方法。我真的很想如果我可以在我的应用程序之外配置它,让k8s来处理它,但我不确定这是否是正确的做法。

任何帮助,找到正确道路的指导或某种现实生活中的例子,我们都将不胜感激
感谢您的帮助!

Mikolaj可能已经涵盖了所有内容,但仍然让我添加我的分

我没有太多使用Istio的经验,但我也建议查看Linkerd服务网格。

步骤1。

考虑如果你在多罐GKE&心电图还是可以的。

多集群指南详细信息和安装详细信息

Linkerd将在集群之间使用信任锚点,这样流量就可以加密流动,而不会开放到公共互联网。

您必须生成证书,该证书将在集群之间形成共同的信任基础。

每个代理都将获得证书的副本,并将其用于验证。

问题的答案将更加复杂,因为没有一个一刀切的解决方案是最好的。这完全取决于你到底想做什么,以及你有什么工具。suren在评论中很好地提到了这一点:

如果您仍处于PoC阶段,请注意,有几种方法可以实现您想要的。例如,Istio将是一种有效的方式。您可以在ServiceEntry中拥有另一个服务,启用mTLS,然后就可以了。你甚至不必为这个特定的场景管理秘密,因为这是自动的。但还有其他方法。即使使用Istio,也有其他方法。如果你在任何云提供商上,你可能也有一些托管服务

这是一个非常好的评论,我还向您推荐一个基于istio的解决方案。首先,请先查看istio的官方mTLS文档。您还可以在那里找到具体的用法示例和示例配置文件。

您在问题中还提到,您的应用程序将在两个集群之间运行。看看这个教程,它确切地展示了如何解决这种情况:

Istio为每个pod注入一个特使sidecar,并确保所有流量都通过特使代理。Envoy代理组成数据平面。控制平面管理Envoy侧车。在以前的Istio版本中,控制平面曾经有其他组件,如Pilot、Citadel和Galley。这些组件被合并为一个名为"istiod"的二进制文件。控制平面还处理配置、证书、机密和健康检查。

有关更多信息,请参阅stackoverflow和其他教程中的相关问题。

考虑到,除了istio本身,您还可以使用现成的云解决方案,例如GKE提供的解决方案,即在istio入口上配置TLS和mTLS。

另一种方法可能是使用Anthos Service Mesh工具,例如:mTLS。

相关内容

  • 没有找到相关文章

最新更新