Helm: رسالة خطأ محيرة بشأن قيمة القالب المفقودة

تم إنشاؤها على ٢٢ نوفمبر ٢٠١٦  ·  54تعليقات  ·  مصدر: helm/helm

إذا كان النموذج يتضمن عنصرًا مثل:

"{{ .Values.postgresql.postgresPassword }}"

ولم يتم تحديد القيمة ، عند تشغيل lint تحصل على:

[WARNING] templates/post-install-job.yaml: these substitution functions are returning no value: [{{ .Values.postgresql.postgresPassword }}]

ومع ذلك ، إذا كان لديك شيء غير محدد فهذا مستوى إضافي مثل:

"{{ .Values.postgresql.notdefined.postgresPassword }}"

تظهر لك رسالة خطأ عند الفحص أو التثبيت تتضمن مراسلة خاصة بـ Go:

[ERROR] templates/: render error in ".../templates/post-install-job.yaml": template: .../templates/post-install-job.yaml:52:28: executing ".../templates/post-install-job.yaml" at <.Values.postgresql.n...>: can't evaluate field postgresPassword in type interface {}

ربما يجب أن يظل خطأً بدلاً من تحذير مثل الآخر ، لكنني أعتقد أنه من الأفضل بالتأكيد عدم استخدام type interface {} .

help wanted

التعليق الأكثر فائدة

العديد من الأخطاء من قوالب الدفة غامضة للغاية أو يصعب فهمها. ربما يجب أن يكون لدينا مشكلة جيثب أخرى لتحسين رسائل الخطأ بشكل عام؟

ال 54 كومينتر

نعم ، بعض الأخطاء التي تظهر من محرك النموذج غامضة جدًا.

tsloughter إغلاق بسبب عدم النشاط. يرجى إعلامي إذا كنت تريد إعادة فتح هذه المشكلة. شكرا!

لدي نفس المشكلة. يبدو أن الكائنات الفرعية لا تعمل
بمعنى آخر.
.Values.blah جيد ، لكن .Values.blah.foo لا يعمل ، حتى لو تم تعريف blah في القيم.

ياchainlink! هل تمانع في مزيد من التفاصيل حول ذلك؟ إن تحديد هذه المشكلة المحددة ، ورسالة الخطأ ، وكيفية إعداد المخطط الخاص بك ، وما إلى ذلك ، سيكون عنصرًا جيدًا للعمل لبدء إرجاع أخطاء أفضل.

وجود نفس المشكلة.

جدول:

{{- if .Values.sidekiq.enabled }}
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: {{ .Release.Name }}-sidekiq
spec:
  replicas: {{ .Values.sidekiq.replicaCount }}
  template:
    metadata:
      labels:
        app: {{ .Release.Name }}-sidekiq
      annotations:
        prometheus.io/port: "3000"
        prometheus.io/scrape: "true"
    spec:
      containers:
      - name: {{ .Release.Name }}-sidekiq
        image: "{{ required "Repository required" .Values.image.repository }}:{{ required "Image tag required" .Values.image.tag }}"
        command: ["bundle"]
        args: ["exec", "sidekiq", "-C", "config/sidekiq.yml"]
        resources:
{{ toYaml .Values.sidekiq.resources | indent 10 }}
        ports:
        - containerPort: 3000
{{ end }}

values.yaml :

image:
  repository: "gcr.io/something/something"
  tag: ""

sidekiq:
  enabled: true
  replicaCount: 1
  resources:
    requests:
      memory: "250Mi"
      cpu: "250m"
    limits:
      memory: "2Gi"
      cpu: "1"

يظهر هذا الخطأ عندما أحاول الترقية بهذه القيم:

Error: UPGRADE FAILED: render error in "web/templates/sidekiq-deployment.yaml": template: web/templates/sidekiq-deployment.yaml:1:14: executing "web/templates/sidekiq-deployment.yaml" at <.Values.sidekiq.enab...>: can't evaluate field enabled in type interface {}

