1 - 自定义Charts商店


Chart目录结构

下表说明了Chart 的目录结构,可以在 Chart目录中找到: charts/%application%/%app version%/. 在为自定义应用商店创建自定义Chart 时,此信息非常有用. 用Rancher Specific表示的文件特定于Rancher charts,但对于charts自定义是可选的。

目录文件描述
app-readme.mdRancher Specific: Rancher UI中Chart标题中显示的文本。
charts/包含依赖关系的目录
Chart.yml必需的Helm信息文件。
questions.ymlRancher Specific:包含在Rancher UI中显示的表单问题的文件。问题显示在配置选项中
README.md可选:Rancher UI中显示的Helm自述文件。此文本显示在详细说明中
requirements.yml可选的YAML文件,列出Chart的依赖关系。
templates/模板目录,当与values.yml结合使用时,生成Kubernetes YAML。
values.ymlChart的默认配置值。

Rancher Chart 附加文件

在创建自己的自定义catalog之前,您应该了解基本的Rancher Chart与本机Helm chart的不同之处。Rancher chart与目录结构中的Helm chart略有不同,Rancher chart包括Helm chart没有的两个文件。

  • app-readme.md

在chart的UI标题中提供描述性文本的文件。下图显示了Rancher chart(包括app-readme.md)和本机Helm chart(不包括)之间的差异。

Rancher chartapp-readme.md(左)与Helm chart没有(右)

Rancher Chart with app-readme.md (left) vs. Helm Chart without (right)

app-readme.md

  • questions.yml

包含表单问题的文件。这些问题简化了chart的部署。没有它,您必须使用键值对配置部署,这更加困难。下图显示了Rancher chart(包括questions.yml)和本机Helm chart(不包括)之间的差异。

Rancher Chartquestions.yml(左)与Helm Chart没有(右)

Rancher Chart with questions.yml (left) vs. Helm Chart without (right)

questions.yml

问题变量参考

此引用包含可以使用的变量questions.yml.

变量类型要求描述
variablestringtrue定义values.yml文件中指定的变量名称,foo.bar用于嵌套对象。
labelstringtrue定义UI标签。
descriptionstringfalse指定变量的描述。
typestringfalse如果没有指定,默认为string(当前支持的类型是string、boolean、int、enum、password、storageclass和主机名)。
requiredboolfalse定义是否需要该变量(true
defaultstringfalse指定默认值。
groupstringfalse按输入值分组问题。
min_lengthintfalse最小字符长度。
max_lengthintfalse最大字符长度。
minintfalse最小整数长度。
maxintfalse最大整数长度。
options[]stringfalse指定变量类型为enum时的选项,例如:options: “ClusterIP” - “NodePort” - “LoadBalancer”
valid_charsstringfalse输入字符验证的正则表达式。
invalid_charsstringfalse无效输入字符验证的正则表达式。
subquestions[]subquestionfalse添加子问题数组。
show_ifstringfalse如果条件变量为true,则显示当前变量。例如: show_if: "serviceType=Nodeport"
show_subquestion_ifstringfalse如果为真或等于其中一个选项,则显示子问题。例如show_subquestion_if: "true"

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

自定义Chart示例

您可以使用Helm Charts或Rancher Charts填充您的自定义catalog,但我们建议使用Rancher Charts增强用户体验。

Note: 有关开发Charts的完整教程,请参考Helm developer reference.

  • 在您用作自定义应用商店的GitHub存储库中, 根据 chart目录结构创建chart目录结构

Rancher需要这种目录结构,但app-readme.mdquestions.yml是可选的。

  • 推荐:创建一个app-readme.md文件。

使用此文件在Rancher UI中为Charts标题创建自定义文本。您可以使用此文本告诉用户该Charts是针对您的环境自定义的,或者提供有关如何使用它的特殊说明。

示例:

  1. $ cat ./app-readme.md
  2. # Wordpress ROCKS!
  • 推荐:创建一个questions.yml文件。

此文件为用户创建表单,以便在部署自定义Charts时指定部署参数。如果没有此文件,用户必须使用键值对手动指定参数。

下面的示例创建一个表单,提示用户输入持久卷大小和存储类。

有关可在创建questions.yml文件时使用的变量列表,请参阅问题变量参考

  1. categories:
  2. - Blog
  3. - CMS
  4. questions:
  5. - variable: persistence.enabled
  6. default: "false"
  7. description: "Enable persistent volume for WordPress"
  8. type: boolean
  9. required: true
  10. label: WordPress Persistent Volume Enabled
  11. show_subquestion_if: true
  12. group: "WordPress Settings"
  13. subquestions:
  14. - variable: persistence.size
  15. default: "10Gi"
  16. description: "WordPress Persistent Volume Size"
  17. type: string
  18. label: WordPress Volume Size
  19. - variable: persistence.storageClass
  20. default: ""
  21. description: "If undefined or null, uses the default StorageClass. Default to null"
  22. type: storageclass
  23. label: Default StorageClass for WordPress