Integrierte Objekte
Objekte werden von der Template-Engine an ein Template übergeben. Ihr Code kann
Objekte weitergeben (wir werden Beispiele sehen, wenn wir uns die with- und
range-Anweisungen ansehen). Es gibt sogar einige Möglichkeiten, neue Objekte
innerhalb Ihrer Templates zu erstellen, wie z.B. mit der tuple-Funktion, die
wir später sehen werden.
Objekte können einfach sein und nur einen Wert haben. Oder sie können andere
Objekte oder Funktionen enthalten. Zum Beispiel enthält das Release-Objekt
mehrere Objekte (wie Release.Name) und das Files-Objekt verfügt über einige
Funktionen.
Im vorherigen Abschnitt haben wir {{ .Release.Name }} verwendet, um den Namen
eines Release in ein Template einzufügen. Release ist eines der Top-Level-
Objekte, auf die Sie in Ihren Templates zugreifen können.
Release: Dieses Objekt beschreibt das Release selbst. Es enthält mehrere Objekte:Release.Name: Der Release-NameRelease.Namespace: Der Namespace, in den bereitgestellt wird (sofern das Manifest dies nicht überschreibt)Release.IsUpgrade: Wird auftruegesetzt, wenn die aktuelle Operation ein Upgrade oder Rollback ist.Release.IsInstall: Wird auftruegesetzt, wenn die aktuelle Operation eine Installation ist.Release.Revision: Die Revisionsnummer für dieses Release. Bei der Installation ist dies 1, und sie wird mit jedem Upgrade und Rollback erhöht.Release.Service: Der Dienst, der das aktuelle Template rendert. In Helm ist dies immerHelm.
Values: Werte, die aus dervalues.yaml-Datei und aus vom Benutzer bereitgestellten Dateien an das Template übergeben werden. Standardmäßig istValuesleer.Chart: Der Inhalt derChart.yaml-Datei. Alle Daten inChart.yamlsind hier zugänglich. Zum Beispiel gibt{{ .Chart.Name }}-{{ .Chart.Version }}mychart-0.1.0aus.- Die verfügbaren Felder sind in der Charts-Anleitung aufgelistet
Subcharts: Dies ermöglicht den Zugriff auf den Scope (.Values, .Charts, .Releases usw.) von Subcharts für das übergeordnete Chart. Zum Beispiel greift.Subcharts.mySubChart.myValueauf denmyValueimmySubChart-Chart zu.Files: Dies ermöglicht den Zugriff auf alle nicht-speziellen Dateien in einem Chart. Sie können damit zwar nicht auf Templates zugreifen, aber auf andere Dateien im Chart. Weitere Informationen finden Sie im Abschnitt Zugriff auf Dateien.Files.Getist eine Funktion zum Abrufen einer Datei nach Namen (.Files.Get config.ini)Files.GetBytesist eine Funktion zum Abrufen des Inhalts einer Datei als Byte-Array anstatt als String. Dies ist nützlich für Dinge wie Bilder.Files.Globist eine Funktion, die eine Liste von Dateien zurückgibt, deren Namen dem angegebenen Shell-Glob-Muster entsprechen.Files.Linesist eine Funktion, die eine Datei Zeile für Zeile liest. Dies ist nützlich für die Iteration über jede Zeile in einer Datei.Files.AsSecretsist eine Funktion, die die Dateiinhalte als Base64- codierte Strings zurückgibt.Files.AsConfigist eine Funktion, die Dateiinhalte als YAML-Map zurückgibt.
Capabilities: Dies liefert Informationen darüber, welche Fähigkeiten der Kubernetes-Cluster unterstützt.Capabilities.APIVersionsist eine Sammlung von Versionen.Capabilities.APIVersions.Has $versiongibt an, ob eine Version (z.B.batch/v1) oder Ressource (z.B.apps/v1/Deployment) im Cluster verfügbar ist.Capabilities.KubeVersionundCapabilities.KubeVersion.Versionist die Kubernetes-Version.Capabilities.KubeVersion.Majorist die Kubernetes-Hauptversion.Capabilities.KubeVersion.Minorist die Kubernetes-Nebenversion.Capabilities.HelmVersionist das Objekt, das die Helm-Versionsdetails enthält; es entspricht der Ausgabe vonhelm version.Capabilities.HelmVersion.Versionist die aktuelle Helm-Version im SemVer-Format.Capabilities.HelmVersion.GitCommitist der Helm-Git-SHA1.Capabilities.HelmVersion.GitTreeStateist der Zustand des Helm-Git-Trees.Capabilities.HelmVersion.GoVersionist die Version des verwendeten Go-Compilers.
Template: Enthält Informationen über das aktuelle Template, das ausgeführt wirdTemplate.Name: Ein namespace-qualifizierter Dateipfad zum aktuellen Template (z.B.mychart/templates/mytemplate.yaml)Template.BasePath: Der namespace-qualifizierte Pfad zum Templates- Verzeichnis des aktuellen Charts (z.B.mychart/templates).
Die integrierten Werte beginnen immer mit einem Großbuchstaben. Dies entspricht der Go-Namenskonvention. Wenn Sie Ihre eigenen Namen erstellen, können Sie eine Konvention verwenden, die zu Ihrem Team passt. Einige Teams, wie viele, deren Charts Sie auf Artifact Hub finden können, verwenden nur Kleinbuchstaben am Anfang, um lokale Namen von den integrierten zu unterscheiden. In dieser Anleitung folgen wir dieser Konvention.