• 基于 GitHub 搭建自有应用仓库
  • 前提条件
    • 第一步:开发应用
    • 第二步:打包应用
    • 第三步:打包应用
    • 第四步:上传应用
    • 第五步:添加应用仓库
  • 自动化上传

    GitHub 是流行的代码仓库,可以直接托管静态文件,利用这个特性可以搭建应用仓库。

    基于 GitHub 搭建自有应用仓库

    根据 Helm 官方指南 编写应用,同时可浏览 Kubesphere 应用仓库已有的应用作为参考:官方应用位于 src/qingcloud 目录下,测试应用位于 src/experimental 目录下。

    前提条件

    创建一个 GitHub 仓库,比如创建一个示例仓库 https://github.com/FeynmanZhou/helm-repo-example,所有的应用包都可以存放在此处。

    第一步:开发应用

    1、参考 官方文档 安装 Helm 客户端。

    2、打开命令行工具,初始化 Helm 客户端:

    1. helm init --client-only

    3、根据 Helm 官方文档 创建应用。下面我们创建一个名为 mychart 的示例应用。

    在命令行窗口初始化一个应用:

    1. cd helm-repo-example
    2. helm create mychart

    此时会看到 Helm 工具帮我们生成了一个基于 Nginx 的应用(以模板文件组织):

    1. helm-repo-example/
    2. └── mychart/
    3. ├── Chart.yaml
    4. ├── values.yaml
    5. ├── templates/
    6. ├── Notes.txt # 用户执行 helm install 安装应用时显示的文字
    7. ├── deployment.yaml # 对应 k8s deployment(部署)的模板文件
    8. └── service.yaml # 对应 k8s service(服务)的模板文件
    9. └── ...

    4、然后根据实际需要进行修改和开发。

    第二步:打包应用

    1、开发完成后,在目录 helm-repo-example 下把应用打包(准备上传):

    1. helm package mychart

    2、打包完成后的目录结构如下:

    1. helm-repo-example/
    2. └── mychart-0.1.0.tgz # 可部署的应用包
    3. ├── mychart/
    4. ├── Chart.yaml
    5. ├── templates/
    6. └── service.yaml # 对应 k8s service(服务)的模板文件
    7. └── ...

    第三步:打包应用

    1、在目录 helm-repo-example 下利用 helm 命令生成索引文件 index.yaml:

    1. helm repo index .

    2、最后的目录结构如下:

    1. helm-repo-example/
    2. ├── index.yaml # 可部署的应用包
    3. ├── mychart-0.1.0.tgz # 可部署的应用包
    4. ├── mychart/
    5. ├── Chart.yaml
    6. ├── templates/
    7. └── service.yaml # 对应 k8s service(服务)的模板文件
    8. └── ...

    第四步:上传应用

    把上面产生的所有文件都提交到 GitHub 仓库里,此处默认上传到 master 分支。

    第五步:添加应用仓库

    如果是第一次部署,把 GitHub 示例仓库 https 地址添加到 KubeSphere 就可以使用了。

    以下简单说明如何将该 GitHub 仓库作为应用仓库添加至 KubeSphere,详见 添加应用仓库。

    1、在 「平台管理」→ 「平台设置」 的应用仓库下,点击添加应用仓库,输入示例仓库 https://raw.githubusercontent.com/FeynmanZhou/helm-repo-example/master 点击验证通过后再点击确定。

    基于 GitHub 搭建自有应用仓库 - 图1

    提示:获取 GitHub 仓库中文件的 Raw 地址可参考如下截图。

    基于 GitHub 搭建自有应用仓库 - 图2

    2、点击 「应用模板」,即可看到该仓库中的应用已成功导入至 KubeSphere,点击进入应用即可一键部署至指定项目中。

    基于 GitHub 搭建自有应用仓库 - 图3

    3、以下已成功将 mychart 应用部署至项目中,关于如何部署应用可参考 一键部署应用。

    基于 GitHub 搭建自有应用仓库 - 图4

    自动化上传

    上述第二〜四步可以自动化,解放手工操作并减少人工错误。可以利用现有的 CICD 工具(如 Jenkins)或开源平台(如 Travis CI)实现。大体流程如下:

    1. # 下载代码
    2. git clone https://github.com/FeynmanZhou/helm-repo-example
    3. # 拉取分支
    4. git fetch
    5. git checkout app/mychart
    6. # 初始化
    7. helm init --client-only
    8. # 打包
    9. helm package mychart
    10. # 更新索引
    11. helm repo index .
    12. # 提交
    13. git commit -a -m "[CI Build] Upload App"
    14. git push origin HEAD:app/mychart
    15. # Merge PR(人工或自动)