首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个.yaml中创建多个持久卷

在一个.yaml中创建多个持久卷
EN

Stack Overflow用户
提问于 2019-04-12 02:56:22
回答 1查看 1.4K关注 0票数 1

我想为我的系统动态提供3个持久卷,它们都基于我之前创建的storageClass。我的v1代码成功地完成了工作。

v1:

代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolume
metadata:
  name: volume0
  labels:
    type: storage-one
spec:
  storageClassName: storage-one
  accessModes:
    - ReadWriteMany
  capacity:
    storage: 2Gi
  hostPath:
    path: /somepath
    type: "DirectoryOrCreate"

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: volume1
  labels:
    type: storage-one
spec:
  storageClassName: storage-one
  accessModes:
    - ReadWriteMany
  capacity:
    storage: 2Gi
  hostPath:
    path: /somepath
    type: "DirectoryOrCreate"

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: volume2
  labels:
    type: storage-one
spec:
  storageClassName: storage-one
  accessModes:
    - ReadWriteMany
  capacity:
    storage: 2Gi
  hostPath:
    path: /somepath
    type: "DirectoryOrCreate"

我想重构这段代码,可能使用k8s可以识别的模板,因为这里唯一的变量是metadata.name。有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-12 04:54:06

kubernetes本身不识别任何模板。但是在将此yaml传递给kubectl之前,您可以使用任何模板引擎。

常见的做法是使用helm,它在内部使用了gotpl。https://helm.sh/docs/chart_template_guide/

您的示例将如下所示:

代码语言:javascript
复制
{{ range .Values.volume_names }}
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: {{ . }}
  labels:
    type: storage-one
spec:
  storageClassName: storage-one
  accessModes:
    - ReadWriteMany
  capacity:
    storage: 2Gi
  hostPath:
    path: /somepath
    type: "DirectoryOrCreate"
{{ end }}

和values.yaml:

代码语言:javascript
复制
volume_names: 
- volume_this
- volume_that

通常,您可以使用任何引擎执行render_with_your_fav_engine_to_stdout | kubectl apply -f

UPD:基于给定的len生成(这个很奇怪):

代码语言:javascript
复制
{{ range $k, $v := until (atoi .Values.numVolumes) }}
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: volume-{{ $v }}
  labels:
    type: storage-one
spec:
  storageClassName: storage-one
  accessModes:
    - ReadWriteMany
  capacity:
    storage: 2Gi
  hostPath:
    path: /somepath
    type: "DirectoryOrCreate"
{{ end }}

和values.yaml:

代码语言:javascript
复制
numVolumes: "3"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55639436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档