أرى في الأساس نفس الشيء مثل NathanJiangCS هل نفعل شيئًا خاطئًا بشكل واضح هنا؟

مرحبًا NathanJiangCS

لا يمكنني إعادة إنتاج خطأك حتى الآن. أعدت إنشاء المخطط الخاص بك وقمت بالتثبيت بعلامة صورة فارغة حصلت على الرسالة Image Tag Required . إذا قمت بالتثبيت بعلامة عشوائية ثم حاولت استخدام helm upgrade بعلامة فارغة ، فسأحصل على الرسالة Image Tag Required مرة أخرى.

ما هو إصدار Helm و Kubernetes الذي تستخدمه؟

القياده:

Client: &version.Version{SemVer:"v2.7.2", GitCommit:"8478fb4fc723885b155c924d1c8c410b7a9444e6", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.7.2", GitCommit:"8478fb4fc723885b155c924d1c8c410b7a9444e6", GitTreeState:"clean"}

Kubernetes:

Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.4", GitCommit:"9befc2b8928a9426501d3bf62f72849d5cbcd5a3", GitTreeState:"clean", BuildDate:"2017-11-20T05:28:34Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"8+", GitVersion:"v1.8.5-gke.0", GitCommit:"2c2a807131fa8708abc92f3513fe167126c8cce5", GitTreeState:"clean", BuildDate:"2017-12-19T20:05:45Z", GoVersion:"go1.8.3b4", Compiler:"gc", Platform:"linux/amd64"}

بغرابة كافية ، لا يمكنني إعادة إنتاج الأخطاء التي رأيتها من قبل. ربما كان خطأ من جانبي.

jeffutter هل ما زلت تواجه المشكلة؟

أعتقد أن المشكلة التي كنت أراها هي أنني كنت أحاول الإشارة إلى القيم من المخططات الفرعية في بعضها البعض.

على سبيل المثال

مينتشارت
| --- مخطط فرعي
| --- SubChartB

كنت أحاول أن أفعل شيئًا مثل {{Values.SubChartA.something}} في الرسم البياني الفرعي B ، والذي أجمعه الآن ليس هو الكيفية التي يجب أن تعمل بها الأشياء.

حسنًا ، سعيد لأنك حصلت على الأشياء. أنا ذاهب لإغلاق هذا ولكن يرجى فتح مشكلة جديدة إذا كان لديك المزيد من المشاكل. شكرا!

أنا أواجه نفس المشكلة

image:
  init:
    repository: busybox
    tag: latest
    pullPolicy: IfNotPresent

وفي عملي

image: "{{ .Values.image.init.repository }}:{{ .Values.image.init.tag }}"

وأنا أحصل

Error: render error in "es/templates/es-master.yml": template: es/templates/es-master.yml:17:26: executing "es/templates/es-master.yml" at <.Values.image.es.rep...>: can't evaluate field repository in type interface {}

@ jonathan-kosgei ما هو الإصلاح؟ cc @ jascott1

لدي نفس المشكلة وكل ما يمكنني العثور عليه هو أن الناس يقولون نوعًا ما "تم حل المشكلة الآن". شكرا

لا ، أعتقد أنني كنت أفتقد جزءًا من المرجع الذي وضع --set create=true بدلاً من --set operator.create=true - لم يكن هذا واضحًا من الخطأ. آمل أن يساعد هذا شخص آخر.

اين وضعته - ضبط العملية. إنشاء = صحيح؟

أتلقى هذا الخطأ: <.Values.ingress.enab ...>: لا يمكن تقييم الحقل الممكّن في واجهة النوع {}

لدي نفس المشكلة مع الكائنات الفرعية كما هو موضح أعلاه. هل توصل أي شخص إلى حل لهذا؟

العديد من الأخطاء من قوالب الدفة غامضة للغاية أو يصعب فهمها. ربما يجب أن يكون لدينا مشكلة جيثب أخرى لتحسين رسائل الخطأ بشكل عام؟

