在Azure DeVops中为Kubernetes上部署的Docker映像标记最佳实践

时间:2018-10-17 08:32:25

标签: docker kubernetes azure-devops azure-pipelines azure-aks

是否有人在构建和推送Docker映像+通过Azure DevOps将其部署到AKS方面有经验?

构建并推送图像时,可以使用变量$(Build.Repository.Name):$(Build.BuildId).

但是随后,我有了发布管道中用于部署映像的.yaml文件。我无法(或不知道如何)引用该变量$(Build.Repository.Name):$(Build.BuildId)

有人有自动化的经验吗?

2 个答案:

答案 0 :(得分:2)

我如何使用yaml文件的代码化。

在构建过程中(将图像构建并推送到私有存储库中,我使用Azure Devops中的默认变量$(Build.BuidId)作为docker图像的标记。

构建图像任务 Build image

推送图片任务

Push image

在我所指映像的部署Yaml中:

Deployment yaml

然后在部署yaml文件之前进行部署,并使用kubectl apply任务,我将使用任务“替换令牌”。您可以指定替换令牌的文件。由于我仅对映像使用令牌,因此我仅选择了部署yaml文件。

artifact source name replace token task

它的作用是将#{Release.Artifacts.acpyaml.BuildId}#替换为上次构建的实际构建号,因此当它开始提取图像时,它具有正确的标签。

请参阅Tokenised version of yaml

上描述的完整示例

答案 1 :(得分:0)

如果发布管道上只有1个工件,那么您也可以在发布中以相同的方式使用变量($(Build.Repository.Name):$(Build.BuildId))。

如果工件多于1个,则变量将引用您的主要工件:

enter image description here

如果要将变量用于其他工件(而非主要工件),则可以使用以下方式:

Release.Artifacts.{alias}.BuildId

{alias}是工件的别名:

enter image description here