包注册表中的 Helm charts
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
- Status: Beta
GitLab 的 Helm chart 注册表仍在开发中,由于功能有限,尚未准备好用于生产环境。此 epic 详细说明了使其达到生产就绪状态所需的工作和时间表。
在项目的包注册表中发布 Helm 包。然后在需要使用它们作为依赖项时安装这些包。
有关 Helm 包管理器客户端使用的特定 API 端点的文档,请参阅 Helm API 文档。
构建 Helm 包
有关以下主题的更多信息,请参阅 Helm 文档:
认证到 Helm 仓库
要认证到 Helm 仓库,您需要以下任一方式:
- 具有
api范围的 个人访问令牌 - 具有
read_package_registry、write_package_registry或两者范围的 部署令牌 - CI/CD 作业令牌
发布包
您可以发布具有重复名称或版本的 Helm charts。如果存在重复,GitLab 总是返回最新版本的 chart。
构建完成后,可以使用 curl 或 helm cm-push 将 chart 上传到所需的频道:
-
使用
curl:curl --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插件:helm 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 charts 发布到 GitLab 中的频道。频道是一种可以用来区分 Helm chart 仓库的方法。例如,您可以使用 stable 和 devel 作为频道,允许用户添加 stable 仓库,同时将 devel charts 隔离开来。
使用 CI/CD 发布 Helm 包
要通过 GitLab CI/CD 自动发布 Helm 包,您可以在命令中使用 CI_JOB_TOKEN 替代个人访问令牌。
例如:
stages:
- upload
upload:
image: curlimages/curl:latest
stage: upload
script:
- '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 的最新版本,请使用以下命令:
helm 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)。
如果之前已经添加了仓库,您可能需要运行:
helm repo update以使用当前可用的 charts 更新 Helm 客户端。
更多信息请参阅 使用 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。