helm上传私有chart仓库

helm chart语法

github helm仓库

  1. 在githuab创建helm-charts仓库

  2. 克隆代码到本地git clone git@github.com:iexxk/helm-charts.git

  3. 进入cd helm-charts目录,创建目录执行mkdir charts

  4. 创建发布流程文件,执行mkdir -p .github/workflows

  5. 创建github操作流文件.github/workflows/release.yml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    name: Release Charts

    on:
    push:
    branches:
    - main

    jobs:
    release:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
    uses: actions/checkout@v2
    with:
    fetch-depth: 0

    - name: Configure Git
    run: |
    git config user.name "$GITHUB_ACTOR"
    git config user.email "$GITHUB_ACTOR@users.noreply.github.com"

    - name: Run chart-releaser
    uses: helm/chart-releaser-action@v1.1.0
    env:
    CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
  6. 进入github项目页面创建分支gh-pages

  7. 创建chart,进入charts目录,执行helm create nginx-file-browser创建nginx-file-browser项目

  8. 依次执行git add . git commit -m "init"git push

  9. 等待github编译部署成功,gh-pages分支内会多一个或更新yaml的文件

  10. 同步到artifacthub,在控制面板点击添加,输入名字:exxk,和url:https://iexxk.github.io/helm-charts

  11. 等待2+分钟,刷新,就能搜索到自己github仓库的chart了。

测试使用
1
2
3
4
5
6
7
helm repo add exxk https://iexxk.github.io/helm-charts #添加仓库
helm search repo exxk #查看仓库有哪些chart
helm repo update #更新仓库
#安装
helm install --set nfs.enabled=true --set nfs.server=127.0.0.1 my-nginx-file-browser exxk/nginx-file-browser
#卸载
helm delete my-nginx-file-browser

harbor helm仓库

  1. 编辑好chart模版文件

  2. 执行helm package -d <chart所在目录> <chart名称>,会生成一个压缩包,名字为<chart名称>-<chart文件内的version>.tgz
    eg:helm package -d appchart-uat-cd appchart-uat-cd在目录appchart-uat-cd会生成appchart-uat-cd-1.0.0.tgz

  3. 登陆harbor在项目-->项目名-->helm Charts-->上传,点击上传按钮在chart一栏点击选择,然后上传打包好的chart压缩包

    1
    2
    3
    4
    #也可以使用push命令上传
    docker login harbor.xxx.com.cn
    helm chart save CHART_PATH harbor.xxx.com.cn/cd-dev-1/REPOSITORY[:TAG]
    helm chart push harbor.xxx.com.cn/cd-dev-1/REPOSITORY[:TAG]
  4. 登陆harbor在项目-->项目名-->配置管理-->项目仓库勾上☑️公开,然后就可以使用了

  5. chart包使用地址为

    1
    2
    CHARTS_REPO = 'https://harbor.exxk.com.cn/chartrepo/cd-dev-1/charts'
    CHARTS_NAME = 'appchart-uat-cd-1.0.0.tgz'
  6. 更新使用部署命令

    1
    helm3 upgrade --install --history-max=$HISTORY_MAX manage-app$HELM_VER $CHARTS_REPO1/$CHARTS_NAME1 -n manage-server -f z-k8s-helm/uat/val-manage-app.yaml --set image.repository=$CICD_REGISTRY/$HARBOR_NAMESPACE/manage-app:$CICD_SEQUENCE,currentImage=$CURRENT_IMAGE

常见问题

  1. 国内拉去release压缩发布版本时,因为网络原因容易失败。

    解决:

    引入最新版helm/chart-releaser-action自动发布,修改helm-charts/.github/workflows/release.yml文件内容如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    name: Release Charts

    on:
    push:
    branches:
    - main

    jobs:
    release:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
    uses: actions/checkout@v2
    with:
    fetch-depth: 0

    - name: Configure Git
    run: |
    git config user.name "$GITHUB_ACTOR"
    git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
    - name: Run chart-releaser
    uses: helm/chart-releaser-action@v1.4.1
    env:
    CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
    - name: github fast
    run: |
    git status
    git checkout gh-pages
    git pull
    ls
    sed -i "s/github.com/download.fastgit.org/g" index.yaml
    git add index.yaml
    git commit -m "update url"
    git push
  2. 如果chart下载失败,检查仓库是否设置为公开。

参考

GitHub、Google等镜像加速地址收集

注意事项

版本号不变化,是不会覆盖发布的,注意每次修改Chart.yaml的版本号version: 0.1.1