演示资源已提交:
- Demo & Pipeline k8s-helm-tpl - Repos (azure.com)
目录
1. Create blank project in GitLab
4. Helm plugin install cm-push
前言
通过前面几篇博客,我们已经基本了解Helm Chart的生成和使用,接下来我们来实现生成环节中非常重要的部分:搭建Helm Charts仓库与CI Pipeline。
Pipeline 效果图:
Helm Chart版本号须符合 Semantic Versioning 2.0.0
- 红色:正式版本,当代码merge到master分支之后触发CI生成;
- 蓝色:pr版本,当创建merge到develop或master分支的pull request时触发CI生成;
- 黑色:测试版本,当代码merge到develop分支后触发CI生成;
创建 Helm Charts仓库
Helm Charts Repo搭建并不复杂,Helm官网文档介绍了几个云服务商提供的Helm仓库。也可以自己搭建一个,比如通过Github Page,也非常简单。
但是我没有找到特别好的方法可以在Pipeline中Push Chart到基于Github Page搭建的仓库,因此我改用GitLab来创建一个免费的Helm Charts仓库,仅供学习使用。
1. Create blank project in GitLab
2. Create a Deploy Token
3. Helm repo add
在你本地执行以下命令,替换掉<>中的内容。
helm repo add --username <username> --password <access_token> <repo-name> https://gitlab.com/api/v4/projects/<project_id>/packages/helm/stable
4. Helm plugin install cm-push
这里没有使用Helm 自身的push命令,而是使用了插件:
chartmuseum/helm-push: Helm plugin to push chart package to ChartMuseum (github.com)
5. Helm Pakage
Helm pakage <Chart.yaml directory path>
尤其需要注意的是,Helm Chart Version必须遵循 Semantic Versioning 2.0.0
例如: 2.0.1
- 2代表 MAJOR,表示一次重大的,不兼容的版本升级。
- 0代表MINOR,每次触发就可以 +1。
- 1代表PATCH,随着每次bug fixes而+1
6. Helm cm-push
搭建Azure Pipeline
1. Install GitTools
我们需要在Pipeline中定义一套Chart Version计算方法。首先到azure pipeline 插件市场安装GitTools。GitTools - Visual Studio Marketplace
2. GitVersion.yml
GitVersion.yml - Repos (azure.com)
3. azure-pipelines.yml
4. Disable Shallow fetch
Edit Pipeline -> 右上角三个点(More actions) -> Triggers -> YAML -> Get Sources
5. Set pipeline permissions
Edit Pipeline -> 右上角三个点(More actions) -> Manage security
我们需要用GitVersion生成的版本号来更新Pipeline Build number,因此为Build Service Account分配Edit build pipeline权限。
6. Set Branch policies
为了能在创建pr之后生成pr版本的helm chart,需要调整默认的分支策略。
Branch -> master -> Branch policies -> Enable Build Validation
Branch -> develop -> Branch policies -> Enable Build Validation