microservices - 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(如果发生变化)。我正在使用提交哈希来标记图像。
最后,这是我的问题,或者是否有人会对我应该如何提出一些建议:
- 如何提升每个微服务图表版本?
- 如何更新每个图表的图像标签?
- 我怎样才能在伞形图表中增加版本?
任何帮助或建议将不胜感激!
解决方案
您可能可以在管道中使用 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 标准。
推荐阅读
- vuejs2 - Vue2 JS - 表单中的 v-for 组件
- javascript - 在 React 中重定向到相同的登录路径
- java - Quartz调度器下一次执行时间等于当前时间加上调度器间隔
- python - Django 自定义用户 UUID 重复(缓存?)
- c# - 使用 Quickbooks SDK 13.0 的日期范围内所有客户的 JobProfitabilityDetail 报告
- python - 注释在模板中不可见,即使它们保存在数据库中
- html - puppeteer 为截图删除一个元素
- python - 如何将摄氏度转换为华氏温度,然后计算寒冷和温暖的天数,温度取自用户输入
- powershell - 用于发送到串口的 powershell cmdlet
- antlr4 - antlr4:未按预期识别令牌