內建物件

物件會從範本引擎傳遞到範本中。您的程式碼可以傳遞物件(我們會在查看 withrange 語句時看到範例)。甚至有幾種方法可以在範本中建立新物件,例如我們稍後會看到的 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 是空的。
  • ChartChart.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.KubeVersionCapabilities.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 上看到的許多圖表)選擇僅使用初始小寫字母,以便區分本地名稱和內建名稱。在本指南中,我們遵循該慣例。