14

n回拡張したいk8sリソースの汎用テンプレートがあります(興味がある場合は、mongoクラスターのnメンバーを作成できるようにするためであり、各メンバーが安定したネットワークを持つようにstatefulsetリソースを使用しています名前)。

明らかに、ループを通過するたびに異なる値が必要です。Sprig の「until」関数によって生成された一連のインデックスをループしています。しかし、ループの $index は "." に設定されません。名前空間。そのため、_helpers.tpl ファイルで定義したテンプレート内の現在の反復を参照できません。

これは、完全な k8s リソース yaml を含むテンプレートの例です (ほとんどを省略しています)。

{{- define "mytest" -}} 
---
apiVersion: apps/v1beta1
kind: StatefulSet
  abbreviated...
  containers:
  - name: mongod-$index
  abbreviated...
{{- end -}}

発信者:

{{ range $index, $e := until .Values.mongod_count }}
    {{include "mytest" .}}
{{ end}}

私はただ得る:未定義の変数 "$index"

私の(発信者)テンプレートのように、ブロックも試しました:

{{ $foo := "somevalue" }}
{{ define "my_extra_labels" }} bla {{ .Values.test }}_{{$foo}}{{end}}
{{ template "mytest" . }}

そして、これは私の_helpers.tplにあります

{{/* Test stuff */}} 
{{- define "mytest" -}}
hello: world_how_are_{{ block "my_extra_labels" . }}{{ end }}
{{- end -}} 

変数 $foo は "define" 本体で定義されていません。

このテンプレートのスコープは非常に限定的であるため、現在のシナリオを解決するために使用する方法が現時点ではわかりません。

変数を「。」に押し込む方法はありますか?名前空間? もしそうなら(私の指を交差させて)、何らかの方法で名前空間をマージして、.Values および .Chart 変数に引き続きアクセスできるようにする方法はありますか?

4

2 に答える 2