هل فتحنا تذكرة أخرى لهذه المشكلة حتى الآن؟ لدي مشكلة من نوع مماثل ، حيث أحاول الوصول إلى قيمة المخطط الفرعي من مخطط شامل وعلى ما يبدو ، tpl ، لا يمكنه تحليلها. لست متأكدًا من السبب الجذري ، ولكن إذا كان بإمكان شخص ما النظر فيه ، فسيكون ذلك رائعًا.

@ bali0019 إذا كانت لديك اقتراحات بشأن رسائل خطأ معينة ، فلا تتردد في فتح تذكرة جديدة لذلك.

@ max-Rocket-internet ، فيما يتعلق بفتح إصدار جديد لتحسين رسائل الخطأ بشكل عام: من الصعب جدًا تحديد الوقت الذي يُعتبر فيه مقبولاً إغلاق بطاقة كهذه. من الأفضل الحصول على تذاكر بعناصر عمل محددة للغاية. على سبيل المثال "قوالب الدفة مع \إرجاع الخطأ غير الوصفي "أكثر إيجازًا وقابلية للتنفيذ :)

bacongobbler لدي مشكلة في المخطط الشامل ، حيث أحاول الوصول إلى القيم من المخططات الفرعية ، لكني أتلقى هذا الخطأ ، على الرغم من وجود هذا الحقل في قيم المخطط الفرعي

: can't evaluate field sanity in type interface {}

ctxrag هل كان ذلك باستخدام OpenFaaS أو مخطط دفة آخر؟

أنا أيضًا أواجه هذه المشكلة عند استخدام مخطط شامل مع نماذج مشتركة لمخطط مشترك.

وجود نفس المشكلة هنا

تأكد من تنسيق ملفات yaml بشكل صحيح. استخدم: helm lint .

هل هناك طريقة للتحقق؟ مثل .Values.something && .Values.something.somethingElse لكن في helm-crazy-lang؟

يبدو أن {{- if ($.Values.service) and $.Values.service.enabled }} يعمل للتحقق من وجود قسم أولاً (في حالتي)

تحرير: ولكن كيف يمكنني إجراء نفس التحقق للأقسام؟ هذا لا يزال يلقي خطأ:

{{ if (.cloudflare) and (.cloudflare.secret) -}}
              name: {{ .cloudflare.secret.name }}
              key: {{ .cloudflare.secret.emailAddressKey }}
{{- else -}}
...

لول @ helm-crazy-lang. هذا هو أفضل اسم سمعته حتى الآن للنص / القالب :)

يجب أن تكون الصيغة الصحيحة هي if and .cloudflare .cloudflare.secrets ، FYI. and هي دالة في النص / القالب تقبل وسيطين ؛ إنها ليست كلمة رئيسية تعمل مثل لغات البرمجة التقليدية.

bacongobbler هذا لا يعمل بالنسبة لي إما للأسف ، هذا:

{{- if or (and (.cloudflare) (.cloudflare.enabled)) (and ($.Values.cloudflare) ($.Values.cloudflare.enabled)) }}

يعطي:

[ERROR] templates/: render error in "XXX/templates/pre-delete-job.yaml": template: XXX/templates/pre-delete-job.yaml:3:41: executing "XXX/templates/pre-delete-job.yaml" at <.cloudflare.enabled>: can't evaluate field enabled in type interface {}

هل كان .cloudflare مقابل .Values.cloudflare مقصودًا؟ يبدو أن هذا الخطأ يشير إلى أن .cloudflare غير موجود.

نعم هذا صحيح. أحاول التحقق مما إذا كان موجودًا في النطاق ، وإذا كان ممكّنًا أيضًا ، أو الرجوع إلى النطاق الجذر ، فابحث عن قيم $. هناك. هذا كله ضمن range ، لذا يجب أن يكون .cloudflare صحيحًا. (أيضًا ، نعم - إنه غير موجود. أحاول اكتشاف ذلك)

