docker - 如何使用 Docker 机密为 Docker 容器的多个实例创建证书?
问题描述
我有一个试图在 Docker 容器中运行的 Java 应用程序。该应用程序使用密钥库和信任库与数据库(也将是一个容器)和外部身份验证服务机制(如 LDAP)进行安全通信。
计划是使用 Kubernetes/Swarm/Openshift 来运行和管理容器。我计划运行应用程序的多个实例,并且还想利用 Kubernetes/Docker 如何管理容器之间的通信(即,我希望不必在我运行的每个容器实例上设置主机名/IP)。我已经看过那里的文档,看起来我可以使用证书并根据证书创建一个 Docker 机密。我还看到了如何将秘密放置在容器中的正确位置。
问题是——我在用于创建 Docker 机密的证书中放入了什么?CN 用什么?IP?
当我们生成证书时,我们通常将 FQDN 作为 CN 并将主机名和 IP 放在 SAN 下。我是 Docker 和秘密的新手,不知道这些东西在幕后是如何工作的,但我想 Docker 动态生成的 IP 将与我的证书中的 IP 不匹配,除非我指定容器的主机名和 IP 去成为,我试图避免。有没有办法创建一个适用于多个应用程序实例的证书?或者我是否需要为每个实例创建一个证书,并为每个容器实例定义主机名和 IP 地址,以使证书/机密工作。提前致谢
解决方案
Kubernetes 中的服务具有内部 DNS 名称,例如servicename.namespace.svc.cluster.local
. 您可以使用其短名称或 FQDN 寻址服务。您可以为该 DNS 名称颁发证书并将它们存储为机密,实际上您不需要知道服务 IP。
推荐阅读
- java - 禁用webclient ssl验证springboot 2.0.4
- reactjs - 更改 MUI React 中的涟漪效果持续时间
- c++ - 在一个数组中,我必须重新排列元素,以便每个元素以与前一个元素结束的相同字符开头
- sapui5 - UI5:sap.f.ShellBar 与 sap.tnt.ToolHeader
- laravel - 在 vuejs (vueCLI) 中使用 google 进行社交登录的问题
- android - 什么是“UnsafeOptInUsageError”?
- deep-learning - 更大的 GPU 内存,但更少的 epoch
- javascript - getServerSideProps 在路由更改时获取错误数据
- flutter - Flutter:如何正确地将 ImageFilter 应用到当前层?
- android - Intellisense 在 Kotlin 多平台库中不起作用