【问题标题】:Tagging best practices in Azure DeVops for docker images deployed on Kubernetes在 Azure DeVops 中为部署在 Kubernetes 上的 docker 映像标记最佳实践
【发布时间】:2018-10-17 08:32:25
【问题描述】:

有没有人通过 Azure DevOps 构建和推送 docker 镜像 + 将它们部署到 AKS 的经验?

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

然后我的发布管道中有我的.yaml 文件来部署图像。我不能(或不知道如何)引用该变量 $(Build.Repository.Name):$(Build.BuildId)

有人有自动化这方面的经验吗?

【问题讨论】:

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


    【解决方案1】:

    我如何让它为我工作是通过使用“yaml 文件的tokerisation”。

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

    构建镜像任务

    推送图片任务

    在我参考的图像的部署 yaml 中:

    然后对于我应用 yaml 文件之前的部署,通过 kubectl apply 任务,我使用任务“替换令牌”。您可以指定要替换令牌的文件。由于我只对图像使用了令牌,因此我只选择了部署 yaml 文件。

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

    查看Tokenised version of yaml上描述的完整示例

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
    • 啊好吧,对不起..你是对的。没想到。
    • 我调整了答案,希望对大家有更好的描述。
    【解决方案2】:

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

    如果您有超过 1 个工件,则变量将引用您的主要工件:

    如果您想将变量用于其他工件(不是主要工件),您可以使用这种方式:

    Release.Artifacts.{alias}.BuildId
    

    {alias} 是工件的别名:

    【讨论】:

    • 嗨@Shayki,我使用 kubectl apply 插件。不幸的是,我无法传递变量。在部署 yaml 文件中,我无法引用变量(我认为?!)。
    • 你的意思是在 Kubernetes YAML 文件中吗?
    • 是的。在 yaml 文件中,您显然可以引用“变量/令牌”,并在发布管道中使用任务来替换这些令牌。
    • 哦,好吧,你不想这样做(替换令牌)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    相关资源
    最近更新 更多