假設你需要部署一個有大量數值的公共舵手圖(如jenkins/jenkins)。我想把這些值寫在多個檔案上,同時在這些值檔案中使用go模板。然后我想把它們組合在一起并進行部署。是否有辦法撰寫一個元級別的舵手圖,以清單的形式創建數值,然后根據這些數值安裝一個子圖?
我知道kustomize、helmfile和子圖表。我想它們都不是我想要的東西(或者也許我沒有正確使用它們)。Kustomize不支持go模板。Helmfile適合于組成和選擇數值,但不一定是對這些數值檔案進行模板化(或者也許它支持)。如果我問的問題是重復的,請告訴我。
uj5u.com熱心網友回復:
Helmfile至少允許Helm風格的模板,無論是在它的Helmfile中還是在單個值檔案中。
假設你有一些圖表,并且它需要知道它安裝在哪個集群中以進行監控。 通常情況下,你會將其作為一個Helm值來傳遞,但你希望將其寫下來(并且可以撰寫腳本,并能夠同時將相同的配置傳遞給多個圖表)。 在Helmfile中,你可以寫:
environments:。
生產:
值:
- cluster: production.example.com
測驗:
值:
- cluster: testing.example.com
版本:
- name:some-chart
namespace: some-chart
圖表: ./charts/some-chart
值:
- ./charts/some-chart/values.yaml.gotmpl
- cluster: {{ .Values.cluster }}。
最后一個塊應該類似于helm install引數,但那里有兩個神奇的地方。 {{ .Values.cluster }}是一個Go text/template塊,幾乎和你在Helm圖表中做的一樣(具體的模板功能有點不同)。 或者,如果你參考了一個*.gotmpl檔案,Helmfile在將其作為輸入提供給Helm之前會在該檔案上運行模板引擎。
# values.yaml.gotmpl
{{-/* enable profiling but only in testing */}}。
就像普通的Helm一樣,有可能過度使用模板化。 它也可能有點混亂,因為訪問未定義的屬性通常是一個錯誤,而不是nil,而且helmfile.yaml會被多次渲染(在大多數情況下,如果你定義一個每個環境的值,它必須在每個環境中定義)。 但是,這確實給了你一個非常通用的方法來提供每個圖表的設定,或者定義一個在不同環境中幾乎相同但不完全相同的圖表設定。
uj5u.com熱心網友回復:
看起來Helm已經使用values/子目錄開發了這個功能 http://www.github.com/helm/helm/pull/6876
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/319471.html
標籤:
