软件包仓库中的 Helm charts
- Tier: 基础版,专业版,旗舰版
- Offering: JihuLab.com,私有化部署
- Status: Beta
极狐GitLab 的 Helm chart 仓库还在开发中,并未生产就绪,所以功能有限。
在项目的软件包仓库中发布 Helm 软件包。然后在需要将它们用作依赖项时安装这些软件包。
有关 Helm 软件包管理器客户端使用的特定 API 端点的文档,请参阅 Helm API 文档。
构建 Helm 软件包
在 Helm 文档中阅读以下主题:
验证到 Helm 存储库
要验证到 Helm 存储库,您需要:
- 个人访问令牌,作用域设置为 api。
- 作用域设置为 read_package_registry、write_package_registry 或两者的 部署令牌。
- CI/CD 任务令牌。
- CI/CD 任务令牌
发布软件包
您可以发布具有重复名称或版本的 Helm chart。如果存在重复,极狐GitLab 总是返回最新版本的 chart。
构建后,可以使用 curl 或 helm cm-push 将 chart 上传到所需的通道:
-
使用 curl:
shellcurl --fail-with-body --request POST \ --form 'chart=@mychart-0.1.0.tgz' \ --user <username>:<access_token> \ https://gitlab.example.com/api/v4/projects/<project_id>/packages/helm/api/<channel>/charts
- <username>:极狐GitLab 用户名或部署令牌用户名。
- <access_token>:个人访问令牌或部署令牌。
- <project_id>:项目 ID(如 42)或项目的 URL 编码路径(如 group%2Fproject)。
- <channel>:通道的名称(如 stable)。
-
使用 helm cm-push 插件:
shellhelm repo add --username <username> --password <access_token> project-1 https://gitlab.example.com/api/v4/projects/<project_id>/packages/helm/<channel> helm cm-push mychart-0.1.0.tgz project-1
- <username>:极狐GitLab 用户名或部署令牌用户名。
- <access_token>:个人访问令牌或部署令牌。
- <project_id>:项目 ID(如 42)。
- <channel>:通道的名称(如 stable)。
发布通道
您可以将 Helm chart 发布到极狐GitLab 的通道中。通道是您可以用来区分 Helm chart 存储库的方法。例如,您可以使用 stable 和 devel 作为通道,以允许用户添加 stable 存储库,而 devel chart 是隔离的。
使用 CI/CD 发布 Helm 软件包
要通过 极狐GitLab CI/CD 自动发布 Helm 软件包,可以在命令中使用 CI_JOB_TOKEN 替代个人访问令牌。
例如:
yaml1stages: 2 - upload 3 4upload: 5 image: curlimages/curl:latest 6 stage: upload 7 script: 8 - 'curl --fail-with-body --request POST --user gitlab-ci-token:$CI_JOB_TOKEN --form "chart=@mychart-0.1.0.tgz" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/helm/api/<channel>/charts"'
- <username>:极狐GitLab 用户名或部署令牌用户名。
- <access_token>:个人访问令牌或部署令牌。
- <channel>:通道的名称(如 stable)。
安装软件包
请求软件包时,极狐GitLab 仅考虑到配置限制为止的最新软件包(默认是 1000 个软件包,由管理员配置)。对于每个软件包,仅返回最新的软件包文件。
要安装 chart 的最新版本,请使用以下命令:
shellhelm repo add --username <username> --password <access_token> project-1 https://gitlab.example.com/api/v4/projects/<project_id>/packages/helm/<channel> helm install my-release project-1/mychart
- <username>:极狐GitLab 用户名或部署令牌用户名。
- <access_token>:个人访问令牌或部署令牌。
- <project_id>:项目 ID(如 42)。
- <channel>:通道的名称(如 stable)。
如果存储库以前已被添加,您可能需要运行:
shellhelm repo update
以使用最新可用的 chart 更新 Helm 客户端。
疑难解答
上传后 chart 在软件包仓库中不可见
检查 Sidekiq 日志 中的任何相关错误。如果看到 Validation failed: Version is invalid,这意味着您的 Chart.yaml 文件中的版本不符合 Helm Chart 版本规范。要修复此错误,请使用正确的版本语法并再次上传 chart。
helm push 导致错误
Helm 3.7 为 helm-push 插件引入了一个重大更改。您可以更新 Chart Museum 插件 以使用 helm cm-push。