- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我正在尝试为我的项目添加一个 ssl 证书,在我的本地机器上,我可以通过简单地按照 keytool 命令添加它,然后它就可以工作了。但是当我尝试在有我的 k8s 集群的机器上做同样的事情时,它似乎没有任何工作。
我看到几个人在他们的 docker 文件中将 cer 添加到 cacerts,但我没有,因为我使用的是 google 的 Jib,所以我不确定它应该如何从这里开始,或者它是我应该将配置添加到我的 k8s 部署文件中吗?
最佳答案
在这里,我假设您部署到 Kubernetes 的应用程序正在连接到受 Kubernetes 外部服务器证书保护的外部服务器。例如,像 this article 中的情况。 .
从上面的链接中可以看出,确实有多种方法可以解决此问题。但是,请注意文章中解释的方法并不真正适用于 Java,因为 Java doesn't make use of the system CA cert store from the OS but uses its own truststore :
Instead of using the windows certificate store it uses its own implementation. Java certificates are stored in a file called
cacerts
located atC:\Program Files (x86)\Java\jre1.x.x_xxx\lib\security\
因为你说你在本地成功使用了 keytool,我假设你已经知道这个 Java 行为以及你的服务器证书应该被导入到哪里——即 JRE 的默认 cacerts
。 JRE 目录下的文件(除非您使用某些系统属性告诉 JVM 在不同位置查找 CA 信任库)。既然你说你让它在本地工作,理论上你可以照着做,它也应该在 Kubernetes 上工作。
cacerts
在构建时一种直接的方法是在镜像构建时将您的证书烘焙到镜像中(正如您使用 Dockerfile
方法所暗示的那样)。为此,您可以使用 Jib 的 <extraDirectories>
将任意文件复制到图像中的功能(用法:Maven/Gradle)。只需准备一个新的cacerts
文件并将其放入图像中 JRE 的默认位置。
cacerts
在运行时如果您不喜欢将证书烘焙到镜像中,而是想在运行时提供它,我相信您基本上可以按照我上面链接的文章中描述的最后一种方法(尽管对于 Java,您应该当然,用 cacerts
代替)。我不是该领域的 Kubernetes 专家,不确定 Kubrenetes 是否提供了另一种专门的解决方案,但文章中的方法似乎合理并且应该可以工作。
对于 Kubernetes 以外的容器运行时,它们都将有自己的方式在运行时提供文件或附加卷,因此您应该能够实现相同的目标。
更新:在许多 Linux 发行版上,通常是 <JRE>/lib/security/cacerts
是 /etc/ssl/certs/java/cacerts
的符号链接(symbolic link),因此您可以选择更新后者而不是前者。
# ls -l /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts
lrwxrwxrwx 1 root root 27 Jan 1 1970 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts -> /etc/ssl/certs/java/cacerts
关于java - 使用 Google Jib 和 Kubernetes 时添加 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62991314/
我正在尝试在 kubernetes 部署描述符中指定一个挂载点,为此我需要有一个目录 volumeMounts: - name: volume-mount
我们正在尝试使用 jib 添加 extraDirectories 以添加几个特定于应用程序的文件,但我们更希望这些文件由基本镜像中存在的用户拥有,而不是 root 拥有。我们需要用户可写的文件,但不希
我有一个多模块项目,我使用 Jib 构建 Spring Boot 应用程序。我知道将 fat JAR 放入容器会阻止有效地构建镜像 ( see ),但需要将一个特定模块打包到 fat JAR 文件中。
是否可以在容器使用 cmd 或入口点或 jib maven 插件中的任何其他机制从 jib 图像启动时运行 linux 命令,然后启动 java 进程? 在我的例子中,我想运行这个命令: echo "
是否可以在容器使用 cmd 或入口点或 jib maven 插件中的任何其他机制从 jib 图像启动时运行 linux 命令,然后启动 java 进程? 在我的例子中,我想运行这个命令: echo "
我有一个基本的 java 镜像,其中包含一些预定义的 java_opts 作为环境变量。如何在插件中使用它们?
是否有可能看到在后台创建的dockerfile臂架?如果是,那我在哪里以及如何找到它? 上下文-我对docker文件有点熟悉,并想确保生成的docker文件具有我的应用程序成功运行所需的一切。 最佳答
普通的 docker build 命令会在本地创建镜像,不会自动推送到注册表。是否可以使用 Gradle 插件对 jib 做同样的事情? 最佳答案 gradle jibDockerBuild构建并推送
我正在使用谷歌的 Jib maven 插件创建 docker 图像,图像创建成功并且后端服务工作正常,但我的 webapp 文件夹不是该图像的一部分。在 jib 之前,我创建了一个包含所有内容的 zi
我正在尝试为我正在进行的项目构建 docker 镜像。它基于 jhipster,在配置项目后它告诉我运行以下 maven 命令: ./mvnw -ntp -Pprod verify jib:docke
我需要在 maven jib 插件创建的 docker 镜像中安装命令行工具,如 jq、curl 等。我怎样才能做到这一点?任何帮助将不胜感激。谢谢。 最佳答案 如另一个答案中所述,使用很少更改的预安
我正在使用 Maven Jib 插件将我的应用程序部署到 Gitlab docker 注册表。如果我使用 docker login registry.gitlab.com 并输入用户名和密码,我可以成
简介 我目前正在创建一个 GitHub Actions,它会自动构建一个容器。 而且我想知道是否可以创建一个 GitHub 操作来自动构建容器而无需在项目的 pom.xml 中添加 JIB ? 如果我
在我的springboot项目中,一共有三个配置文件 application.yml --> used in local development application-test.yml --> ru
在过去的几个月里,我一直在试验 docker,并享受在容器内构建和运行 java 应用程序的好处。 几周前,我偶然发现了 jib maven plugin并注意到 jib 可以构建镜像到 docker
我正在尝试模块化我的 build.gradle.kts .有人建议我创建一个 buildSrc文件夹。经过一番研究和询问后,我找到了这篇文章 I hated Gradle!...所以这是我的尝试: b
好的,我在创建 jib docker 镜像时遇到了链接问题。 我将我想要的文件复制到容器中 jib { allowInsecureRegistries = true extraDire
使用 jib-gradle-plugin 时要构建并推送到 AWS ECR,我需要安装 aws ecr credential helper否则构建会提示“系统没有 docker-credential-
我有一个 Spring Boot maven 应用程序,我需要使用 jib 插件对其进行 dockerize,然后发送到 azure 容器注册表 注册表已设置好并准备就绪,包括用户名、密码等... 我
我正在关注 here 的 Spring Boot Docker 教程. 我在有互联网连接时得到了确切的结果。现在我需要在没有互联网连接的环境中产生相同的结果。我将 Maven 存储库和 docker
我是一名优秀的程序员,十分优秀!