persistentVolumeClaim上的必需值

时间:2018-10-18 15:03:17

标签: kubernetes kubernetes-helm

为什么人们

我制作了yaml文件来部署我的应用程序,现在我使用helm来自动部署它。尽管我所有的conf文件dor kubernetes都可以工作。我对头盔和PVC有疑问。 我已经检查了互联网,但我找不到我的错误在哪里:(

pvc-helm.yaml

{{- if .Values.persistence.enabled }}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: {{ .Values.persistence.name }}
  namespace: {{ .Values.persistence.namespace }}
  spec:
    accessModes:
    - {{ .Values.persistence.accessModes | quote }}
    resources:
      requests:
        storage: {{ .Values.persistence.size | quote }}
{{- end }}  

values.yaml

persistence:
  enabled: true
  name: ds-pvc
  namespace: ds-svc
  storageClassName: standard
  storageClass: standard
  accessModes:
    - ReadWriteOnce
  size: 20Mi

运行命令helm install cas/ --tls时出现以下错误

  

错误:发布brawny-olm失败:PersistentVolumeClaim“ ds-pvc”为   无效:[spec.accessModes:必需值:至少一种访问模式是   必需,spec.resources [存储]:必需值]

我还必须设置PersistentVolume吗?

2 个答案:

答案 0 :(得分:1)

掌舵图中有两个问题:

1。spec级别不应低于metadata级别。它与metadata没有关系,因此specmetadata处于同一级别。

2。。值persistence.accessModes应该定义为字符串,而不是列表。

正确的文件是:

pvc-helm.yaml

{{- if .Values.persistence.enabled }}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: {{ .Values.persistence.name }}
  namespace: {{ .Values.persistence.namespace }}
spec:
  accessModes:
  - {{ .Values.persistence.accessModes | quote }}
  resources:
    requests:
      storage: {{ .Values.persistence.size | quote }}
{{- end }}

values.yaml

persistence:
  enabled: true
  name: ds-pvc
  namespace: default
  storageClassName: standard
  storageClass: standard
  accessModes: ReadWriteOnce
  size: 20Mi

答案 1 :(得分:0)

如果要使用可选值,则应检查是否已定义

spec:
  {{- if .Values.persistence.accessModes }}
  accessModes:
  - {{ .Values.persistence.accessModes | quote }}
  {{- end }}

另一个选项是在values.yaml文件上定义默认值