https://stackoverflow.com/questions/44675087/golang-template-variable-isset يجعلني أفكر ... "ouch".

أحاول عمل تسلسل هرمي للإعدادات ، على سبيل المثال:

title: Hello

deployments:
  myDepoyment:
    role: one
  otherDeployment:
    title: Goodbye

حيث أن myDeployment "يرث" القيمة الافتراضية title لـ Hello ، لكن otherDeployment قد "تكتب" بعنوان محدد هو Goodbye . ربما هناك طريقة أخرى للقيام بذلك؟

تحرير: هل أحتاج إلى إعداد dict ، ثم range خلال كلا المستويين و set ، ثم استخدام dict ؟ اي مساعدة ستكون عظيمة

تواجه نفس المشكلة ، أي شخص يساعد؟ عملت لأي شخص؟

كان لي نفس القضية. في حالتي ، كان الإصلاح هو إعادة تسمية القيم. yml -> القيم. yaml

انا ايضا اواجه نفس المشكلة. لماذا تم إغلاقه؟ لا أرى أي تفسير أو حل هنا.

أهلا،

يبدو أن helm يتوقع الملفات بتنسيق dot.yaml وليس dot.yml. لقد واجهت نفس المشكلة على النحو الوارد أعلاه ومشكلة أخرى مع Chart.yml - لذلك ، أعدت تسميتها إلى قيم. yaml و Chart.yaml.

لذا ، أعد تسميتها إلى yaml ويجب أن تعمل.

شكرا

يُطلق على Chart.yaml اسم Chart.yaml ، وما زلت أتلقى هذا الخطأ:
لدي فقط المخطط الرئيسي (لا توجد مخططات فرعية)

Error: render error in "helm/templates/service-db.yaml": template: helm/templates/service-db.yaml:7:40: executing "helm/templates/service-db.yaml" at <.Chart.appVersion>: can't evaluate field appVersion in type interface {}

shell returned 1

الرمز:

    app.kubernetes.io/instance: {{ .Release.Name }}
    app.kubernetes.io/version: {{ .Chart.appVersion }}
    app.kubernetes.io/component: frontend

مخطط

apiVersion: v1
appVersion: "5.6.0.3856-ion70"
description: test application
name: testapp
version: 0.1.1

من المثير للاهتمام (محبط؟) أنه يعمل إذا أشرت إلى .Chart.name بدلاً من .Chart.appVersion

==> Linting .
[INFO] Chart.yaml: icon is recommended

1 chart(s) linted, no failures

أنا على الإصدار v2.10.0

في حالتي كنت أستخدم النطاق وفي قيم ملف Values.yaml لم يتم تعريفها بشكل صحيح:
طريقة غير صحيحة:

env:
  node:
    varA:  value
    varB:  value

الطريق الصحيح :

env:
  node:
    - varA: value
      varB: value

لاحظ واصلة صغيرة (-) قبل فار أ.

-راهول

أواجه نفس المشكلة أيضًا في الإصدار 2.12.3
هيكل قيم YAML الخاص بي مثل:
القيم
عالمي:
configMap
الخصائص:
لي:
خدمات:
حرب:
Truststore:
كلمة المرور: abcxyz

خطأ: لا يمكن تقييم كلمة مرور الحقل في واجهة النوع {}

إصدار الدفة
العميل: & version.Version {SemVer: "v2.12.3"، GitCommit: "eecf22f77df5f65c823aacd2dbd30ae6c65f186e"، GitTreeState: "clean"}
الخادم: & version.Version {SemVer: "v2.12.3"، GitCommit: "eecf22f77df5f65c823aacd2dbd30ae6c65f186e"، GitTreeState: "clean"}

نسخة kubectl

