You need to enable JavaScript to run this app. 如何在Jenkins中为Docker镜像打版本并传递给Kubernetes YAML文件
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jenkins中为Docker镜像打版本并传递给Kubernetes YAML文件

Jenkins流水线传递BUILD_NUMBER到K8s部署文件的实现方案
  • 方案1:使用kubectl set image直接更新镜像标签(最简便,无需修改yaml文件)
    如果每次部署仅需要更新镜像标签,不需要修改其他部署配置,直接在SSH命令中传入解析后的BUILD_NUMBER更新deployment即可,不需要修改现有yaml文件:
# 替换hybris-deployment为你的deployment名称,hybris为对应容器名称
ssh -tt root@10.10.10.4 "kubectl set image deployment/hybris-deployment hybris=test123/demo:$BUILD_NUMBER"

注意SSH命令使用双引号包裹,Jenkins会在发送命令前将$BUILD_NUMBER解析为当前构建的实际数值再传到远程节点。

  • 方案2:yaml打占位符,远程执行时替换
    先修改hybris-deployment.yaml中的镜像行,设置占位符:
# 原有镜像行修改为该格式
image: test123/demo:__BUILD_NUMBER__

修改Jenkins流水线的SSH命令,传入BUILD_NUMBER后远程替换占位符再执行部署:

ssh -tt root@10.10.10.4 "BUILD_NUM=$BUILD_NUMBER && sed -i 's/__BUILD_NUMBER__/'\$BUILD_NUM'/g' hybris-deployment.yaml && kubectl apply -f hybris-deployment.yaml"
  • 方案3:Jenkins侧替换yaml后传到远程节点
    如果不想在K8s节点上修改部署文件,可先在Jenkins构建节点替换好yaml内容,再传到远程执行部署:
# 本地替换yaml占位符
sed -i "s/__BUILD_NUMBER__/$BUILD_NUMBER/g" hybris-deployment.yaml
# 传输替换后的yaml到k8s节点
scp hybris-deployment.yaml root@10.10.10.4:/root/
# 执行部署
ssh -tt root@10.10.10.4 'kubectl apply -f /root/hybris-deployment.yaml'

注意:如果需要保留远程yaml的原始占位符格式,可在方案2替换前先备份原始文件,或者执行完apply后回滚占位符即可

内容的提问来源于stack exchange,提问作者yatta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 01:27:03