建立應用程式
有關開發圖表的完整演練,請參閱官方 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 圖表(下)

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-name | Helm 安裝的固定發行名稱。如果設定,使用者無法更改 | 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: 下巢狀使用的變數。
| 變數 | 類型 | 必需 | 描述 |
|---|---|---|---|
| variable | string | true | 定義在 values.yml 檔案中指定的變數名稱,對於巢狀物件使用 foo.bar。 |
| label | string | true | 定義 UI 標籤。 |
| description | string | false | 指定變數的描述。 |
| type | string | false | 如果未指定,預設為 string(目前支援的類型有 string、multiline、boolean、int、enum、password、storageclass、hostname、pvc、secret 和 cloudcredential)。 |
| required | bool | false | 定義變數是否為必需(true | false) |
| default | string | false | 指定預設值。僅在 values.yml 檔案中沒有相應值時使用。 |
| group | string | false | 按輸入值分組問題。 |
| min_length | int | false | 最小字元長度。 |
| max_length | int | false | 最大字元長度。 |
| min | int | false | 最小整數值。 |
| max | int | false | 最大整數值。 |
| options | []string | false | 當變數類型為 enum 時指定選項,例如:options:- "ClusterIP" - "NodePort" - "LoadBalancer" |
| valid_chars | string | false | 輸入字元驗證的正規表示式。 |
| invalid_chars | string | false | 無效輸入字元驗證的正規表示式。 |
| subquestions | []subquestion | false | 新增子問題陣列。 |
| show_if | string | false | 如果條件變數為 true,則顯示當前變數。例如 show_if: "serviceType=Nodeport" |
| show_subquestion_if | string | false | 如果為 true 或等於其中一個選項,則顯示子問題。例如 show_subquestion_if: "true" |
subquestions[] 不能包含 subquestions 或 show_subquestions_if 鍵,但支援上表中的所有其他鍵。