Helm 图表错误无法评估 .Values.agent.admin_group 处类型接口 {} 中的字段值

问题描述 投票:0回答:1

我很难在values.yaml 中循环数组值。错误是某种与语法/yaml 结构相关的错误,但消息非常神秘,我不知道问题是什么: 我的values.yaml 文件:

agent:
 namespace: "" <values are subject to change>
 enabled: true
 admin_group:
   - "TEST_GROUP_1"
   - "TEST_GROUP_2"

我的模板是:

{{- if .Values.agent.enabled }}
kind: Rolebinding
apiVersion: rbac.authorization.k8s.io/v1
subjects:
  {{- range .Values.agent.admin_group }}
  - kind: group
    apiGroup: rbac. authorization.k8s.io
    name: {{ .Values.agent.admin_group }}
  {{- end}}
roleRef:
  apigroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: view
{{- end -}}

我还想根据 admin_group 的数组值创建多个组:

{{- if .Values.agent.enabled }}
{{- range .Values.agent.admin_group }}
kind: Sync
apiVersion: group.xxx.com/v1alpha1
metadata:
  name: group-sync-{{ .Values.agent.namespace }}
  namespace: {{ .Values.agent.namespace }}
spec:
  domain: external
  group: {{ .Values.agent.admin_group }}
{{- end }}
{{- end -}}

非常感谢您的帮助。节日快乐!!!

kubernetes kubernetes-helm
1个回答
2
投票

你的问题在于你的range循环的body。当你写下这个:

{{- range .Values.agent.admin_group }}
...
{{- end}}

那么你就重新定义了

.
的含义。在循环中,
.
指的是
range
运算符生成的每个连续值。当您在循环中写入
.Values.agent.admin_group
inside 时,您会收到错误,因为列表项没有
.Values
字段(因为它们是字符串)。你要写:

{{- range .Values.agent.admin_group }}
- kind: group
  apiGroup: rbac. authorization.k8s.io
  name: {{ . | quote }}
{{- end}}

在您的

Sync
模板中也类似。

您可以在here找到相关文档,其中包括许多示例(在该页面上以及有关变量的子序列页面上)。

© www.soinside.com 2019 - 2024. All rights reserved.