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

标签 spring ssl kubernetes spring-security kubernetes-ingress

我有一个有趣的问题,也许你可以帮助我。
给定了两个 spring 应用程序,分别称为 app1 和 app2。这两个服务都发生了大量的 REST 调用。我需要实现一个安全解决方案,它们都可以在 REST 上相互通信,但它受相互 TLS 保护(mTLS,其中两个应用程序都有自己的证书)
以标准方式实现它并不难,Spring 有它的解决方案(使用 keystore 等),但问题是,我必须在 中创建它Kubernetes 环境。
这两个应用程序不在同一个集群中,因此 app1 在我们的集群中,但 app2 部署在我们合作伙伴的系统之一中。
我对 k8s 很陌生,不确定实现这一目标的最佳方法是什么。我应该将证书或 keystore 存储为 secret 吗?以某种方式使用和配置 nginx 入口,也许 Istio 会有用?我真的很想找到最佳解决方案,但我不知道正确的方法。
我真的很想在我的应用程序之外配置它并让 k8s 处理它,但我不确定这是否是正确的做法。
任何帮助将不胜感激,提供一些指导以找到正确的道路或某种现实生活中的例子。
谢谢您的帮助!

最佳答案

Mikolaj 可能已经涵盖了所有内容,但仍然让我加分
我没有太多使用 的经验Istio ,但我也建议查看 链接 service mesh .
步骤1。
考虑到如果你在 multi 可以 GKE 和 EKS 左右它仍然可以工作。
Multicluster guide细节和安装细节
Linkerd 将使用 信任 anchor 在集群之间,因此流量可以加密流动,而不是向公共(public)互联网开放。
您必须生成 证书 这将形成集群之间的共同信任基础。
每个代理都将获得证书的副本并将其用于验证。

关于spring - 如何在 Kubernetes 中为 Spring 应用程序提供双向 TLS (mTLS)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70944846/

相关文章:

java - 编译时编织配置

kubernetes - 如何启用 kubelet 日志记录详细程度

java - 使用 $exists 和 $elemMatch 进行 MongoDB 查询不起作用

java - HttpRequestHandlingMessagingGateway PayloadExpression java 配置

apache - 使用 SSL/HTTPS 保护 Raspberry Pi 运动视频流

node.js - 无法让 SSL 与 NodeJS 一起工作

通过代理使用 FTP 的 RCurl getURL

templates - 动态 ConfigMap Helm 模板

linux - Kubernetes Pod : Failed to get D-Bus Connection

java - Spring Data Rest 中的关联