kubernetes-helm - 配置 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
当运行它时,它应该创建一个名为“数据”的 PVC 作为默认值:
“数据保险库-0”
这是从 kubectl describe pod vault-0 收到的消息
为 pod“vault-0”运行“VolumeBinding”过滤器插件时出错:pod has unbound immediate > PersistentVolumeClaims
接下来,命令 kubectl describe pvc data-vault-0 显示:
找不到持久卷控制器 storageclass.storage.k8s.io “数据”
我跟进了它应该配置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 然后运行图表?
有没有人处理过这个问题并可以提供指点?
谢谢!
解决方案
创建存储类
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: local-storage reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer
在要存储 PV 的节点上创建目录,然后在 k8s 中创建 PV。请参见下面的示例。
- 为该节点分配标签“app.kubernetes.io/instance: vault”
- 从 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
推荐阅读
- scala - 用于动态拥塞控制的 Akka 油门成本函数?
- ajax - Ajax api调用成功函数未触发
- python - 将返回列表的 Celery 任务链接到链中间的组中
- java - 无法将 Executors.newSingleThreadExecutor() 的结果转换为 ThreadPoolExecutor
- excel - Excel VBA:如果所选单元格为空
- javascript - 为什么我的手机浏览器看起来和电脑的开发者工具不一样
- python - 从 xarray 数据集中删除一个坐标值
- sql - 将简单 JSON 转换为 SQL SELECT 语句
- python - 在 python 中使用“for”循环时遇到错误
- excel - 检测何时在某个范围内创建或修改形状并将其复制到其他多个范围中