首页 > 解决方案 > Helm + Umbrella Charts + Azure Pipeline

问题描述

我是 Helm、微服务和 Kubernetes 的新手。在过去的几个月里,我一直在研究 PoC,现在我正在尝试在 Azure DevOps 中设置一个管道,以部署我目前正在手动升级的图表。目前我有一个伞形图,用于定义每个微服务作为需求(requirements.yaml):

dependencies:  
  - name: serviceA
    version: 0.1.0
    repository: "file://../serviceA/charts/serviceA"
  - name: serviceB
    version: 0.1.1
    repository: "file://../serviceB/charts/serviceB"

对于每个微服务,我都有一个 value.yaml,我在其中定义图像和 repo,如下所示:

image:
  repository: myacr.azurecr.io/serviceA
  tag: 8ca05e4
  pullPolicy: IfNotPresent

到目前为止,我正在以这种方式升级部署:

 - Build and push Docker Images to ACR
 - Foreach microservice chart, bump the Chart version and update the Image Tag
 - Update the microservice version in the Umbrella chart
 - Finally to deploy the solution:

helm dep update
helm dep build
helm upgrade ....

由于我正在学习如何使用 Helm 和 Kubernetes,我可能没有做出最好的决定。但是,此设置为我提供了我目前需要的东西,一种仅更新已更改内容的方法。

现在我正在尝试将此手动过程移至 Azure DevOps 中的管道。我正在为服务 A 和 B 使用单个存储库。

到目前为止,我能够在管道中做的是构建每个服务映像并将其推送到 ACR(如果发生变化)。我正在使用提交哈希来标记图像。

最后,这是我的问题,或者是否有人会对我应该如何提出一些建议:

  1. 如何提升每个微服务图表版本?
  2. 如何更新每个图表的图像标签?
  3. 我怎样才能在伞形图表中增加版本?

任何帮助或建议将不胜感激!

标签: microservicesazure-pipelineskubernetes-helm

解决方案


您可能可以在管道中使用 YAML 处理器更新图像标签图表版本yq。请通过https://github.com/mikefarah/yq

前任:

  1. yq w -i serviceA/Chart.yaml version <version>
  2. yq w -i serviceA/values.yaml image.tag <image-tag-name>
  3. yq w -i parentChart/Chart.yaml version <version>

但是,图表版本必须遵循SemVer 2 标准


推荐阅读