我正在嘗試使用 helm 創建一個 kubernetes ConfigMap,它僅包含組態檔中的第一行。我把我的檔案放在helm/config/file.txt里面,里面有幾行內容,但我只想提取第一行。我的第一次嘗試是回圈遍歷檔案的行(自然),但在第一次回圈后退出:
apiVersion: v1
kind: ConfigMap
metadata:
name: one-line-cm
data:
first-line:
{{- range .Files.Lines "config/file.txt" }}
{{ . }}
{{ break }} # not a real thing
{{- end }}
不幸的是,break它似乎不是 helm 中的概念/功能,即使它在 golang 中。我發現這一點很困難,并在另一篇文章中閱讀了類似的問題:Helm: break loop (range) in template
我沒有堅持使用回圈,我只是想知道是否有另一種解決方案可以執行從帶有 helm 語法的檔案中提取第一行的簡單任務。
uj5u.com熱心網友回復:
編輯:
我確定以下是最干凈的解決方案:
.Files.Lines "config/file.txt" | first
squote(作為旁注,由于我的檔案內容包含特殊字符,我不得不在我的實際解決方案中使用管道)
在 helm檔案中尋找替代功能后,我想出了一個可行的解決方案,但它并不那么漂亮:
apiVersion: v1
kind: ConfigMap
metadata:
name: one-line-cm
data:
first-line: |
{{ index (regexSplit "\\n" (.Files.Get "config/file.txt") -1) 0 }}
這就是上面發生的事情(從內向外作業):
.Files.Get "config/file.txt"正在回傳檔案內容的字串表示形式。regexSplit "\\n" <step-1> -1正在通過換行符從步驟 1 中拆分檔案內容(-1 表示回傳可能的最大子字串匹配數)index <step-2> 0正在從第 2 步回傳的串列中獲取第一項(索引 0)。
希望這能夠幫助處于類似情況的其他人,我仍然愿意接受替代解決方案的建議。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/475737.html
標籤:去 Kubernetes kubernetes-helm 配置图
上一篇:如何從Golang中的javascriptXMLHttpRequest讀取POST資料?
下一篇:如何從字典中獲取元素
