我很难遍历values.yaml中的数组值。错误某种语法/yaml结构相关的错误,但消息是如此神秘,我不知道问题是什么:我的价值观。yaml文件:
agent:
namespace: "" <values are subject to change>
enabled: true
admin_group:
- "TEST_GROUP_1"
- "TEST_GROUP_2"
my template:
{{- 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 -}}
非常感谢你的帮助。节日快乐! !
您的问题在于范围循环的体。当你这样写:
{{- range .Values.agent.admin_group }}
...
{{- end}}
那么你在重新定义.
的含义。在循环中,.
指的是range
运算符产生的每个连续值。当你在循环中写.Values.agent.admin_group
时,你会得到一个错误,因为列表项没有.Values
字段(因为它们是字符串)。你想写:
{{- range .Values.agent.admin_group }}
- kind: group
apiGroup: rbac. authorization.k8s.io
name: {{ . | quote }}
{{- end}}
同样在你的Sync
模板。
您可以在这里找到相关文档,其中包括许多示例(在该页和关于变量的子序列页)。