软件包库中的 Helm charts
引入于 14.1 版本。
Helm chart 库正在开发中,由于功能有限,尚未准备好用于生产。
在项目的软件包库中发布 Helm chart。然后在需要将它们用作依赖项时安装它们。
构建 Helm 包
在 Helm 文档中阅读有关这些主题的更多信息:
对 Helm 库进行身份验证
要对 Helm 库进行身份验证,您需要:
- 个人访问令牌,其范围设置为
api
。 - 部署令牌,其范围设置为
read_package_registry
、write_package_registry
或两者均有。 - CI/CD 作业令牌。
发布软件包
您可以发布具有重复名称或版本的 Helm chart。如果存在重复项,系统总是返回最新版本的 chart。
构建完成后,可以使用 curl
或 helm cm-push
将 chart 上传到所需的 channel:
-
使用
curl
:curl --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-encoded 项目路径(如group%2Fproject
)。 -
<channel>
: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>
:channel 的名称(如stable
)。
-
使用 CI/CD 发布 Helm 包
要通过 GitLab CI/CD 自动发布 Helm 包,您可以使用 CI_JOB_TOKEN
代替命令中的个人访问令牌。
例如:
image: curlimages/curl:latest
stages:
- upload
upload:
stage: upload
script:
- 'curl --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>
:channel 的名称(如stable
)。
安装软件包
当请求一个包时,系统只考虑最近创建的 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>
:channel 的名称(如stable
)。
如果先前已添加仓库,则可能需要运行:
helm repo update
使用最新可用的 chart 更新 Helm 客户端。
有关更多信息,请参阅使用 Helm。
故障排查
上传后,chart 在软件包库中不可见
检查 Sidekiq 日志是否有任何相关错误。如果您看到 Validation failed: Version is invalid
,则表示您的 Chart.yaml
文件中的版本不符合 Helm Chart 版本规范。
要修复错误,请使用正确的版本语法并再次上传 chart。
helm push
导致错误
Helm 3.7 为 helm-push
插件引入了重大更改。您可以更新 Chart Museum plugin,使用 helm cm-push
。