本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

创建应用程序

有关开发图表的完整指南,请参阅官方 Helm 文档中的 图表模板开发者指南

图表类型

Rancher 支持两种不同类型的图表:Helm 图表和 Rancher 图表。

Helm 图表

原生 Helm 图表包括一个应用程序以及运行该应用程序所需的其他软件。在部署原生 Helm 图表时,您可以在 YAML 编辑器中提供图表的参数值。

Rancher 图表

Rancher 图表是原生 Helm 图表,包含两个增强用户体验的文件:app-readme.mdquestions.yaml。在 Rancher 图表的附加文件 中了解更多信息。

Rancher 图表添加了简化的图表描述和配置表单,使应用程序部署变得简单。Rancher 用户无需浏览整个 Helm 变量列表即可了解如何启动应用程序。

图表目录结构

您可以在标准的基于 HTTP 的 Helm 储存库中提供 Helm 图表。有关更多信息,请参阅官方 Helm 文档中的 图表储存库指南

或者,您可以在 Git 储存库中组织图表,并直接将其添加到 APP 市场。

下表演示了 Git 储存库的目录结构。charts 目录是储存库基础下的顶级目录。将储存库添加到 Rancher 将暴露其中包含的所有图表。questions.yamlREADME.mdrequirements.yml 文件是特定于 Rancher 图表的,但对于图表自定义是可选的。

<Repository-Base>/
 │
 ├── charts/
 │   ├── <Application Name>/      # This directory name will be surfaced in the Rancher UI as the chart name
 │   │   ├── <App Version>/      # Each directory at this level provides different app versions that will be selectable within the chart in the Rancher UI
 │   │   │   ├── Chart.yaml      # Required Helm chart information file.
 │   │   │   ├── questions.yaml      # Form questions displayed within the Rancher UI. Questions display in Configuration Options.*
 │   │   │   ├── README.md         # Optional: Helm Readme file displayed within Rancher UI. This text displays in Detailed Descriptions.
 │   │   │   ├── requirements.yml  # Optional: YAML file listing dependencies for the chart.
 │   │   │   ├── values.yml        # Default configuration values for the chart.
 │   │   │   ├── templates/        # Directory containing templates that, when combined with values.yml, generates Kubernetes YAML.

Rancher 图表的附加文件

在创建自定义目录之前,您应该对 Rancher chart 与原生 Helm chart 的区别有基本了解。Rancher 图表在目录结构上与 Helm 图表略有不同。Rancher 图表包含两个 Helm 图表所没有的文件。

  • app-readme.md

    一个提供图表 UI 头部描述性文本的文件。

  • questions.yml

    一个包含表单问题的文件。这些表单问题简化了图表的部署。没有它,您必须使用 values YAML 配置来配置部署,这更为复杂。以下图像显示了 Rancher 图表(包含 questions.yml)与原生 Helm 图表(不包含 questions.yml)之间的区别。

questions.yml
Figure 1. 包含 questions.yml 的 Rancher 图表
values.yaml
Figure 2. 不包含 questions.yml 的 Helm 图表

Chart.yaml

注解

Rancher 支持您可以添加到 Chart.yaml 文件的附加注释。这些注释允许您定义应用程序依赖关系或配置其他 UI 默认值:

注释 说明 示例

catalog.cattle.io/auto-install

如果设置,将在安装此图表之前安装指定版本的图表。

other-chart-name=1.0.0

catalog.cattle.io/display-name

应在 APP 市场中显示的显示名称,而不是图表名称。

图表的显示名称

catalog.cattle.io/namespace

一个用于部署图表的固定名称空间。如果设置,用户无法更改此项。

fixed-namespace

catalog.cattle.io/release-name

Helm 安装的固定发布名称。如果设置,用户无法更改此项。

fixed-release-name

catalog.cattle.io/requests-cpu

集群中未预留的处理器总量。如果可用的处理器较少,将显示警告。

2000m

catalog.cattle.io/requests-memory

集群中未预留的总内存量。如果可用的内存较少,将显示警告

2Gi

catalog.cattle.io/os

限制此图表可以安装的操作系统。可能的值:linuxwindows。默认:无限制

linux

关键字

通过 keywords 选项在 Chart.yaml 文件中,可以提供一个分类列表,以便在 Rancher UI 中对您的应用程序进行排序,例如 infrastructuremonitoring 等。

questions.yml

questions.yml 内,大部分内容将围绕向最终用户提出的问题,但此文件中可以设置一些额外字段。

最小/最大 Rancher 版本

对于每个图表,您可以添加最小和/或最大 Rancher 版本,这决定了该图表是否可以从 Rancher 部署。

尽管 Rancher 发布版本以 v 为前缀,但在使用此选项时,发布版本没有 前缀

rancher_min_version: 2.3.0
rancher_max_version: 2.3.99

问题变量引用

此引用包含您可以在 questions.yml 中使用的变量,嵌套在 questions: 下。

变量 类型 必需 说明

变量

字符串

true

定义在 values.yml 文件中指定的变量名称,使用 foo.bar 表示嵌套对象。

label

字符串

true

定义 UI 标签。

描述

字符串

false

指定变量的描述。

type

字符串

false

如果未指定,则默认为 string(当前支持的类型为字符串、多行、布尔数据类型、整数、枚举、密码、存储类、主机名、PVC、秘密和云凭证)。

必需

布尔

false

定义变量是否为必需(true | false)

default

字符串

false

指定默认值。仅在 values.yml 文件中没有对应值时使用。

资源组

字符串

false

按输入值分组问题。

min_length

整数

false

最小字符长度。

最大长度

整数

false

最大字符长度。

min

整数

false

最小整数值。

max

整数

false

最大整数值。

options

[]string

false

当变量类型为 enum 时指定选项,例如:
- "ClusterIP"
- "NodePort"
- "LoadBalancer"

valid_chars

字符串

false

输入字符验证的正则表达式。

invalid_chars

字符串

false

无效输入字符验证的正则表达式。

子问题

[]子问题

false

添加一个子问题数组。

show_if

字符串

false

如果条件变量为真,则显示当前变量。例如 show_if: "serviceType=Nodeport"

show_subquestion_if

字符串

false

如果为真或等于选项之一,则显示子问题。例如 show_subquestion_if: "true"

subquestions[] 不能包含 subquestionsshow_subquestions_if 键,但上表中的所有其他键都是支持的。