إذا كان النموذج يتضمن عنصرًا مثل:
"{{ .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 {}
.
نعم ، بعض الأخطاء التي تظهر من محرك النموذج غامضة جدًا.
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
لدي نفس المشكلة وكل ما يمكنني العثور عليه هو أن الناس يقولون نوعًا ما "تم حل المشكلة الآن". شكرا
alexellis هل
https://github.com/kubernetes/helm/issues/1311
لا ، أعتقد أنني كنت أفتقد جزءًا من المرجع الذي وضع --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
.
التعليق الأكثر فائدة
العديد من الأخطاء من قوالب الدفة غامضة للغاية أو يصعب فهمها. ربما يجب أن يكون لدينا مشكلة جيثب أخرى لتحسين رسائل الخطأ بشكل عام؟