使用 Helm charts
目录
1. 了解 Helm1.1. 主要特性1.2. 目录术语定义1.3 了解 HelmRequestHelmRequest 与 Helm 的区别HelmRequest 与 Application 集成部署工作流组件定义2 通过 CLI 以 Application 形式部署 Helm Charts2.1 工作流概览2.2 准备 Chart2.3 打包 Chart2.4 获取 API 令牌2.5 创建 Chart 仓库2.6 上传 Chart2.7 上传相关镜像2.8 部署应用2.9 更新应用2.10 卸载应用2.11 删除 Chart 仓库3 通过 UI 以 Application 形式部署 Helm Charts3.1 工作流概览3.2 前提条件3.3 将模板添加到可管理仓库3.4 删除指定版本的模板操作步骤1. 了解 Helm
Helm 是一个包管理器,用于简化在 Alauda Container Platform 集群上部署应用和服务的过程。
Helm 使用一种称为 charts 的打包格式。Helm chart 是描述 Kubernetes 资源的文件集合。
在集群中创建 chart 会生成一个运行中的 chart 实例,称为 release。
每次创建 chart,或升级、回滚 release 时,都会生成一个递增的修订版本。
1.1. 主要特性
Helm 提供以下功能:
- 在 chart 仓库中搜索大量 charts
- 修改已有的 charts
- 使用 Kubernetes 资源创建自定义 charts
- 打包应用并以 charts 形式共享
1.2. 目录
Catalog 基于 Helm 构建,提供了一个全面的 Chart 分发管理平台,突破了 Helm CLI 工具的限制。该平台通过友好的界面,使开发者能够更方便地管理、部署和使用 charts。
术语定义
1.3 了解 HelmRequest
在 Alauda Container Platform 中,Helm 部署主要通过名为 HelmRequest 的自定义资源进行管理。此方法扩展了标准 Helm 功能,并将其无缝集成到 Kubernetes 原生资源模型中。
HelmRequest 与 Helm 的区别
标准 Helm 使用 CLI 命令管理 releases,而 Alauda Container Platform 使用 HelmRequest 资源定义、部署和管理 Helm charts。主要区别包括:
- 声明式 vs 命令式:HelmRequest 提供声明式的 Helm 部署方式,传统 Helm CLI 是命令式的。
- Kubernetes 原生:HelmRequest 是直接集成 Kubernetes API 的自定义资源。
- 持续调和:Captain 持续监控并调和 HelmRequest 资源与其期望状态。
- 多集群支持:HelmRequest 支持通过平台跨多个集群部署。
- 平台功能集成:HelmRequest 可与其他平台功能(如 Application 资源)集成。
HelmRequest 与 Application 集成
HelmRequest 与 Application 资源在概念上相似,用户可能希望统一查看。平台提供机制将 HelmRequest 同步为 Application 资源。
用户可通过添加以下注解,将 HelmRequest 标记为以 Application 形式部署:
启用此功能后,平台 UI 会显示额外字段及对应 Application 页面链接。
部署工作流
通过 HelmRequest 部署 charts 的工作流包括:
- 用户 创建或更新 HelmRequest 资源
- HelmRequest 包含 chart 引用及应用的 values
- Captain 处理 HelmRequest 并创建 Helm Release
- Release 包含已部署的资源
- Metis 监控带应用注解的 HelmRequest 并同步为 Applications
- Application 提供已部署资源的统一视图
组件定义
- HelmRequest:描述期望 Helm chart 部署的自定义资源定义
- Captain:处理 HelmRequest 资源并管理 Helm releases 的控制器(源码地址:https://github.com/alauda/captain)
- Release:已部署的 Helm chart 实例
- Charon:监控 HelmRequest 并创建对应 Application 资源的组件
- Application:已部署资源的统一表示,提供额外管理能力
- Archon-api:平台内负责特定高级 API 功能的组件
2 通过 CLI 以 Application 形式部署 Helm Charts
2.1 工作流概览
准备 chart → 打包 chart → 获取 API 令牌 → 创建 chart 仓库 → 上传 chart → 上传相关镜像 → 部署应用 → 更新应用 → 卸载应用 → 删除 chart 仓库
2.2 准备 Chart
Helm 使用称为 charts 的打包格式。chart 是描述 Kubernetes 资源的文件集合。单个 chart 可用于部署从简单 Pod 到复杂应用栈的任何内容。
参考官方文档:Helm Charts Documentation
示例 chart 目录结构:
关键文件说明:
values.descriptor.yaml(可选):配合 ACP UI 显示用户友好表单values.schema.json(可选):校验 values.yaml 内容并渲染简单 UIvalues.yaml(必需):定义 chart 部署参数
2.3 打包 Chart
使用 helm package 命令打包 chart:
2.4 获取 API 令牌
- 在 Alauda Container Platform,点击右上角头像 => Profile
- 点击 Add Api Token
- 输入合适的描述和剩余有效期
- 保存显示的令牌信息(仅显示一次)
2.5 创建 Chart 仓库
通过 API 创建本地 chart 仓库:
2.6 上传 Chart
将打包好的 chart 上传到仓库:
2.7 上传相关镜像
-
拉取镜像:
podman pull nginx -
保存为 tar 包:
podman save nginx > nginx.latest.tar -
加载并推送到私有仓库:
2.8 部署应用
通过 API 创建 Application 资源:
2.9 更新应用
使用 PATCH 请求更新应用:
2.10 卸载应用
删除 Application 资源:
2.11 删除 Chart 仓库
3 通过 UI 以 Application 形式部署 Helm Charts
3.1 工作流概览
将模板添加到可管理仓库 → 上传模板 → 管理模板版本
3.2 前提条件
模板仓库由平台管理员添加。请联系平台管理员获取具有 管理 权限的 Chart 或 OCI Chart 类型模板仓库名称。
3.3 将模板添加到可管理仓库
-
进入 Catalog。
-
在左侧导航栏点击 Helm Charts。
-
点击页面右上角的 Add Template,根据以下参数选择模板仓库。
-
点击 Upload Template,上传本地模板到仓库。
-
点击 Confirm。模板上传过程可能需要几分钟,请耐心等待。
注意:当模板状态从
Uploading变为Upload Successful时,表示模板上传成功。 -
若上传失败,请根据提示排查。
注意:非法文件格式意味着上传的压缩包内文件存在问题,如内容缺失或格式错误。
3.4 删除指定版本的模板
当某版本模板不再适用时,可删除该版本。
操作步骤
-
进入 Catalog。
-
在左侧导航栏点击 Helm Charts。
-
点击 Chart 卡片查看详情。
-
点击 Manage Versions。
-
找到不再适用的模板,点击 Delete 并确认。
删除版本后,相关应用将无法更新。