使用Google Jib和Kubernetes时添加SSL证书

因此,我试图为我的项目添加ssl证书,在本地计算机上,我只需遵循keytool命令就可以添加它,然后它就可以了。但是,当我尝试在装有k8s集群的机器上执行相同操作时,它似乎根本无法工作。

我看到几个人在docker文件的cacerts中添加了cer,但是由于我正在使用Google的Jib,所以我没有一个,所以我不确定它应该从这里去还是我应该添加到我的k8s部署文件中的配置?

iCMS 回答:使用Google Jib和Kubernetes时添加SSL证书

这里,我假设您的应用程序已部署到Kubernetes,并且正在连接到受Kuberenetes外部服务器证书保护的外部服务器。例如,像this article中的情况。

由于在上面的链接中可以看到,实际上有多种方法可以解决此问题。但是,请注意,本文中介绍的方法实际上并不适用于Java,因为Java doesn't make use of the system CA cert store from the OS but uses its own truststore

它使用自己的实现而不是使用Windows证书存储。 Java证书存储在位于mediaContent.setLength()的名为cacerts的文件中

由于您说过在本地成功使用了keytool,因此我假设您已经了解了此Java行为,并且应该将服务器证书导入到该位置,即导入到JRE目录下JRE的默认C:\Program Files (x86)\Java\jre1.x.x_xxx\lib\security\文件中(除非您使用某些系统属性来告诉JVM在其他位置查找CA信任库)。既然您说过让它在本地运行,那么从理论上讲,您也可以照做,它也可以在Kubernetes上运行。

一种简单的方法是在映像构建时将证书烘焙到映像中(如您所暗示的cacerts方法)。为此,可以将Jib的Dockerfile功能用于copy arbitrary files into an image。只需准备一个新的<extraDirectories>文件并将其放在图像中JRE的默认位置即可。

如果您不喜欢将证书放入映像中,而是想在运行时放入证书,我相信您基本上可以遵循我上面链接的文章中介绍的最后一种方法(尽管您应该将{{ 1}},当然)。我不是Kubernetes领域的专家,并且不确定Kubrenetes是否提供另一种专用解决方案,但是本文中的方法似乎是合理的,应该可以使用。


更新:在许多Linux发行版中,cacerts通常是cacerts的符号链接,因此您可以选择更新后者而不是前者。

<JRE>/lib/security/cacerts
本文链接:https://www.f2er.com/1903280.html

大家都在问