إصدار العميل: version.Info {Major: "1"، Minor: "12"، GitVersion: "v1.12.5"، GitCommit: "51dd616cdd25d6ee22c83a858773b607328a18ec"، GitTreeState: "clean"، BuildDate: "2019-01-16T18: 24: 45Z "، GoVersion:" go1.10.7 "، المترجم:" gc "، النظام الأساسي:" linux / amd64 "}
إصدار الخادم: version.Info {Major: "1"، Minor: "12"، GitVersion: "v1.12.5"، GitCommit: "51dd616cdd25d6ee22c83a858773b607328a18ec"، GitTreeState: "clean"، BuildDate: "2019-01-16T18: 14: 49Z "، GoVersion:" go1.10.7 "، المترجم:" gc "، النظام الأساسي:" linux / amd64 "}

هل لدى أي شخص أي إصلاح لهذا؟

لجميع الذين يواجهون هذه المشكلة ، تحقق جيدًا من اسم ملف values.yaml . كان منجم values.YML بدلاً من values.yaml

إعادة تسميته إلى حل المشكلة.

لدي هذه المسألة أيضا. اسم ملف القيمة الخاص بي هو values.yaml ونشري هو deployment.yaml

deployment.yaml :

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: {{ template "unicorn.name" . }}
  labels:
    app: {{ template "unicorn.name" . }}
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
    release: {{ template "unicorn.releasedVersionName" . }}
    heritage: {{ .Release.Service }}
    version: {{ .Chart.Version }}
spec:
  replicas: {{ .Values.replicaCount }}
  template:
    metadata:
      labels:
        app: {{ template "unicorn.name" . }}
    spec:
      containers:
        - name: {{ .Chart.Name }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}

values.yaml :

versionName: whatever
replicaCount: 5
image:
  repository: myself/myimage
  tag: whatever
  pullPolicy: Always

أحصل على الشائنة

render error in "unicorn/templates/deployment.yaml": template: unicorn/templates/deployment.yaml:20:28: executing "unicorn/templates/deployment.yaml" at <.Values.image.reposi...>: can't evaluate field repository in type interface {}, requeuing

ثم أقوم بإجراء التغييرات التالية:

deployment.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: {{ .Chart.Name }}
spec:
  replicas: {{ .Values.replicaCount }}
  template:
    metadata:
      labels:
        app: {{ .Chart.Name }}
    spec:
      containers:
        - name: {{ .Chart.Name }}
          image: "{{ .Values.repository }}:{{ .Values.tag }}"
          imagePullPolicy: {{ .Values.pullPolicy }}

values.yaml :

versionName: whatever
replicaCount: 5
repository: myself/myimage
tag: whatever
pullPolicy: Always

أنا لا أواجه تلك القضايا.

في حالتي ، قمت بتسمية الملف values.yml بدلاً من values.yaml .

إذا لم يتمكن من تحديد موقع الملف ، فإنه يتعطل في المستوى الثاني. لذا فإن القيام بـ {{ .Values.awesome.image }} سيتعطل.

إذا حاولت فقط {{ .Values.image }} (وتأكدت أيضًا من أن image له قيمة) ، فقد أنشأ التكوين ، لكن القيم المستبدلة كانت فارغة. ثم أدركت أنها تواجه مشكلة في تحميل values.yaml .

^ ^ بالضبط نفس المشكلة قيم RE .yml بدلاً من القيم. مجد لاقتراح helm lint !

لا يمكنني نشر مخطط رئيسي 3 بملفات مُنشأة تلقائيًا.

at <.host>: can't evaluate field host in type interface {}

دخول

[snip]
  rules:
  {{- range .Values.ingress.hosts }}
    - host: {{ .host | quote }}
      http:
        paths:
        {{- range .paths }}
          - path: {{ . }}
            backend:
              serviceName: {{ $fullName }}
              servicePort: {{ $svcPort }}
        {{- end }}
  {{- end }}
{{- end }}

القيم

ingress:
  enabled: true
  annotations: {}
  hosts:
    - host: chart-example.local
      paths: []
  tls: []

