我是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(如果发生了更改)。我正在使用提交哈希标记图像。
最后,这是我的问题,或者是否有人对我应该如何提供建议?
任何帮助或建议将不胜感激!
答案 0 :(得分:0)
您可能可以在管道中采取变通办法,以使用YAML处理器yq
更新图像标签和图表版本。请通过https://github.com/mikefarah/yq
例如:
yq w -i serviceA/Chart.yaml version <version>
yq w -i serviceA/values.yaml image.tag <image-tag-name>
yq w -i parentChart/Chart.yaml version <version>
但是,图表版本必须遵循 SemVer 2标准。