【发布时间】:2022-10-19 03:36:22
【问题描述】:
我正在尝试将ca-certificates(pem 文件)附加到 spring-boot gradle 插件(buildpacks)生成的 docker 映像。我使用的命令是./gradlew bootBuildImage。这在本地运行良好并且正在添加证书,但是当我从我的 gitlab 管道运行它时,我收到以下错误:
我向管道添加了一些日志记录,似乎即使文件(pem 和类型)存在并且具有适当的权限,管道运行器也可能无法访问这些文件,因此它失败了。我看不到如何以不同的方式添加文件或在构建器中执行命令以通过 wget/curl 获取它们。
这是我的build.gradle 配置:
pem 文件的存储方式如下:
该错误不是很有帮助,文档也不是很好。欢迎任何想法。
我已经添加了
environment = [
"BP_LOG_LEVEL": "debug"
]
和/platform 相关部分(除了最初共享的日志)在这里(提到了几次):
编辑:我要添加的证书是 AWS RDS 的。我确实尝试更改 buildpacks 构建器映像以尝试使用更合适的(采用)映像(包含 AWS 根证书)https://bugs.openjdk.org/browse/JDK-8233223,但没有运气。
我的印象是这是一个 gitlab 问题,并且已经开始探索以不同的方式将 pem 文件传递给 EKS pod。也许通过 SERVICE_BINDING_ROOT 和 k8s 机密。
【问题讨论】:
-
你能链接到你的完整构建日志吗?截图信息不够。谢谢
-
@Daniel Mikusa 构建日志没有更多内容。重要的部分已经提供。我的印象是 gitlab ci 设置可能不允许将绑定文件安装到构建器映像,即使文件存在并且具有正确的权限:/
-
尝试将环境变量添加到您的
build.gradle配置BP_LOG_LEVEL=debug。这应该会触发 buildpacks 输出大量附加信息。我想也许您已经启用了该功能,但如果您所看到的只是图形中的内容,那么它没有启用。这将为您提供页面和页面的输出,包括/platform的实际内容,因此您将能够查看绑定是否存在。 -
@DanielMikusa 我已经编辑了问题并添加了一些额外的日志记录截图:` [creator] Platform Bindings: [{Name: ca-certificates Path: /platform/bindings/ca-certificates Type: Provider: Secret: []}]`
-
是的,听起来你在正确的轨道上,怀疑 Gitlab CI。绑定无法正常工作。正在进行卷装载,因为它创建了
ca-certificates文件夹,但由于某种原因,卷装载为空。显示“平台内容”的行将列出绑定中的所有文件并且它是空的。不幸的是,我不知道为什么会发生这种情况,也许其他人可能知道。
标签: spring-boot certificate paketo