Helm 图表和 APP

在本节中,您将学习如何在 Rancher 中管理 Helm 图表储存库和 APP。

Helm 图表在 Rancher 中的工作原理

Rancher 中的 Helm 图表储存库通过 APP 进行管理。

Rancher 使用类似目录的系统从储存库中导入图表包,然后使用这些图表来部署自定义 Kubernetes 应用程序或 Rancher 的工具,如监控或 Istio。Rancher 工具作为预加载的储存库提供,作为独立的 Helm 图表进行部署。任何额外的储存库仅添加到当前集群中。

目录、APP 和 Rancher 用户界面

在 xref:[Rancher v2.4 及更早版本] 中,准备部署的应用程序储存库被称为 "目录"。这些储存库通过用户界面的 目录 部分进行管理。

Rancher v2.5 用新的 APP 与市场 功能替代了以前的目录系统。

自 Rancher v2.6.5 起,用户界面中的 APP 与市场 功能被称为 APP

版本控制方案

Rancher 功能图表的版本控制方案主要关注图表的主版本以及(如适用)上游图表的 +up 注释。

*主要版本:*功能图表的主要版本与 Rancher 的特定次要版本相关联。当您升级到新的 Rancher 次要版本时,您应确保所有功能图表也升级到该图表的正确发布线。

*基于上游的图表:*升级时,请确保上游图表版本与您的 Rancher 版本兼容。图表的 +up 注释指示了 Rancher 图表所跟踪的上游版本。例如,100.x.x+up16.6.0 用于监控,跟踪上游的 kube-prometheus-stack 16.6.0,并附带一些额外的 Rancher 补丁。

在升级 Rancher 版本时,请勿降级您正在使用的图表版本。例如,如果您使用的监控版本晚于Rancher v2.5中的`16.6.0`,则不应升级到`100.x.x+up16.6.0`。相反,您应该升级到下一个版本中的适当版本。

预发布版本

预发布遵循由 规范定义的 语义版本控制2.0.0。例如,版本为`0.1.3-dev.12ab4f`的Helm图表被视为预发布。预发布版本默认不显示,必须进行配置以显示。

要显示预发布版本:

  1. 单击右上角的用户头像。

  2. 单击*首选项*。

  3. Helm 图表 下,选择 包括预发布版本

访问图表

*图表*页面包含所有Rancher、合作伙伴和自定义图表。您可以通过选择最左侧的下拉菜单来过滤图表:

  • Rancher工具,如日志记录或监控,列在*Rancher*标签下。

  • 合作伙伴图表在*合作伙伴*标签下。

  • 自定义图表按其各自的储存库名称列出。

这三种类型的图表以相同的方式部署和管理。

由集群管理器管理的应用程序(旧版 Rancher UI 中的全局视图)继续仅由集群管理器管理,而在新 UI 中使用 APP 管理的应用程序必须仅由 APP 管理。

要访问*图表*页面:

  1. 单击 ☰ > 集群管理

  2. 找到您想要访问其图表的集群名称。点击集群行末尾的*探索*。

  3. 集群仪表板 的左侧导航菜单中,点击 APP  图表

管理储存库

储存库 页面列出了您的 Helm 储存库。这些包括具有 index.yaml 的传统 Helm 端点,以及被克隆并指向特定分支的 Git 储存库。要使用自定义图表,请在此处添加您的储存库。添加储存库后,您可以在*图表*页面中访问自定义图表,按储存库名称列出。

要访问*储存库*页面:

  1. 单击 ☰ > 集群管理

  2. 找到您想要访问其储存库的集群名称。点击集群行末尾的*探索*。

  3. 集群仪表板 的左侧导航菜单中,点击 APP  储存库

添加自定义Git储存库

要添加包含您的Helm图表或集群模板定义的自定义Git储存库:

  1. 单击 ☰ > 集群管理

  2. 找到您想要访问其储存库的集群名称。点击集群行末尾的*探索*。

  3. 在*集群仪表板*的左侧导航菜单中,点击应用程序  储存库

  4. 单击*创建*。

  5. 选择目标,包含 Helm 图表的 Git 储存库…​

  6. 您必须输入名称和 Git 储存库 URL。其他字段,包括描述,都是可选的。如果您不想从储存库所有者设置为默认的任何分支拉取,请输入替代分支名称。通常,默认分支的名称为`main`或`master`。

  7. 点击 创建 来添加储存库。

在您将图表储存库添加到 Rancher 后,它会立即可用。

添加自定义 Helm 图表储存库

您可以添加自己的 Helm 图表储存库,以便为 Rancher 提供图表包。您可以使用任何 HTTP 服务器,只要该服务器能够响应 GET 请求并提供 YAML 文件和 Tar 包。

有关 Helm 图表储存库的更多信息,请参见 官方 Helm 文档

要将自定义 Helm 图表储存库添加到 Rancher:

  1. 单击 ☰ > 集群管理

  2. 找到您想要访问其储存库的集群名称。点击集群行末尾的*探索*。

  3. 集群仪表板 的左侧导航菜单中,点击 APP  储存库

  4. 单击*创建*。

  5. 选择目标,http(s) URL 到由 Helm 生成的索引

  6. 输入储存库名称和储存库的索引 URL 地址。

  7. 点击 创建 来添加储存库。

