如何使用 GitLab 的新 Helm Chart 存储库

x33g5p2x  于2022-02-12 转载在 其他  
字(2.3k)|赞(0)|评价(0)|浏览(524)

GitLab 14.1 将Helm 图表添加到软件不断增长的受支持包存储库格式列表中。您现在可以使用 GitLab 项目存储和共享图表,而无需单独的 Helm 注册表。

Helm 图表是作为单个包分发的 Kubernetes YAML 清单的集合。它们使将复杂的应用程序部署到集群中变得更快、更容易。使用 GitLab 作为注册表,您的团队可以将图表与代码一起存储在组织管理的存储库中。

使用 GitLab Helm 存储库

确保您的 GitLab 实例已更新到版本 14.1。如果您使用托管的 GitLab.com 部署,您将拥有所需的一切。

准备一个简单的 Helm 图表以推送到您的存储库。如果您没有可用的样板图表,运行helm create example将生成一个新的样板图表。example生成的图表将准备好直接推送到 GitLab,无需任何修改。

切换到您的 GitLab 实例。要么创建一个新项目,要么找到一个现有项目。使用左侧边栏,导航到项目中的 Packages & Registries > Package Registry。如果您没有看到这些菜单,请前往“设置”>“常规”,展开“可见性、项目功能、权限”标题,然后启用“包”切换。

将存储库添加到 Helm

现在您已准备好开始使用您的包存储库。您需要先向 Helm 客户端注册它。

helm repo add \
    --username <username> \
    --password <token> \
    example-repo \
    https://gitlab.example.com/api/v4/projects/<project>/packages/helm/stable

本地存储库将命名为example-repo. 替换为您的 GitLab 用户名。的值应该是有权推送包的个人访问令牌。

您可以通过单击 GitLab 界面右上角的个人资料图标来生成新令牌。从菜单中选择“首选项”,然后从左侧边栏中选择“访问令牌”。使用范围添加新的访问令牌api。范围可能看起来正确,write_repository但实际上不起作用;它仅有助于通过 HTTP 使用 Git 进行访问,而 Helm 需要 API 集成。

用您要推送到的 GitLab 项目的 ID替换您的存储库 URL。您可以在其主页上的名称下方找到它。

推送到存储库

添加存储库后,您可以将具有有效 Helm 图表的任何目录推送到您的 GitLab 实例。安装添加本机命令的helm-push插件通常是最简单的。helm push

如果您还没有打包图表:

helm package example-chart

这将创建一个 gzipped tar 存档example-chart.tgz,包含您的图表。

添加helm-push插件:

helm plugin install https://github.com/chartmuseum/helm-push.git

最后,使用插件将图表推送到 GitLab 存储库:

helm push example-chart.tgz example-repo

返回 GitLab Web 界面,导航到项目的 Packages & Registries > Package Registry 屏幕。你应该看到你的图表出现了。

单击图表的名称以查看其详细信息。此屏幕可让您跟踪图表的历史记录、下载包文件和查看旧版本。您可以使用右上角的“删除”按钮删除图表。

在存储库中使用图表

使用存储库中的图表,您可以将其部署到 Kubernetes 集群中。helm install命令应该立即工作:

# load the contents of repositories
helm repo update

# install the chart
helm install example-repo/example-chart

这将在您的活动集群中开始一个新的图表部署。如有必要,使用–kubeconfig和–namespaceHelm 标志来选择适当的 Kubernetes 配置文件并指定要部署到的命名空间。

在 CI 管道中访问 GitLab 的存储库

与其他包格式一样,GitLab 的 Helm 存储库受益于与软件的 CI/CD 系统的内置集成。您的管道将接收预设的环境变量,从而简化图表发布过程。您无需设置任何自定义 CI 变量即可配置身份验证。

这是一个示例管道,它创建一个图表并将其发布到您的存储库:

stages:
  - helm-publish

helm-publish:
  stage: helm-publish
  image:
    name: alpine/helm:latest
    entrypoint: [""]
  script:
    - helm repo add --username $CI_REGISTRY_USER --password $CI_REGISTRY_PASSWORD my-repo $CI_REGISTRY
    - helm package my-chart
    - helm push my-chart.tgz my-repo

这些$CI_REGISTRY变量被配置为允许您将新包推送到注册表中。在对 GitLab 的其他存储库(例如 npm、Composer、NuGet 和 Maven)进行身份验证时,您可以重复使用它们。

概括

GitLab 现在有一个集成的 Helm 图表存储库,可让您将 Kubernetes 清单与代码一起存储。任何对项目存储库具有读取权限的人都可以将其添加到他们的 Helm 客户端并将图表部署到 Kubernetes 集群中。

发布新图表版本时,运行helm repo update然后使用helm upgrade将已部署的安装移动到新版本。您可以在 GitLab 中管理图表版本并删除浪费磁盘空间的旧版本。

相关文章