內建物件
物件會從範本引擎傳遞到範本中。您的程式碼可以傳遞物件(我們會在查看 with
和 range
語句時看到範例)。甚至有幾種方法可以在範本中建立新物件,例如我們稍後會看到的 tuple
函式。
物件可以很簡單,只有一個值。或者它們可以包含其他物件或函式。例如,Release
物件包含多個物件(例如 Release.Name
),而 Files
物件則有一些函式。
在上一節中,我們使用 {{ .Release.Name }}
將發佈的名稱插入範本中。Release
是您可以在範本中存取的頂層物件之一。
Release
:此物件描述發佈本身。它裡面有多個物件Release.Name
:發佈名稱Release.Namespace
:要發佈到的命名空間(如果資訊清單未覆寫)Release.IsUpgrade
:如果目前操作是升級或回滾,則設定為true
。Release.IsInstall
:如果目前操作是安裝,則設定為true
。Release.Revision
:此發佈的修訂號碼。安裝時,這是 1,並且每次升級和回滾都會遞增。Release.Service
:呈現目前範本的服務。在 Helm 上,這始終是Helm
。
Values
:從values.yaml
檔案和使用者提供的檔案傳遞到範本中的值。根據預設,Values
是空的。Chart
:Chart.yaml
檔案的內容。Chart.yaml
中的任何資料都可以在這裡存取。例如,{{ .Chart.Name }}-{{ .Chart.Version }}
將會印出mychart-0.1.0
。- 可用欄位列在 圖表指南 中
Subcharts
:這提供了對父系子圖表範圍(.Values、.Charts、.Releases 等)的存取權。例如,.Subcharts.mySubChart.myValue
可用於存取mySubChart
圖表中的myValue
。Files
:這提供了對圖表中所有非特殊檔案的存取權。雖然您無法使用它來存取範本,但您可以使用它來存取圖表中的其他檔案。如需詳細資訊,請參閱存取檔案一節。Files.Get
是一個用於按名稱取得檔案的函式(.Files.Get config.ini
)Files.GetBytes
是一個用於將檔案內容作為位元組陣列而不是字串取得的函式。這對於圖像之類的東西很有用。Files.Glob
是一個函式,會傳回名稱與給定的 shell glob 模式相符的檔案清單。Files.Lines
是一個逐行讀取檔案的函式。這對於逐一查看檔案中的每一行很有用。Files.AsSecrets
是一個函式,會將檔案主體作為 Base 64 編碼的字串傳回。Files.AsConfig
是一個函式,會將檔案主體作為 YAML 對應傳回。
Capabilities
:這提供了有關 Kubernetes 叢集支援哪些功能的資訊。Capabilities.APIVersions
是一組版本。Capabilities.APIVersions.Has $version
表示叢集上是否可以使用某個版本(例如batch/v1
)或資源(例如apps/v1/Deployment
)。Capabilities.KubeVersion
和Capabilities.KubeVersion.Version
是 Kubernetes 版本。Capabilities.KubeVersion.Major
是 Kubernetes 主要版本。Capabilities.KubeVersion.Minor
是 Kubernetes 次要版本。Capabilities.HelmVersion
是包含 Helm 版本詳細資訊的物件,其輸出與helm version
相同。Capabilities.HelmVersion.Version
是目前的 Helm 版本,採用語意化版本格式。Capabilities.HelmVersion.GitCommit
是 Helm git sha1。Capabilities.HelmVersion.GitTreeState
是 Helm git 樹的狀態。Capabilities.HelmVersion.GoVersion
是所使用的 Go 編譯器版本。
Template
:包含有關正在執行的目前範本的資訊Template.Name
:目前範本的命名空間檔案路徑(例如mychart/templates/mytemplate.yaml
)Template.BasePath
:目前圖表範本目錄的命名空間路徑(例如mychart/templates
)。
內建值一律以大寫字母開頭。這與 Go 的命名慣例一致。建立自己的名稱時,您可以自由使用適合您團隊的慣例。有些團隊(例如您可能在 Artifact Hub 上看到的許多圖表)選擇僅使用初始小寫字母,以便區分本地名稱和內建名稱。在本指南中,我們遵循該慣例。