Я новичок в Хелм-чарте и недавно занялся унаследованным проектом (первоначальный коммитер оставил так, чтобы никто не спрашивал).
График работает хорошо, но когда я пытаюсь следовать его шаблонам чтобы добавить новый манифест, я получил ошибку. Для простоты это просто демонстрационная диаграмма:
templates / deploy1.yaml (работает хорошо)
deploy1:
{{ $rootScope := . }}
{{ range $folder, $foldercontents := .Values.mydisk }}
{{- $merged := merge $foldercontents $rootScope.Values -}}
{{$foldercontents.files}}
{{ end }}
Values.yaml:
mydisk:
folder1:
files:
- aaa
folder2:
files:
- bbb
В вышеприведенном развертывании $merged
- это сложная структура данных, которая будет передаваться в качестве параметра почти в каждый шаблон (для простоты, я здесь просто опустил использование).
Вывод:
---
# Source: hello/templates/deployment.yaml
deploy1:
[aaa]
[bbb]
Поэтому я добавил еще один файл:
templates / deploy2.yaml
deploy2:
{{ $rootScope := . }}
{{ range $folder, $foldercontents := .Values.mydisk }}
{{- $merged := merge $foldercontents $rootScope.Values -}}
{{$foldercontents.files}}
{{ end }}
Но когда я запускаю helm template ./
, я получаю сообщение об ошибке переполнения стека:
время выполнения: стек стоек превышает 1000000000 байт. Неустранимая ошибка: переполнение стека
время выполнения стека: runtime.throw (0x16585ea , 0xe) /usr/local/go/src/runtime/panic.go:616 + 0x88 runtime.newstack () /usr/local/go/src/runtime/stack.go:1054 + 0x72d runtime.morestack () /usr/local/go/src/runtime/asm_amd64.s:480 + 0x91
маршрут 1 [выполняется]: refle.flag.mustBe (0x15, 0x15) / usr / local /go/src/reflect/value.go: 205 + 0xc3 fp = 0xc0629012f8 sp = 0xc0629012f0 pc = 0x4cc1e3 рефлекс fp = 0xc0629013a0 sp = 0xc0629012f8 pc = 0x4cfe80 ......
Я полагаю, что ошибка была вызвана некоторой переменной, $rootScope
можно получить только до того, как будут оценены другие манифесты, но два файла полагаются друг на друга, верно?
Как решить эту проблему? Я не могу найти никакого документа по этому вопросу. Я использую helm v2.9.1.