Стабильный выбор типа тома между EBS и NFS? - PullRequest
0 голосов
/ 18 февраля 2019

Мне нужна помощь с утверждениями «если» в моей карте Шлема Прометея.То, что я пытаюсь достичь, - это диаграмма Прометея с постоянными объемами в EBS или NFS.Он отлично работает для EBS, но не работает для NFS.Я думаю, что проблема в моей логике оператора if.

Когда я устанавливаю storageClass: "nfs" values.yaml, я получаю ошибку:

Error: release prometheus failed: PersistentVolume "prometheus-alertmanager" is invalid: spec: Required value: must specify a volume type

В моем файле values.yamlУ меня есть:

  persistentVolume:
    enabled: true
    accessModes:
      - ReadWriteOnce
    annotations: {}
    existingClaim: ""
    mountPath: /data
    subPath: "alertmanager/"
    size: 4Gi
    ReclaimPolicy: "Recycle"
    storageClass: "aws"
    volumeID: "vol-xxx"
    fs_mounts:
      path: /data/alertmanager
      server: 127.0.0.1

Разница для сервера Prometheus находится в subPath и в пути под fs_mounts.

В моем alertmanager-pv у меня есть:

{{- if not .Values.alertmanager.statefulSet.enabled -}}
{{- if and .Values.alertmanager.enabled .Values.alertmanager.persistentVolume.enabled -}}
apiVersion: v1
kind: PersistentVolume
metadata:
  name: prometheus-alertmanager
spec:
  capacity:
    storage: {{ .Values.alertmanager.persistentVolume.size }}
  accessModes:
{{ toYaml .Values.alertmanager.persistentVolume.accessModes | indent 4 }}
  persistentVolumeReclaimPolicy: "{{ .Values.alertmanager.persistentVolume.ReclaimPolicy }}"
{{- if (eq "aws" .Values.alertmanager.persistentVolume.storageClass) }}
  storageClassName: "gp2"
  awsElasticBlockStore:
    fsType: "ext4"
    volumeID: {{ .Values.alertmanager.persistentVolume.volumeID }}
{{- if (eq "nfs" .Values.alertmanager.persistentVolume.storageClass) }}
  StorageClassName: "nfs"
    mountOptions:
      - hard
      - nfsvers=4.1
      - timeo=600
      - retrans=2
    nfs:
      server: {{ .Values.alertmanager.persistentVolume.fs_mounts.server }}
      path: {{ .Values.alertmanager.persistentVolume.fs_mounts.path }}
{{- end }}
{{- end }}
{{- end -}}
{{- end -}}

ив alertmanager-pvc:

{{- if not .Values.alertmanager.statefulSet.enabled -}}
{{- if and .Values.alertmanager.enabled .Values.alertmanager.persistentVolume.enabled -}}
{{- if not .Values.alertmanager.persistentVolume.existingClaim -}}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  labels:
  name: prometheus-alertmanager
spec:
  accessModes:
{{ toYaml .Values.alertmanager.persistentVolume.accessModes | indent 4 }}
{{- if (eq "aws" .Values.alertmanager.persistentVolume.storageClass) }}
  storageClassName: "gp2"
  resources:
    requests:
      storage: {{ .Values.alertmanager.persistentVolume.size }}
{{- if (eq "nfs" .Values.alertmanager.persistentVolume.storageClass) }}
  storageClassName: "nfs"
  resources:
    requests:
      storage: {{ .Values.alertmanager.persistentVolume.size }}
{{- end }}
{{- end }}
{{- end -}}
{{- end -}}
{{- end -}}

1 Ответ

0 голосов
/ 18 февраля 2019

Проблема была в неправильных идентификаторах в выражении nfs if.

...