我有一个Java应用程序,试图在Docker容器中运行。该应用程序使用密钥库和信任库与数据库(也将是容器)和外部身份验证服务机制(例如LDAP)安全地通信。
计划是使用Kubernetes / Swarm / Openshift来运行和管理容器。我计划运行该应用程序的多个实例,并且还想利用Kubernetes / Docker如何管理容器之间的通信(即,我希望不必在我运行的每个容器实例上设置主机名/ IP)。
我在那里看到过文档,看起来我可以使用证书并根据证书创建Docker机密。我还看到了如何将秘诀放入容器中的正确位置。
问题是–我应在用于创建Docker机密的证书中放入什么?我要为CN使用什么? IP?
当我们生成证书时,我们通常将FQDN作为CN,并将主机名和IP放在SAN下。我是Docker和机密的新手,不知道这些东西是如何工作的,但是我可以想象,除非我指定了容器的主机名和IP的运行方式,否则Docker动态生成的IP不会与证书中的IP匹配是,我正努力避免。 有没有一种方法可以创建适用于应用程序多个实例的证书?还是我需要为每个实例创建一个证书并为每个容器实例定义主机名和IP地址,以使证书/秘密工作。 预先感谢
答案 0 :(得分:0)
Kubernetes中的服务具有servicename.namespace.svc.cluster.local
之类的internal DNS names。您可以使用服务的简称或FQDN来寻址服务。您可以为该DNS名称颁发证书并将其存储为秘密,实际上您不需要知道服务IP。