объединение шаблона диаграммы управления root значения области в нескольких файлах вызывают ошибку переполнения стека - PullRequest
0 голосов
/ 19 марта 2020

Я новичок в Хелм-чарте и недавно занялся унаследованным проектом (первоначальный коммитер оставил так, чтобы никто не спрашивал).

График работает хорошо, но когда я пытаюсь следовать его шаблонам чтобы добавить новый манифест, я получил ошибку. Для простоты это просто демонстрационная диаграмма:

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.

...