基于Spinnaker K8S Manifest的部署,带有多个Docker映像触发器

时间:2019-05-30 23:36:04

标签: kubernetes spinnaker

我有一个Spinnaker部署管道,当在Docker注册表中更新Docker Image D1或Docker Image D2时触发。

管道有多个阶段,其中D1在阶段S1部署,如果成功,则D2在阶段S2部署。

我看到的是,取决于更新哪个图像,只有一个阶段成功。另一阶段导致K8S中出现ImagePullBackOff错误。

问题似乎是,对于触发(例如D1)管道的图像更改,将提取正确版本的图像,对于其他阶段,将使用“:latest”标记来提取图像,而该标记不会在Docker注册表中不存在。

关于如何设置的任何想法?

1 个答案:

答案 0 :(得分:0)

首先,最好建立2条管道。如果没有,那么...

您的管道应如下所示:

Config -- Deploy #1
       \- Deploy #2

有多少个触发器都没关系-只有一个触发器将提供工件。 这样您就能得到类似的东西:

${trigger['artifacts'][0]['name']} 

它将为您提供一个带有您的Docker映像名称的字符串,例如docker-registry.com/org/app

使用此信息,您可以在json中使用Conditional on Expression启用部署阶段,就像这样:

"stageEnabled": {
  "expression": "${trigger['artifacts'][0]['name'].contains('app')}",
  "type": "expression"
},

条件已解析为false的部署阶段将被跳过。