跳至主要内容

建立應用程式

提示

有關開發圖表的完整演練,請參閱官方 Helm 文件中的 Chart Template Developer's Guide。

圖表類型​

Rancher 支援兩種不同類型的圖表:Helm 圖表和 Rancher 圖表。

Helm 圖表​

原生 Helm 圖表包含應用程式以及執行它所需的其他軟體。部署原生 Helm 圖表時,您可以在 YAML 編輯器中提供圖表的參數值。

Rancher 圖表​

Rancher 圖表是原生 Helm 圖表,包含兩個增強使用者體驗的檔案:app-readme.md 和 questions.yaml。在 Rancher 圖表的額外檔案中了解更多。

Rancher 圖表新增了簡化的圖表描述和設定表單,使應用程式部署變得容易。Rancher 使用者不需要閱讀整個 Helm 變數清單即可了解如何啟動應用程式。

圖表目錄結構​

您可以在標準的、基於 HTTP 的 Helm 儲存庫中提供 Helm 圖表。有關更多資訊,請參閱官方 Helm 文件中的 Chart Repository Guide。

或者,您可以在 Git 儲存庫中組織您的圖表,並直接將其新增到 App Marketplace。

下表展示了 Git 儲存庫的目錄結構。charts 目錄是儲存庫基底下的頂層目錄。將儲存庫新增到 Rancher 將公開其中包含的所有圖表。questions.yaml、README.md 和 requirements.yml 檔案是 Rancher 圖表特有的,但對於圖表自訂是可選的。

<Repository-Base>/
│
├── charts/
│ ├── <Application Name>/ # 此目錄名稱將在 Rancher UI 中顯示為圖表名稱
│ │ ├── <App Version>/ # 此層級的每個目錄提供不同的應用程式版本,可在 Rancher UI 的圖表中選擇
│ │ │ ├── Chart.yaml # 必需的 Helm 圖表資訊檔案。
│ │ │ ├── questions.yaml # 在 Rancher UI 中顯示的表單問題。問題顯示在設定選項中。*
│ │ │ ├── README.md # 可選:在 Rancher UI 中顯示的 Helm Readme 檔案。此文字顯示在詳細描述中。
│ │ │ ├── requirements.yml # 可選:列出圖表依賴項的 YAML 檔案。
│ │ │ ├── values.yml # 圖表的預設設定值。
│ │ │ ├── templates/ # 包含範本的目錄,與 values.yml 結合時生成 Kubernetes YAML。

Rancher 圖表的額外檔案​

在建立自己的自訂目錄之前,您應該對 Rancher 圖表與原生 Helm 圖表的區別有基本了解。Rancher 圖表的目錄結構與 Helm 圖表略有不同。Rancher 圖表包含兩個 Helm 圖表沒有的檔案。

  • app-readme.md

    在圖表的 UI 標頭中提供描述性文字的檔案。

  • questions.yml

    包含表單問題的檔案。這些表單問題簡化了圖表的部署。沒有它,您必須使用 values YAML 設定來設定部署,這更困難。以下圖像顯示了 Rancher 圖表(包含 questions.yml)和原生 Helm 圖表(不包含)之間的區別。

    包含 questions.yml 的 Rancher 圖表(上)與不包含的 Helm 圖表(下)

    questions.yml values.yaml

Chart.yaml 註解​

Rancher 支援您可以新增到 Chart.yaml 檔案的額外註解。這些註解允許您定義應用程式依賴項或設定額外的 UI 預設值:

註解描述範例
catalog.cattle.io/auto-install如果設定,將在安裝此圖表之前以指定版本安裝指定的圖表other-chart-name=1.0.0
catalog.cattle.io/display-name應該在 App Marketplace 中顯示的顯示名稱,而不是圖表名稱Display Name of Chart
catalog.cattle.io/namespace圖表應部署到的固定命名空間。如果設定,使用者無法更改fixed-namespace
catalog.cattle.io/release-nameHelm 安裝的固定發行名稱。如果設定,使用者無法更改fixed-release-name
catalog.cattle.io/requests-cpu叢集中應該未保留的 CPU 總量。如果可用 CPU 較少,將顯示警告2000m
catalog.cattle.io/requests-memory叢集中應該未保留的記憶體總量。如果可用記憶體較少,將顯示警告2Gi
catalog.cattle.io/os限制可以安裝此圖表的作業系統。可能的值:linux、windows。預設:無限制linux

questions.yml​

在 questions.yml 內,大部分內容將圍繞詢問終端使用者的問題,但還有一些額外的欄位可以在此檔案中設定。

最小/最大 Rancher 版本​

對於每個圖表,您可以新增最小和/或最大 Rancher 版本,這決定是否可以從 Rancher 部署此圖表。

備註

儘管 Rancher 發行版本以 v 為前綴,但使用此選項時發行版本沒有前綴。

rancher_min_version: 2.3.0
rancher_max_version: 2.3.99

問題變數參考​

此參考包含您可以在 questions.yml 中 questions: 下巢狀使用的變數。

變數類型必需描述
variablestringtrue定義在 values.yml 檔案中指定的變數名稱,對於巢狀物件使用 foo.bar。
labelstringtrue定義 UI 標籤。
descriptionstringfalse指定變數的描述。
typestringfalse如果未指定,預設為 string(目前支援的類型有 string、multiline、boolean、int、enum、password、storageclass、hostname、pvc、secret 和 cloudcredential)。
requiredboolfalse定義變數是否為必需(true | false)
defaultstringfalse指定預設值。僅在 values.yml 檔案中沒有相應值時使用。
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如果為 true 或等於其中一個選項,則顯示子問題。例如 show_subquestion_if: "true"
備註

subquestions[] 不能包含 subquestions 或 show_subquestions_if 鍵,但支援上表中的所有其他鍵。