Help us learn about your current experience with the documentation. Take the survey.

包注册表中的 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 仓库,您需要以下任一方式:

发布包

您可以发布具有重复名称或版本的 Helm charts。如果存在重复,GitLab 总是返回最新版本的 chart。

构建完成后,可以使用 curlhelm cm-push 将 chart 上传到所需的频道:

  • 使用 curl

    curl --fail-with-body --request POST \
         --form '[email protected]' \
         --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 仓库的方法。例如,您可以使用 stabledevel 作为频道,允许用户添加 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 "[email protected]" "${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