添加私有 Git/Helm 图表储存库

您可以使用 SSH 密钥凭据或 HTTP 基本身份验证密钥(如用户名和密码)添加私有 Git 或 Helm 图表储存库。

向储存库添加私有 CA

要向 Helm 图表储存库添加私有 CA,您必须将 CA 证书的 base64 编码副本(DER 格式)添加到该储存库的 spec.caBundle field 中,例如 openssl x509 -outform der -in ca.pem | base64 -w0。对于基于 Git 和基于 HTTP 的储存库,说明是相同的:

  1. 单击*☰。在左侧导航菜单的 *探索集群 下,选择一个集群。

  2. 集群仪表板 的左侧导航菜单中,点击 APP  储存库

  3. 找到与您要添加私有 CA 的基于 Git 或基于 HTTP 的储存库相关的行,然后点击 ⋮ > 编辑 YAML

  4. 设置 caBundle 值,如以下示例所示:

    [...]
    spec:
      caBundle:
    MIIFXzCCA0egAwIBAgIUWNy8WrvSkgNzV0zdWRP79j9cVcEwDQYJKoZIhvcNAQELBQAwPzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRQwEgYDVQQKDAtNeU9yZywgSW5jLjENMAsGA1UEAwwEcm9vdDAeFw0yMTEyMTQwODMyMTdaFw0yNDEwMDMwODMyMT
    ...
    nDxZ/tNXt/WPJr/PgEB3hQdInDWYMg7vGO0Oz00G5kWg0sJ0ZTSoA10ZwdjIdGEeKlj1NlPyAqpQ+uDnmx6DW+zqfYtLnc/g6GuLLVPamraqN+gyU8CHwAWPNjZonFN9Vpg0PIk1I2zuOc4EHifoTAXSpnjfzfyAxCaZsnTptimlPFJJqAMj+FfDArGmr4=
    [...]
带有身份验证的 Helm 图表储存库

Repo.Spec 包含一个 disableSameOriginCheck 值。此值允许您绕过同源检查,将储存库身份验证信息作为基本身份验证头与所有 API 调用一起发送。这并不推荐,但可以作为非标准 Helm 图表储存库的临时解决方案,例如那些重定向到不同源 URL 的储存库。

要对现有的 Helm 图表储存库使用此功能,请按照之前的步骤编辑 YAML。在 YAML 文件的 spec 部分,添加 disableSameOriginCheck 并将其设置为 true

[...]
spec:
  disableSameOriginCheck: true
[...]

添加自定义 OCI 图表储存库

Helm v3 引入了将 Helm 图表以 开放容器倡议 (OCI) 工件的形式存储在容器注册表中的功能。使用 Rancher v2.9.0,您可以添加 基于 OCI 的 Helm 图表储存库,与基于 HTTP 和 Git 的储存库并存。这意味着您可以部署作为 OCI 工件存储的 APP。有关更多信息,请参见 使用 OCI Helm 图表储存库

Helm 兼容性

仅支持 Helm 3 兼容的图表。

刷新图表储存库

刷新 按钮可用于同步 储存库 页面上所选 Helm 图表储存库的更改。

要刷新图表储存库:

  1. 单击 ☰ > 集群管理

  2. 找到您想要访问其储存库的集群名称。点击集群行末尾的*探索*。

  3. 在*集群仪表板*的左侧导航菜单中,点击应用  储存库

  4. 使用 状态 字段旁边的切换按钮选择所有储存库,或切换指定的图表储存库以同步更改。

  5. 单击 刷新

  6. 每个图表储存库行末尾的 也包括一个 刷新 选项,可以单击以刷新相应的储存库。

非隔离 Rancher 安装在刷新时将立即反映任何图表储存库的更改,您将看到更新的储存库的 状态 字段从 In Progress 移动到 Active,一旦操作完成。

在 Rancher 配置为使用打包的 Helm 系统图表副本的隔离安装中 (useBundledSystemChart=true),将仅引用捆绑的 系统图表 储存库,无法刷新或同步。

刷新间隔

Rancher v2.10.0 在 ClusterRepo CRD 中添加了 refreshInterval 字段。默认值为 3600 秒,这意味着 Rancher 每 3600 秒同步一次每个 Helm 储存库。

要修改图表储存库的刷新间隔:

  1. 单击 ☰ > 集群管理

  2. 找到您想要访问其储存库的集群名称。点击集群行末尾的探索

  3. 在左侧导航菜单的 集群仪表板 中,点击 应用 > 储存库

  4. 找到您想要修改的储存库,然后点击 ⋮ > 编辑 YAML

  5. refreshInterval 字段在 Spec 下设置为所需的秒数值。

  6. 单击 保存

启用/禁用 Helm 图表储存库

Rancher v2.10.0 增加了启用和禁用 Helm 储存库的功能。Helm 储存库默认是启用的。

