Objetos Integrados
El motor de plantillas pasa los objetos a la plantilla. Su código también puede
pasar objetos (veremos ejemplos al usar las sentencias with y range).
Incluso hay algunas formas de crear nuevos objetos dentro de sus plantillas,
como con la función tuple que veremos más adelante.
Los objetos pueden ser simples y contener un único valor. O pueden contener
otros objetos o funciones. Por ejemplo, el objeto Release contiene varios
objetos (como Release.Name) y el objeto Files tiene algunas funciones.
En la sección anterior, usamos {{ .Release.Name }} para insertar el nombre de
un release en una plantilla. Release es uno de los objetos de nivel superior
a los que puede acceder en sus plantillas.
Release: Este objeto describe el release en sí. Tiene varios objetos dentro:Release.Name: El nombre del releaseRelease.Namespace: El namespace donde se desplegará (si el manifiesto no lo sobrescribe)Release.IsUpgrade: Se establece entruesi la operación actual es una actualización o rollback.Release.IsInstall: Se establece entruesi la operación actual es una instalación.Release.Revision: El número de revisión para este release. En la instalación, es 1, y se incrementa con cada actualización y rollback.Release.Service: El servicio que está renderizando la plantilla actual. En Helm, siempre esHelm.
Values: Valores pasados a la plantilla desde el archivovalues.yamly desde archivos proporcionados por el usuario. Por defecto,Valuesestá vacío.Chart: El contenido del archivoChart.yaml. Cualquier dato enChart.yamlserá accesible aquí. Por ejemplo,{{ .Chart.Name }}-{{ .Chart.Version }}imprimirámychart-0.1.0.- Los campos disponibles están listados en la Guía de Charts
Subcharts: Proporciona acceso al scope (.Values, .Charts, .Releases, etc.) de los subcharts desde el chart padre. Por ejemplo,.Subcharts.mySubChart.myValuepara acceder amyValueen el chartmySubChart.Files: Proporciona acceso a todos los archivos no especiales en un chart. Aunque no puede usarlo para acceder a plantillas, puede usarlo para acceder a otros archivos en el chart. Consulte la sección Acceso a Archivos para más información.Files.Getes una función para obtener un archivo por nombre (.Files.Get config.ini)Files.GetByteses una función para obtener el contenido de un archivo como un array de bytes en lugar de una cadena. Esto es útil para cosas como imágenes.Files.Globes una función que devuelve una lista de archivos cuyos nombres coinciden con el patrón glob de shell dado.Files.Lineses una función que lee un archivo línea por línea. Esto es útil para iterar sobre cada línea de un archivo.Files.AsSecretses una función que devuelve los contenidos de los archivos como cadenas codificadas en Base 64.Files.AsConfiges una función que devuelve los contenidos de los archivos como un mapa YAML.
Capabilities: Proporciona información sobre las capacidades que soporta el clúster de Kubernetes.Capabilities.APIVersionses un conjunto de versiones.Capabilities.APIVersions.Has $versionindica si una versión (por ejemplo,batch/v1) o recurso (por ejemplo,apps/v1/Deployment) está disponible en el clúster.Capabilities.KubeVersionyCapabilities.KubeVersion.Versiones la versión de Kubernetes.Capabilities.KubeVersion.Majores la versión mayor de Kubernetes.Capabilities.KubeVersion.Minores la versión menor de Kubernetes.Capabilities.HelmVersiones el objeto que contiene los detalles de la versión de Helm, es la misma salida dehelm version.Capabilities.HelmVersion.Versiones la versión actual de Helm en formato semver.Capabilities.HelmVersion.GitCommites el sha1 de git de Helm.Capabilities.HelmVersion.GitTreeStatees el estado del árbol git de Helm.Capabilities.HelmVersion.GoVersiones la versión del compilador Go utilizado.
Template: Contiene información sobre la plantilla actual que se está ejecutandoTemplate.Name: Una ruta de archivo con namespace a la plantilla actual (por ejemplo,mychart/templates/mytemplate.yaml)Template.BasePath: La ruta con namespace al directorio de plantillas del chart actual (por ejemplo,mychart/templates).
Los valores integrados siempre comienzan con una letra mayúscula. Esto sigue la convención de nomenclatura de Go. Cuando cree sus propios nombres, puede usar la convención que prefiera su equipo. Algunos equipos, como muchos cuyos charts puede ver en Artifact Hub, eligen usar solo letras minúsculas iniciales para distinguir los nombres locales de los integrados. En esta guía, seguimos esa convención.