Jika template menyertakan item seperti:
"{{ .Values.postgresql.postgresPassword }}"
Dan nilainya tidak ditentukan, saat menjalankan lint
Anda mendapatkan:
[WARNING] templates/post-install-job.yaml: these substitution functions are returning no value: [{{ .Values.postgresql.postgresPassword }}]
Namun, jika Anda memiliki sesuatu yang tidak ditentukan, itu adalah level tambahan seperti:
"{{ .Values.postgresql.notdefined.postgresPassword }}"
Anda mendapatkan pesan kesalahan saat linting atau menginstal yang menyertakan perpesanan khusus 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 {}
Mungkin seharusnya masih ada kesalahan daripada peringatan seperti yang lain, tapi saya pikir itu pasti bisa lebih baik untuk tidak menggunakan type interface {}
.
Ya, beberapa kesalahan yang keluar dari mesin templat cukup tidak jelas.
@tsloughter Menutup karena tidak ada aktivitas. Beri tahu saya jika Anda ingin membuka kembali masalah ini. Terima kasih!
Saya memiliki masalah yang sama. Tampaknya sub objek tidak berfungsi
yaitu.
.Values.blah
baik-baik saja, tetapi .Values.blah.foo
tidak berfungsi, meskipun blah
ditentukan dalam values.yaml
hai @chainlink! Maukah Anda menjelaskan lebih banyak tentang itu? Memahami masalah spesifik itu, apa pesan kesalahannya, bagaimana bagan Anda diatur, dll. Akan menjadi item tindakan yang baik untuk mulai mengembalikan kesalahan yang lebih baik.
Mengalami masalah yang sama.
Grafik:
{{- 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"
Kesalahan ini terjadi ketika saya mencoba meningkatkan dengan nilai-nilai ini:
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 {}
Pada dasarnya saya melihat hal yang sama dengan @NathanJiangCS. Apakah kita jelas melakukan sesuatu yang salah di sini?
Hai @NathanJiangCS
Sejauh ini saya tidak dapat mereproduksi kesalahan Anda. Saya membuat ulang bagan Anda dan menginstal dengan tag gambar kosong. Saya mendapatkan pesan Image Tag Required
. Jika saya menginstal dengan tag acak dan kemudian mencoba helm upgrade
dengan tag kosong, saya mendapatkan pesan Image Tag Required
lagi.
Versi Helm dan Kubernetes apa yang Anda gunakan?
Kemudi:
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"}
Cukup aneh, saya tidak dapat mereproduksi kesalahan yang saya lihat sebelumnya. Mungkin itu kesalahan di pihak saya.
@ jeffutter Apakah Anda masih mengalami masalah?
Saya pikir masalah yang saya lihat adalah bahwa saya mencoba untuk mereferensikan nilai-nilai dari sub-grafik satu sama lain.
Sebagai contoh
MainChart
| --- SubChartA
| --- SubChartB
Saya mencoba melakukan sesuatu seperti {{Values.SubChartA.something}} di Sub Chart B, yang sekarang saya kumpulkan bukanlah bagaimana hal-hal dimaksudkan untuk bekerja.
Ok senang Anda sudah tahu. Saya akan menutup yang ini tapi tolong buka masalah baru jika Anda memiliki lebih banyak masalah. Terima kasih!
Saya mengalami masalah yang sama
image:
init:
repository: busybox
tag: latest
pullPolicy: IfNotPresent
dan dalam penerapan saya
image: "{{ .Values.image.init.repository }}:{{ .Values.image.init.tag }}"
Dan saya mengerti
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 apa perbaikannya? cc @ jascott
Saya memiliki masalah yang sama dan yang dapat saya temukan hanyalah orang-orang yang mengatakan "oh, sudah diperbaiki sekarang". Terima kasih
@alexellis apakah masalah Anda seperti ini? yaitu dalam jarak (loop)?
https://github.com/kubernetes/helm/issues/1311
Tidak, saya pikir saya melewatkan bagian dari referensi yang memasukkan --set create=true
alih-alih --set operator.create=true
- itu tidak jelas dari kesalahannya. Semoga ini bisa membantu orang lain.
dimana kamu mengaturnya? --set operation.create = true?
saya mendapatkan kesalahan ini: <.Values.ingress.enab ...>: tidak dapat mengevaluasi bidang diaktifkan dalam antarmuka tipe {}
Saya memiliki masalah yang sama dengan sub objek seperti yang dijelaskan di atas. Adakah yang tahu cara memperbaikinya?
Banyak kesalahan dari templat helm sangat tidak jelas atau sulit dipahami. Mungkin kita harus memiliki masalah github lain untuk memperbaiki pesan kesalahan secara umum?
Apakah kita sudah membuka tiket lain untuk masalah ini? Saya memiliki masalah serupa, di mana saya mencoba mengakses nilai subchart dari bagan payung dan ternyata, tpl, tidak dapat menguraikannya. Tidak yakin apa akar penyebabnya, tetapi jika seseorang dapat memeriksanya, akan lebih baik.
@ bali0019 jika Anda memiliki saran tentang pesan kesalahan tertentu, silakan buka tiket baru untuk itu.
@ max-rocket-internet, sehubungan dengan membuka masalah baru untuk secara umum memperbaiki pesan kesalahan: sangat sulit untuk mengukur ketika dianggap dapat diterima untuk menutup tiket seperti itu. Memiliki tiket dengan item tindakan yang sangat spesifik adalah yang terbaik. misal, "template helm dengan \
@bacongobbler Saya memiliki masalah dengan bagan payung, di mana saya mencoba mengakses nilai dari sub bagan, tetapi saya mendapatkan kesalahan ini, meskipun bidang itu ada di nilai sub bagan
: can't evaluate field sanity in type interface {}
@ctxrag apakah itu dengan OpenFaaS atau bagan helm lainnya?
Saya juga mengalami masalah ini saat menggunakan bagan payung dengan bagan umum bersama templat.
mengalami masalah yang sama di sini
pastikan file yaml Anda diformat dengan benar. gunakan: helm lint .
apakah ada cara untuk memeriksanya? seperti .Values.something && .Values.something.somethingElse
tetapi dalam helm-crazy-lang?
Sepertinya {{- if ($.Values.service) and $.Values.service.enabled }}
berfungsi untuk memeriksa bahwa bagian ada terlebih dahulu (dalam kasus saya)
Sunting: tetapi bagaimana saya bisa melakukan pemeriksaan yang sama untuk bagian? Ini masih menimbulkan kesalahan:
{{ if (.cloudflare) and (.cloudflare.secret) -}}
name: {{ .cloudflare.secret.name }}
key: {{ .cloudflare.secret.emailAddressKey }}
{{- else -}}
...
lol @ helm-crazy-lang. Itu nama terbaik yang pernah saya dengar untuk teks / template :)
Sintaks yang tepat harus if and .cloudflare .cloudflare.secrets
, FYI. and
adalah fungsi dalam teks / template yang menerima dua argumen; itu bukan kata kunci yang berfungsi seperti bahasa pemrograman tradisional.
@bacongobbler yang juga tidak bekerja untuk saya sayangnya, ini:
{{- if or (and (.cloudflare) (.cloudflare.enabled)) (and ($.Values.cloudflare) ($.Values.cloudflare.enabled)) }}
Memberikan:
[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 {}
Apakah .cloudflare
vs .Values.cloudflare
disengaja? Kesalahan itu sepertinya menunjukkan .cloudflare
tidak ada.
Ya itu betul. Saya mencoba untuk memeriksa apakah itu ada dalam lingkup, dan jika diaktifkan ada juga, atau kembali ke lingkup root kemudian lihat $ .Values di sana. Ini semua dalam range
, jadi .cloudflare
seharusnya benar. (Juga, ya - itu tidak ada. Saya mencoba mendeteksinya)
https://stackoverflow.com/questions/44675087/golang-template-variable-isset membuatku berpikir ... "aduh".
Saya mencoba melakukan hierarki pengaturan, misalnya:
title: Hello
deployments:
myDepoyment:
role: one
otherDeployment:
title: Goodbye
Dimana myDeployment
akan "mewarisi" default title
dari Hello
, tetapi otherDeployment
akan "menimpa" dengan judul tertentu Goodbye
. Mungkin ada cara lain untuk melakukan ini?
Edit: apakah saya perlu menyiapkan dict
, lalu range
melalui kedua level dan set
kunci, lalu menggunakan dict
? Bantuan apa pun akan sangat bagus
menghadapi masalah yang sama, ada yang membantu? itu berhasil untuk siapa saja?
Saya memiliki masalah yang sama. Dalam kasus saya, perbaikannya adalah mengganti nama values.yml -> values.yaml
Saya juga menghadapi masalah yang sama. Mengapa ditutup? Saya tidak melihat penjelasan atau solusi apa pun di sini.
Hai,
Sepertinya helm mengharapkan file sebagai dot.yaml dan bukan dot.yml. Saya menghadapi masalah yang sama seperti di atas dan masalah lain dengan Chart.yml - jadi, saya mengganti namanya menjadi values.yaml dan Chart.yaml.
Jadi, ganti namanya menjadi yaml dan itu akan berfungsi.
Terima kasih
Chart.yaml saya disebut Chart.yaml, dan saya masih mendapatkan kesalahan itu:
Saya hanya memiliki grafik utama (tidak ada subchart)
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
Kode:
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.appVersion }}
app.kubernetes.io/component: frontend
Chart.yaml
apiVersion: v1
appVersion: "5.6.0.3856-ion70"
description: test application
name: testapp
version: 0.1.1
Menariknya (Frustratingly?) Ini berfungsi jika saya mereferensikan .Chart.name daripada .Chart.appVersion
==> Linting .
[INFO] Chart.yaml: icon is recommended
1 chart(s) linted, no failures
Saya menggunakan versi v2.10.0
Dalam kasus saya, saya menggunakan range dan nilai file Values.yaml tidak ditentukan dengan benar:
Cara yang salah:
env:
node:
varA: value
varB: value
Cara yang benar :
env:
node:
- varA: value
varB: value
Perhatikan tanda hubung kecil (-) sebelum varA.
-Rahul
Saya juga menghadapi masalah yang sama di versi 2.12.3
Struktur YAML nilai saya seperti:
values.yaml
global:
configMap
properti:
saya:
jasa:
perang:
truststore:
kata sandi: abcxyz
Kesalahan: tidak dapat mengevaluasi kata sandi bidang dalam jenis antarmuka {}
versi helm
Klien: & version.Version {SemVer: "v2.12.3", GitCommit: "eecf22f77df5f65c823aacd2dbd30ae6c65f186e", GitTreeState: "clean"}
Server: & version.Version {SemVer: "v2.12.3", GitCommit: "eecf22f77df5f65c823aacd2dbd30ae6c65f186e", GitTreeState: "clean"}
versi kubectl
Versi Klien: version.Info {Major: "1", Minor: "12", GitVersion: "v1.12.5", GitCommit: "51dd616cdd25d6ee22c83a858773b607328a18ec", GitTreeState: "clean", BuildDate: "2019-01-16T18: 24: 45Z ", GoVersion:" go1.10.7 ", Penyusun:" gc ", Platform:" linux / amd64 "}
Versi Server: version.Info {Mayor: "1", Minor: "12", GitVersion: "v1.12.5", GitCommit: "51dd616cdd25d6ee22c83a858773b607328a18ec", GitTreeState: "clean", BuildDate: "2019-01-16T18: 14: 49Z ", GoVersion:" go1.10.7 ", Penyusun:" gc ", Platform:" linux / amd64 "}
Apakah ada yang punya perbaikan untuk ini?
Untuk semua yang menghadapi masalah ini, periksa kembali nama file values.yaml
. Milik saya adalah values.YML
bukan values.yaml
Mengganti nama itu memperbaiki masalah.
Saya memiliki masalah ini juga. File nilai saya bernama values.yaml
dan penerapan saya adalah 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
Saya mendapatkan yang terkenal itu
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
Saya kemudian melakukan perubahan berikut:
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
Saya tidak mengalami masalah itu.
Dalam kasus saya, saya menamai file values.yml
alih-alih values.yaml
.
Jika tidak dapat menemukan file, itu macet di tingkat kedua. Jadi melakukan {{ .Values.awesome.image }}
akan macet.
Jika saya mencoba hanya {{ .Values.image }}
(dan juga memastikan bahwa image
memiliki nilai) itu menghasilkan konfigurasi, tetapi nilai yang diganti kosong. Kemudian saya menyadari bahwa ada masalah saat memuat values.yaml
.
^^ masalah RE values.yml yang sama persis bukan values.yaml. Kudos to helm lint
saran!
Saya tidak dapat menerapkan diagram helm dasar 3 dengan file yang dibuat secara otomatis.
at <.host>: can't evaluate field host in type interface {}
ingress.yaml
[snip]
rules:
{{- range .Values.ingress.hosts }}
- host: {{ .host | quote }}
http:
paths:
{{- range .paths }}
- path: {{ . }}
backend:
serviceName: {{ $fullName }}
servicePort: {{ $svcPort }}
{{- end }}
{{- end }}
{{- end }}
values.yaml
ingress:
enabled: true
annotations: {}
hosts:
- host: chart-example.local
paths: []
tls: []
@masterkain Anda perlu mengkonfigurasi host di file nilai. Lihat dokumen ingress di k8s untuk detail selengkapnya: https://kubernetes.io/docs/concepts/services-networking/ingress/
@hickeyma tidak yakin apa yang Anda maksud.
helm3 create test
lihat ingress.yaml # 31
lihat values.yaml # 43
konfigurasi itu tidak bekerja untuk saya di luar kotak, bahkan jika saya meletakkan host asli saya, saya mendapatkan kesalahan template.
at <.host>: can't evaluate field host in type interface {}
@masterkain Dapatkah Anda membuat masalah dan memasukkan rinciannya ke dalamnya inc. nilai?
mengurangi ruang lingkup pencarian, berhasil untuk saya
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 -}}
{{/*
dengan helm lint .
untuk menyelamatkan, saya akan gila jika tidak
ps jangan gunakan # with
sebagai cara berkomentar ... rusak ... gunakan {{- end -}}{{/* with */}}
Saya terus-menerus menerima pesan kesalahan ini ketika mencoba memeriksa file deployment.yaml saya untuk nilai yang ditentukan dalam subchart (redis dalam kasus saya) menggunakan helm 3 sebagai:
name: {{ ternary .Values.redis.existingSecret (printf "%s-%s" .Release.Name "redis") .Values.redis.existingSecret | quote }}
Satu-satunya cara yang secara pribadi saya temukan untuk menghindari ini adalah dengan menentukan variabel di bagian atas file seperti:
{{- $redisExistingSecret := .Values.redis.existingSecret | default nil}}
Kemudian alih-alih baris sebelumnya saya melakukan name: {{ ternary $redisExistingSecret (printf "%s-%s" .Release.Name "redis") $redisExistingSecret | quote }}
dan ini tampaknya berhasil untuk saya.
Semoga bisa membantu seseorang.
@ jascott1 pesan galat yang membingungkan tampaknya masih menjadi masalah. Bisakah ini dibuka kembali?
@ caleb15 apakah Anda ingin memperbaikinya? Masalah ini dibuka kembali pada tahun 2016.
Jika Anda ingin mengatasi masalah ini, buka PR.
Akan keren jika saya bisa memperbaikinya tetapi saya tidak punya pengalaman dengan pergi.
Akan lebih baik bagi orang lain untuk memperbaikinya, dan jika masalahnya terbuka
akan ada kemungkinan lebih tinggi seseorang mengambilnya.
Pada Sel, 11 Agustus 2020, 17:47 Matthew Fisher [email protected]
menulis:
Apakah Anda ingin memperbaikinya? Masalah ini dibuka kembali pada tahun 2016.
Jika Anda ingin mengatasi masalah ini, buka PR.
-
Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/helm/helm/issues/1579#issuecomment-672406719 , atau
berhenti berlangganan
https://github.com/notifications/unsubscribe-auth/ALCZY6IGXV64N6PZGE6QMPLSAHRBFANCNFSM4CXHON4A
.
Komentar yang paling membantu
Banyak kesalahan dari templat helm sangat tidak jelas atau sulit dipahami. Mungkin kita harus memiliki masalah github lain untuk memperbaiki pesan kesalahan secara umum?