要禁用图表储存库:

  1. 单击 ☰ > 集群管理

  2. 找到您想要访问其储存库的集群名称。点击集群行末尾的探索

  3. 在左侧导航菜单的 集群仪表板 中,点击 应用 > 储存库

  4. 找到您想要禁用的储存库,然后点击 ⋮ > 编辑 YAML

  5. Enabled 字段在 Spec 下设置为 false

  6. 单击 保存

  7. 当您禁用一个储存库时,更新将被禁用,新的更改将不会应用到集群储存库(clusterRepo)。

要启用图表储存库:

  1. 单击 ☰ > 集群管理

  2. 找到您想要访问其储存库的集群名称。点击集群行末尾的探索

  3. 在左侧导航菜单的 集群仪表板 中,点击 应用 > 储存库

  4. 找到您想要禁用的储存库,然后点击 ⋮ > 编辑 YAML

  5. Enabled 字段在 Spec 下设置为 true

  6. 单击 保存

部署和升级图表

要安装和部署一个图表:

  1. 单击 ☰ > 集群管理

  2. 找到您想要访问其储存库的集群名称。点击集群行末尾的*探索*。

  3. 在*集群仪表板*的左侧导航菜单中,点击应用  图表

  4. 选择一个图表,然后点击 安装

Rancher 和合作伙伴图表可能通过自定义页面或 questions.yaml 文件提供额外的配置。然而,所有图表安装都可以修改 values.yaml 和其他基本设置。在您点击 安装 后,将部署一个 Helm 操作作业,并显示该作业的控制台。

要查看所有最近的更改,请在左侧导航菜单中点击 应用  最近操作。在这里,您可以查看调用、条件、事件和日志。

安装图表后,您可以通过点击 应用  已安装应用 在左侧导航菜单中查看它。您可以升级或删除安装,并查看进一步的详细信息。升级使用与您在初始安装期间看到的相同的表单和值。

大多数 Rancher 工具在 应用 部分下方的工具栏中有额外页面,以帮助管理和使用功能。这些页面包括仪表板的链接、轻松添加自定义资源的表单和其他信息。

如果您使用 在升级前自定义 Helm 选项 升级图表,并且您的图表包含不可变字段,使用 --force 选项可能会导致错误。这是因为 Kubernetes 中的一些对象在创建后无法更改。要防止此错误:

  • 使用默认升级选项(即不要使用 --force)。

  • 卸载现有图表并安装升级后的图表。

  • 在执行强制升级之前,从集群中删除具有不可变字段的资源。

遗留应用

应用  已安装应用 页面上,遗留应用的升级按钮不可用。

如果您想升级已安装的遗留应用,必须启用 遗留功能标志。如果您在升级 Rancher 之前已经运行了遗留应用,则此标志会自动启用。

  1. 如果尚未启用,请启用 遗留功能标志

  2. 单击 ☰ > 集群管理

  3. 找到您想要访问其应用的集群名称。点击集群行末尾的*探索*。

  4. 点击 遗留  项目  应用

如果您在 遗留  项目 下未看到 应用 列出,请点击顶部导航中的项目/命名空间搜索栏,并从下拉菜单中选择相关项目。

要升级遗留的多集群应用:

  1. 单击*☰*。

  2. 遗留应用 下,点击 多集群应用

图表特定信息

sriov 图表弃用和迁移

来自 Rancher Charts 储存库的 sriov(SR-IOV 网络操作员)图表已被弃用,并将在 Rancher v2.10 中移除。请迁移到来自 SUSE Edge 储存库的 sriov-network-operator 图表( https://github.com/suse-edge/charts)。

要迁移,请按照以下步骤操作:

  1. 通过按照 添加自定义 Git 储存库 中的步骤,将 SUSE Edge 储存库添加到您的集群。

  2. Git Repo URL 字段中,输入 https://github.com/suse-edge/charts

  3. 单击*创建*。

  4. 在*集群仪表板*的左侧导航菜单中,点击应用  图表

  5. 找到 sriov-network-operator 图表并点击它。

  6. 单击 安装

  7. 名称 字段中,输入您为现有 sriov 图表安装使用的相同名称。

  8. 单击*下一步*。

  9. 单击 安装

结果:*Rancher 会重定向到 *已安装应用 页面,您的现有安装进入 更新中 状态。当它进入 已部署 状态时,迁移完成。

局限性

  • 仪表板应用或 Rancher 功能图表无法使用 Rancher CLI 安装。

  • 在确定 可升级 列在 应用  已安装应用 页面上显示的最新版本时,Rancher 不仅考虑来自安装时所用储存库的 Helm 图表版本,还考虑集群中所有储存库的 Helm 图表版本。

    例如,假设您从储存库 A 安装了 cert-manager v1.13.0,而 v1.14.0 现在是可用的最新版本。在这种情况下,您期望 可升级 显示 v1.14.0。然而,如果集群还可以访问储存库 B,其中有 cert-manager 的 v1.15.0 可用,那么 可升级 将显示 v1.15.0,即使原始安装使用的是储存库 A。