Настройка Vault-Helm PVC - PullRequest
       5

Настройка Vault-Helm PVC

1 голос
/ 12 марта 2020

Я довольно новичок в K8S, и я пытался внедрить хранилище на K8S. Я пытался развернуть Hashicorp Vault на K8S, используя Helm, как написано на их сайте. - https://www.vaultproject.io/docs/platform/k8s/helm/run/ - https://github.com/hashicorp/vault-helm - Ветвь 0.4.0

Я столкнулся с проблемой, которая мне не совсем понятна. в файлах файл Values.yaml нужно отредактировать, чтобы настроить его для моей среды, при этом я попытался настроить его для записи в хранилище по мере необходимости. эта конфигурация находится в файле следующим образом:

  # This configures the Vault Statefulset to create a PVC for data
  # storage when using the file backend.
  # See https://www.vaultproject.io/docs/configuration/storage/index.html to know more
  dataStorage:
    enabled: true
    # Size of the PVC created
    size: 10Gi
    # Name of the storage class to use.  If null it will use the
    # configured default Storage Class.
    storageClass: null
    # Access Mode of the storage device being used for the PVC
    accessMode: ReadWriteOnce

При запуске этого файла предполагается создать PV C с именем "data", в частности это значение по умолчанию:

"data-vault-0"

это сообщение, полученное от kubectl description pod vault-0

ошибка при запуске фильтра VolumeBinding плагин для модуля "хранилище-0": модуль имеет немедленное освобождение> PersistentVolumeClaims

, команда kubectl описывает pv c data-vault-0 показывает следующее:

persistentvolume-controller storageclass.storage.k8s.io "данные" не найдены

Я пошел по пути, который должен был настроить PV C, и он использует вспомогательный файл с именем

_helpers.tpl

в этом файле помощника, он показывает конфигурацию следующим образом:

{{/*
Set's up the volumeClaimTemplates when data or audit storage is required.  HA
might not use data storage since Consul is likely it's backend, however, audit
storage might be desired by the user.
*/}}
{{- define "vault.volumeclaims" -}}
  {{- if and (ne .mode "dev") (or .Values.server.dataStorage.enabled .Values.server.auditStorage.enabled) }}
  volumeClaimTemplates:
      {{- if and (eq (.Values.server.dataStorage.enabled | toString) "true") (eq .mode "standalone") }}
    - metadata:
        name: data
      spec:
        accessModes:
          - {{ .Values.server.dataStorage.accessMode | default "ReadWriteOnce" }}
        resources:
          requests:
            storage: {{ .Values.server.dataStorage.size }}
          {{- if .Values.server.dataStorage.storageClass }}
        storageClassName: {{ .Values.server.dataStorage.storageClass }}
          {{- end }}
      {{ end }}

я свернул в k8s с pv c и pv. мне кажется, что мне нужно определить pv, и ТОЛЬКО ТОГДА может проблема с загрузкой всей диаграммы ... я немного растерялся из-за того, как это сделать, чтобы он мог работать с этой диаграммой. Мне нужно развернуть, используя отдельный k8s развернуть? как написать спецификацию c yaml для pv и затем запустить диаграмму?

кто-нибудь имел дело с этим раньше и может предложить указатели?

спасибо!

1 Ответ

1 голос
/ 23 марта 2020
  1. Создать класс хранения

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: local-storage
    reclaimPolicy: Delete
    volumeBindingMode: WaitForFirstConsumer
    
  2. Создать каталог на узле, где вы хотите хранить PV, а затем создать PV в k8s. См. Пример ниже.

  3. Назначьте метку "app.kubernetes.io/instance: хранилище" этому узлу
  4. Исправьте PV C из Helm. PV C должен содержать storageClassName: local-storage в spe c. Вы можете сделать это на панели инструментов (скопируйте и удалите старый, затем добавьте новый).

Пример PV (замените vault_node_hostname вашими данными)

# mkdir -p /srv/cluster/storage/001
# cat PersistentVolume001.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: vol001
spec:
  capacity:
    storage: 1Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: local-storage
  local:
    path: /srv/cluster/storage/001
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - vault_node_hostname

# kubectl create -f PersistentVolume001.yaml
...