gpt4 book ai didi

kubernetes-helm - 动态 helm 图配置的值的层次结构

转载 作者:行者123 更新时间:2023-12-02 09:09:36 28 4
gpt4 key购买 nike

我正在尝试做什么

我希望在 values.yaml 中有一些默认设置和选项,然后是不同实例的 HashMap ,这些实例将被转换为服务和部署,其单独的设置会覆盖默认值。

values.yaml

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

在上述情况下,将有两个部署和服务,一个两个onesomeSetting 值为 TheDefaulttwosomeSetting 值为 Overridden .

实际模板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 并不总是可用 - 它实际上是可用的当我将范围传递到模板并且该模板尝试使用 $. 来引用根范围时为空。

所以我正在做这样的事情:

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

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

错误

问题是,虽然 helm lint 没有返回错误,但 helm template . (或空运行)会产生:

错误:渲染模板失败:运行时错误:无效的内存地址或零指针取消引用

我尝试过的

  • 删除每个合并以尝试缩小崩溃范围 - 它们似乎不会导致崩溃
  • 简单地将 $ 合并到字典中
  • 哭泣
  • 在 Helm Slack 上询问
  • 询问 GitHub 问题

我的问题..

如何修复此崩溃?

或者,我怎样才能实现我想要的目标?

最佳答案

试试这个:

部署.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 -}}

关于kubernetes-helm - 动态 helm 图配置的值的层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54035672/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com