配置Vault-Helm PVC

时间:2020-03-12 14:03:42

标签: kubernetes-helm hashicorp-vault

我刚接触K8S,我一直在尝试在k8s上实现保险库。 我一直在尝试使用Helm在其网站上所写的在K8S上部署Hashicorp Vault。 -https://www.vaultproject.io/docs/platform/k8s/helm/run/ -https://github.com/hashicorp/vault-helm-分支0.4.0

我遇到了一个我不太清楚的问题。 在文件中,要对Values.yaml进行编辑以针对我的环境进行配置 这样做时,我尝试将其配置为根据需要写入存储。 此配置位于文件中,如下所示:

[
{
  "cmid": 1,
  "src": "x",
  "dst": "y",
  "proto": "TCP",
  "ports": 80,
  "service": "* Ad-hoc Submission"
},
{
  "cmid": 1,
  "src": "c",
  "dst": "u",
  "proto": "TCP",
  "ports": 80,
  "service": "* Ad-hoc Submission"
}
]

按原样运行时,它应该创建一个名为“ data”的PVC,这就是默认值 具体来说:

“数据仓库0”

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

为Pod“ vault-0”运行“ VolumeBinding”过滤器插件时出错:pod具有未绑定的立即> PersistentVolumeClaims

接着,命令kubectl describe pvc data-vault-0,显示如下:

未找到持久卷控制器storageclass.storage.k8s.io“数据”

我按照其配置PVC的方式进行了跟踪,它使用了一个名为的帮助程序文件

_helpers.tpl

在该帮助文件中,其配置如下:

  # 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
我用pvc和pv深入到k8s。 在我看来,我需要定义一个PV,然后才可以正确加载整个图表 问题是... 我在如何做到这一点上有点迷失,以便它可以与此图表一起使用 我是否需要使用单独的k8s部署进行部署?比如为PV编写特定的Yaml,然后运行图表?

以前有没有人处理过这个问题并且可以提供指针?

谢谢!

1 个答案:

答案 0 :(得分:2)

  1. 创建存储类

    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:local-storage。您可以在信息中心中进行操作(复制并删除旧文件,然后添加新文件)。

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