我希望跨多个区域创建持久卷。
在数据对象内有两个列表,一个用于az,另一个用于vol。
它的结构是:
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: ext4Helm配置:
{{- $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 {}如有任何建议或建议,我们将不胜感激:-)
发布于 2021-10-19 01:38:27
您不可能使用当前的结构做您想要的事情,但是如果您愿意稍微更改一下您的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有“作用域”的概念,你可以在文档中读到更多。
https://stackoverflow.com/questions/69623473
复制相似问题