我在檔案夾中有一個 Yaml 檔案,abc.yaml內容為
metadata:
test1: apple
test2: banana
test3: cat
container:
image: foo
text: xyz
variables:
ojb: one
meta: two
我還有另一個檔案values.yaml.j2需要上述內容的一部分。
metadata:
test4: dog
test5: elephant
{{ .... Here I need test1, test2, test3 from the above (abc.yaml).... }}
container:
name: test
{{ .... Here I need image and text from the above (abc.yaml) ....}}
variables:
ping: pong
{{ ..... Here I need ojb and meta from the above (abc.yaml) .... }}
當我在探索 Helm go 模板時,我發現,Files.Lines會逐行回傳。但是我需要上面提到的特定行。
go template 的任何解決方案都可以獲取其他 yaml 檔案的一部分嗎?
uj5u.com熱心網友回復:
如果您知道另一個檔案是 YAML,Helm 包含一個fromYaml可以決議它的檔案較少的擴展。
{{- $abc := .Files.Get "abc.yaml" | fromYaml }}
從那里你有幾個關于如何繼續的選擇。toYaml您擁有的一個工具是將任意結構轉換回 YAML的相應的、也很少記錄的擴展。
因此,一種選擇是直接發出您認為需要的值:
metadata:
test4: dog
test5: elephant
test1: {{ $abc.metadata.test1 }}
test2: {{ $abc.metadata.test2 }}
test3: {{ $abc.metadata.test3 }}
第二個是為每個塊發出新值,加上現有內容:
metadata:
test4: dog
test5: elephant
{{ $abc.metadata | toYaml | indent 2 -}}
第三種是就地修改結構,然后讓 Helm 將整個內容寫成 YAML。Helm 模板函式的不尋常之處是set修改了它給出的字典。
{{- $_ := $abc.metadata | set "test4" "dog" | set "test5" "elephant" -}}
{{- toYaml $abc -}}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/532346.html
標籤:Kuberneteskubernetes-helm去模板
下一篇:MVC表單資料無法系結到模型
