[英]How to set environment related values.yaml in Helm subcharts?
我目前正在使用Helm將應用程序部署在Kubernetes集群中。 現在,我還需要能夠針對不同的環境修改values.yaml文件中的某些參數。
對於只有一個級別的簡單圖表,可以通過設置不同的values-local.yaml和values-prod.yaml並將其添加到helm install
標志(例如helm install --values values-local.yaml
。
但是,如果我有第二層子圖,也需要在多個環境之間進行區分,則無法設置自定義values.yaml。
假設以下結構:
| chart
| Chart.yaml
| values-local.yaml
| values-prod.yaml
| charts
| foo-app
| Chart.yaml
| values-local.yaml
| values-prod.yaml
| templates
| deployments.yaml
| services.yaml
由於Helm在子圖中需要一個values.yaml
,因此這將不起作用。
我現在的解決方法是在subchart / values.yaml中具有if-else-construct並將其設置為父values.yaml中的全局變量。
*foo-app/values.yaml*
{{ - if .Values.global.env.local }}
foo-app:
replicas: 1
{{ else if .Values.global.env.dev}}
foo-app:
replicas: 2
{{ end }}
parent/values-local.yaml
global:
env:
local: true
parent/values-prod.yaml
global:
env:
prod: true
但我希望周圍有更好的方法,因此我不必依賴這些自定義標志。
我希望你能在這方面幫助我。
這是我的操作方法(用於參考覆蓋值 ):
...
replicas: 1
...
...
spec:
replicas: {{ .Values.replicas }}
...
然后,在主圖表的值文件中:
foochart:
replicas: 1
foochart:
replicas: 2
只是一個想法,需要充實一點...
在KubeCon上,我看到了一個演講 ,他們介紹了一個叫做Lostromos的Kubernetes運算符。 這個想法是簡化部署以支持多個不同的環境,並使此類事情的維護更加容易。 它使用自定義資源定義 。 我想知道在這種情況下是否可以利用Lostromos。 您的子圖表只有一個values.yaml
但使用lostromos和CRD來輸入所需的屬性 。 因此,您將改為部署CRD,而CRD會觸發Lostromos部署您的Helm圖表。
只是一些可以使想法付諸實踐的東西,但似乎值得探討。
我目前正在從穩定/詹金斯獲得圖表,並試圖設置我的values.yaml文件。 我進行了適當的更改,然后嘗試運行'helm install -n --values = stable / jenkins,但是它將繼續安裝默認值,而不是我創建的修改后的yaml文件。 更具體地說,我注釋了yaml文件中的插件要求,因為它導致我的pod狀態保持在Kubernetes上的“ Init:0/1”上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.