<.Chart.name>: невозможно оценить имя поля в интерфейсе типа {} - PullRequest
0 голосов
/ 20 января 2020

При развертывании диаграммы выдается следующая ошибка: <.Chart.name>: невозможно оценить имя поля в интерфейсе типа {}

Ответы [ 2 ]

1 голос
/ 20 января 2020

Это ошибка новичка, поля начинаются с верхнего регистра, хотя поле Chart.yaml начинается с нижнего регистра. То же самое с Chart.Version и всеми другими полями.

Очень странно для java разработчиков.

0 голосов
/ 20 января 2020

Согласно официальной документации руля есть термины Предопределенные значения и Встроенные объекты

Встроенные значения всегда начинайте с заглавной буквы. Это соответствует соглашению об именах Go. Когда вы создаете свои собственные имена, вы можете использовать соглашение, которое подходит вашей команде

Список обязательных заглавных букв встроенных значений

  • 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.
  • Files: это обеспечивает доступ ко всем не специальным файлам в диаграмме. Хотя вы не можете использовать его для доступа к шаблонам, вы можете использовать его для доступа к другим файлам в диаграмме. Подробнее см. Раздел Доступ к файлам .
    • Files.Get - это функция для получения файла по имени (.Files.Get config.ini)
    • Files.GetBytes - это функция для получения содержимого файла в виде массива байтов, а не как строка. Это полезно для таких вещей, как изображения.
    • Files.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.
  • Template: содержит информацию о текущем выполняемом шаблоне
    • Name: путь к файлу в пространстве имен с текущим шаблоном (например, mychart/templates/mytemplate.yaml)
    • BasePath: Путь в пространстве имен к каталогу шаблонов текущего графика (например, mychart/templates).

Маленький пример:

apiVersion: v1
kind: Service
metadata:
name: {{ template "fullname" . }}
labels:
    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.externalPort }}
    targetPort: {{ .Values.service.internalPort }}
    protocol: TCP
    name: {{ .Values.service.name }}
selector:
    app: {{ template "fullname" . }}

И снова - не стесняйтесь использовать любые другие заданные вручную значения в нижнем регистре. Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...