首页 > 解决方案 > 如何使用 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 地址,以使证书/机密工作。提前致谢

标签: dockerkubernetescertificateswarmdocker-secrets

解决方案


Kubernetes 中的服务具有内部 DNS 名称,例如servicename.namespace.svc.cluster.local. 您可以使用其短名称或 FQDN 寻址服务。您可以为该 DNS 名称颁发证书并将它们存储为机密,实际上您不需要知道服务 IP。


推荐阅读