簡體   English   中英

動態舵圖配置的值的層次結構

[英]Hierarchy of values for dynamic helm chart configuration

我想做什么

我想在values.yaml具有一些默認設置和選項,然后是不同實例的哈希圖,這些哈希圖將轉換為服務和部署,其單個設置將覆蓋默認設置。

values.yaml

someSetting: TheDefault
deployments:
  one:
    role: XYZ
  two:
    role: ABC
    someSetting: Overridden

在上述情況下,將有兩個部署和服務, onetwo someSetting的值one將是TheDefault ,而two將被Overridden

actual template yaml

我正在嘗試-構建字典$p ,其中具有根范圍的ChartRelease對象,然后將根作用域值合並到其中,然后合並當前部署值。

{{- range $deploymentKey, $deploymentVal := .Values.deployments }}
{{- $p := dict "deploymentKey" $deploymentKey }}
{{- $_ := set $p "Chart" $.Chart }}
{{- $_ := set $p "Release" $.Release }}
{{- $_ := merge $p $.Values }}
{{- $_ := merge $p . }}
...
{{- end }}

包含ChartRelease的原因是,盡管文檔中有說明,但是$.Chart並不總是可用-當我將范圍傳遞到模板中並且該模板嘗試使用$.時,它實際上是空的$. 指根范圍。

所以我正在做類似的事情:

name: {{ template "my-app.fullname" $p }}

image: {{ $p.image.name }}

錯誤

問題在於,雖然helm lint返回錯誤,但helm template . (或空運行)收益:

Error: rendering template failed: runtime error: invalid memory address or nil pointer dereference

我嘗試過的

  • 刪除每個merge以嘗試縮小崩潰的范圍-它們似乎並沒有導致崩潰
  • 普通的將$合並到字典中
  • 哭泣
  • 詢問舵松弛
  • 詢問GitHub問題

我的問題..

如何解決此崩潰?

或者,我怎樣才能實現我想要的目標?

您可以改為使用默認值創建普通的基礎圖表​​,並使用普通服務和部署,然后創建一個包含該基礎圖表的總括圖表兩次,別名分別為“一”和“二”。 然后,傘形圖的值文件將覆蓋默認值,並且您不需要任何字典。

作為示例,這里是一個基礎圖表-https: //github.com/ryandawsonuk/configmaps-transformers/tree/master/helm/transformers/charts/transformer ,而傘形圖在不同別名下多次包含該圖表-https:// github.com/ryandawsonuk/configmaps-transformers/blob/master/helm/transformers/requirements.yaml 傘形圖的值文件為包含的基本圖的每個實例插入不同的值。 在保護傘值中,每個實例均由其別名引用-https: //github.com/ryandawsonuk/configmaps-transformers/blob/master/helm/transformers/values.yaml#L14

嘗試這個:

deployment.yaml:

{{- range $deploymentKey, $deploymentVal := .Values.deployments }}
{{- $p := dict "deploymentKey" $deploymentKey }}
{{- $_ := set $p "Chart" $.Chart }}
{{- $_ := set $p "Release" $.Release }}
{{- $_ := merge $p . }}
{{- $_ := merge $p $.Values }}
...
{{ end }}

_helpers.tpl:

{{- define "repro.fullname" -}}
{{- printf "%s" .Chart.Name }}
{{- end -}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM