配置 Vault-Helm PVC

Configuring Vault-Helm PVC

我是 K8S 的新手,我一直在尝试在 k8s 上实现 vault。 我一直在尝试使用 Helm 在 K8S 上部署 Hashicorp Vault,如他们网站上所写。 -- 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

当 运行 这样做时,它应该创建一个名为 "data" 的 PVC 作为默认值 具体来说:

"data-vault-0"

这是从 kubectl describe pod vault-0 收到的消息

error while running "VolumeBinding" filter plugin for pod "vault-0": pod has unbound immediate > PersistentVolumeClaims

以下命令 kubectl describe pvc data-vault-0 显示如下:

persistentvolume-controller storageclass.storage.k8s.io "data" not found

我遵循了它应该配置 PVC 的方式,它使用了一个名为

的帮助文件

_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 }}

我用 pvc 和 pv 深入研究了 k8s。 在我看来,我需要定义一个 pv,然后才能正确加载整个图表 问题是... 我有点不知道如何去做,以便它可以与这张图表一起工作 我需要使用单独的 k8s 部署进行部署吗?比如为 pv 编写特定的 yaml 然后 运行 图表?

有没有人处理过这个问题,可以指点一下?

谢谢!

  1. 创建存储空间class

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: local-storage
    reclaimPolicy: Delete
    volumeBindingMode: WaitForFirstConsumer
    
  2. 在要存储 PV 的节点上创建目录 然后在k8s中创建PV。请参阅下面的示例。

  3. 为这个节点分配标签"app.kubernetes.io/instance: vault"
  4. 从 Helm 修复 PVC。 PVC 应包含 storageClassName: 规范中的本地存储。您可以在仪表板中执行此操作(复制并删除旧的然后添加新的)。

示例 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