我希望创建跨多个分区的持久卷。
数据对象中有两个列表,一个用于az,另一个用于vol id。
结构为:
persistentVolume:
az:
- eu-west-2a
- eu-west-2b
- eu-west-2c
storageClassName: postgres
storage: 10Gi
accessModes: ReadWriteOnce
volumeID:
- vol-123
- vol-456
- vol-789
fsType: ext4
Helm配置:
{{- $fullName := include "postgres.fullname" $ -}}
{{- range .Values.persistentVolume }}
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: {{ $fullName }}
labels:
type: {{ $fullName }}
az: {{ .az }}
spec:
storageClassName: {{ .Values.persistentVolume.storageClassName }}
capacity:
storage: {{ .Values.persistentVolume.storage }}
accessModes:
- {{ .Values.persistentVolume.accessModes }}
awsElasticBlockStore:
volumeID: {{ .volumeID }}
fsType: {{ .Values.persistentVolume.fsType }}
{{- end }}
template: postgres/templates/pv.yaml:10:11: executing "postgres/templates/pv.yaml" at <.az>: can't evaluate field az in type interface {}
任何提示或指针将不胜感激:-)
这是不可能做你想做的与你现有的结构,但如果你愿意改变你的values.yaml
一点:
persistentVolume:
az:
- region: eu-west-2a
volumeID: vol-123
- region: eu-west-2b
volumeID: vol-456
- region: eu-west-2c
volumeID: vol-789
storageClassName: postgres
storage: 10Gi
accessModes: ReadWriteOnce
fsType: ext4
那么你可以这样做(简单的例子,但我相信你会明白的):
{{- $storageClassName := .Values.persistentVolume.storageClassName }}
{{- $volumes := .Values.persistentVolume }}
{{- range $volumes.az }}
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: test
labels:
type: test
az: {{ .region }}
spec:
storageClassName: {{ $storageClassName }}
awsElasticBlockStore:
volumeID: {{ .volumeID }}
{{- end }}
注意{{- $storageClassName := .Values.persistentVolume.storageClassName }}
。您需要这样做,因为helm
具有"作用域"的概念,您可以在文档中了解更多。