使用Minikube部署Online Boutique时构建loadgenerator遇签名错误如何解决?
解决Debian Buster源签名验证失败导致的镜像构建错误
这个问题的核心原因是Debian Buster已经结束稳定版本支持,官方源的签名密钥已过期,且主源迁移至归档服务器,导致apt-get更新时无法通过签名校验。下面提供两种可行的解决思路:
方法一:替换为Debian归档源并导入有效密钥
找到Online Boutique项目中src/loadgenerator/Dockerfile的第10步,将原有的apt-get更新命令替换为以下内容,手动指定归档源并导入对应的验证密钥:
RUN apt-get -qq update && apt-get install -y --no-install-recommends gnupg2 && \ curl -fsSL https://archive.debian.org/debian-archive-keyring.gpg | gpg --dearmor -o /usr/share/keyrings/debian-archive-keyring.gpg && \ echo "deb [signed-by=/usr/share/keyrings/debian-archive-keyring.gpg] http://archive.debian.org/debian buster main" > /etc/apt/sources.list && \ echo "deb [signed-by=/usr/share/keyrings/debian-archive-keyring.gpg] http://archive.debian.org/debian buster-updates main" >> /etc/apt/sources.list && \ echo "deb [signed-by=/usr/share/keyrings/debian-archive-keyring.gpg] http://security.debian.org/debian-security buster/updates main" >> /etc/apt/sources.list && \ apt-get -qq update && apt-get install -y --no-install-recommends curl && \ apt-get purge -y gnupg2 && apt-get autoremove -y
这段命令的作用拆解:
- 临时安装
gnupg2用于密钥处理 - 下载并导入Debian归档源的官方验证密钥
- 替换系统默认的apt源为归档服务器地址
- 重新执行更新并安装
curl - 清理不再需要的
gnupg2包,减少镜像体积
方法二:升级基础镜像到较新的Debian版本
如果你的loadgenerator应用兼容较新的Debian版本,可以直接修改Dockerfile的基础镜像。比如原基础镜像是golang:1.16-buster,可替换为:
FROM golang:1.16-bullseye
Bullseye是Debian上一个稳定版本,目前仍在维护中,源的签名校验不会出现问题。如果应用支持更新版本,也可以选择当前稳定版bookworm。
修改完成后,重新执行skaffold run命令,即可正常构建loadgenerator镜像。
内容的提问来源于stack exchange,提问作者Saranya Gupta
相关产品推荐
相关产品推荐