masterkain قد تحتاج إلى تكوين المضيف ( https://kubernetes.io/docs/concepts/services-networking/ingress/

hickeyma لست متأكدًا مما

helm3 create test
view ingress.yaml # 31
عرض القيم yaml # 43

هذا التكوين لا يعمل معي خارج الصندوق ، حتى لو وضعت مضيفي الحقيقيين ، أحصل على خطأ في النموذج.

at <.host>: can't evaluate field host in type interface {}

masterkain هل يمكنك إنشاء مشكلة ووضع التفاصيل فيها inc. القيم؟

الحد من نطاق البحث ، عملت بالنسبة لي

 Create the name for the database password secret key.
 */}}
 {{- define "keycloak.dbPasswordKey" -}}
-{{- if and .Values.keycloak.persistence .Values.keycloak.persistence.existingSecret -}}
-  {{- .Values.keycloak.persistence.existingSecretKey -}}
+{{- with .Values.keycloak.persistence -}}
+{{- if .existingSecret -}}
+  {{- .existingSecretKey -}}
 {{- else -}}
   password
 {{- end -}}
+{{- end -}} # with
 {{- end -}}

 {{/*

مع helm lint . للإنقاذ ، كنت سأصاب بالجنون بخلاف ذلك

ملاحظة: لا تستخدم # with كطريقة للتعليق ... لا تستخدم هذه الخاصية ... استخدم {{- end -}}{{/* with */}}

لقد تلقيت رسالة الخطأ هذه باستمرار عند محاولة التحقق من ملف النشر. yaml الخاص بي للحصول على قيم محددة في مخطط فرعي (redis في حالتي) باستخدام helm 3 على النحو التالي:
name: {{ ternary .Values.redis.existingSecret (printf "%s-%s" .Release.Name "redis") .Values.redis.existingSecret | quote }}

الطريقة الوحيدة التي وجدتها شخصيًا للتحايل على هذا هي تحديد المتغيرات في أعلى الملف على النحو التالي:
{{- $redisExistingSecret := .Values.redis.existingSecret | default nil}}

ثم بدلاً من السطر قبل أن أفعل name: {{ ternary $redisExistingSecret (printf "%s-%s" .Release.Name "redis") $redisExistingSecret | quote }} ويبدو أن هذا قد نجح معي.

أتمنى أن يساعد شخص ما.

@ jascott1 يبدو أن رسالة الخطأ المربكة لا تزال تمثل مشكلة. هل يمكن إعادة فتح هذا من فضلك؟

@ caleb15 هل كنت تبحث عن إصلاح هذا؟ تم فتح هذه المشكلة مرة أخرى في عام 2016.

إذا كنت ترغب في معالجة هذه المشكلة ، يرجى فتح العلاقات العامة.

سيكون رائعًا إذا كان بإمكاني إصلاحه ولكن ليس لدي أي خبرة في go.
سيكون من الأفضل لشخص آخر إصلاح هذا ، وإذا كانت المشكلة مفتوحة
ستكون هناك فرصة أكبر في أن يأخذها شخص ما.

في الثلاثاء ، 11 أغسطس ، 2020 ، 5:47 مساءً Matthew Fisher [email protected]
كتب:

هل كنت تبحث لإصلاح هذا؟ تم فتح هذه المشكلة مرة أخرى في عام 2016.

إذا كنت ترغب في معالجة هذه المشكلة ، يرجى فتح العلاقات العامة.

-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/helm/helm/issues/1579#issuecomment-672406719 ، أو
إلغاء الاشتراك
https://github.com/notifications/unsubscribe-auth/ALCZY6IGXV64N6PZGE6QMPLSAHRBFANCNFSM4CXHON4A
.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

hobti01 picture hobti01  ·  3تعليقات

adam-sandor picture adam-sandor  ·  3تعليقات

naveensrinivasan picture naveensrinivasan  ·  3تعليقات

libesz picture libesz  ·  3تعليقات

KavinduZoysa picture KavinduZoysa  ·  3تعليقات