头盔+伞形图+ Azure管道

时间:2020-07-31 19:41:14

标签: microservices azure-pipelines kubernetes-helm

我是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,在其中定义图像和存储库,如下所示:

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. 如何修改伞形图中的版本?

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

1 个答案:

答案 0 :(得分:0)

您可能可以在管道中采取变通办法,以使用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标准