开发模板规范
Helm Chart 是一种打包规范,将各种 Kubernetes 资源以配置文件的形式组织。更详细的介绍请参考 Chart 官网文档
Chart 文件结构
一个 Chart 包由以下几个配置文件组成:
wordpress/Chart.yaml # Yaml文件,用于描述 Chart 的基本信息,包括名称版本等LICENSE # [可选] 文本格式的协议README.md # [可选] 应用介绍、使用说明requirements.yaml # [可选] 用于存放当前 Chart 依赖的其它 Chart 的说明文件values.yaml # Chart 的默认值配置文件charts/ # [可选] 该目录中放置当前 Chart 依赖的其它 Charttemplates/ # [可选] 部署文件模版目录,模版填入 values.yaml 中相应值,生成最终的 kubernetes 配置文件templates/NOTES.txt # [可选] 使用指南
Chart.yaml 文件
apiVersion: [必须] Chart API 版本,可用值 v1name: [必须] Chart 名称version: [必须] 版本,遵循 [SemVer 2 标准](https://semver.org/)kubeVersion: [可选] 兼容的 Kubernetes 版本,遵循 [SemVer 2 标准](https://semver.org/)description: [可选] 一句话的应用描述keywords:- [可选] 应用关键字列表home: [可选] 应用主页 URLsources:- [可选] 当前应用下载地址列表maintainers: [可选]- name: [必须] nameemail: [可选] emailurl: [可选] urlengine: [可选] 模板引擎,默认值是 gotplicon: [可选] SVG 或者 PNG 格式的图片地址appVersion: [可选] 应用版本deprecated: [可选] boolean 类型,是否不建议使用tillerVersion: [可选] Chart 需要的 Tiller 版本,遵循 [SemVer 2 标准](https://semver.org/),需要 ">2.0.0"
Requirements.yaml 文件和 Charts 目录
Chart支持两种方式表示依赖关系,可以写入 requirements.yaml 文件动态链接[推荐],也可以将依赖的 Chart 放入 charts 目录手动管理。
requirements.yaml 文件样例:
dependencies:- name: apacheversion: 1.2.3repository: http://example.com/charts- name: mysqlversion: 3.2.1repository: http://another.example.com/charts
- name:Chart 名称
- version:Chart 版本
- repository: Chart 仓库 URL 地址
有了 requirements.yaml 文件,可以运行 helm dependency update,依赖的 Chart 会被自动的下载到 charts 目录下。
Values.yaml 文件和 Templates 目录
values.yaml 文件中记录了模板中引用的默认值。templates 目录中存放了 Kubernetes 部署文件的模版,遵循 Go template 语法
templates 中模板文件样例:
apiVersion: v1kind: ReplicationControllermetadata:name: deis-databasenamespace: deislabels:app.kubernetes.io/managed-by: deisspec:replicas: 1selector:app.kubernetes.io/name: deis-databasetemplate:metadata:labels:app.kubernetes.io/name: deis-databasespec:serviceAccount: deis-databasecontainers:- name: deis-databaseimage: {{.Values.imageRegistry}}/postgres:{{.Values.dockerTag}}imagePullPolicy: {{.Values.pullPolicy}}ports:- containerPort: 5432env:- name: DATABASE_STORAGEvalue: {{default "minio" .Values.storage}}
上述样例是一个 Kubernetes 中 replication controller 的模板文件定义,其中引用了以下几个值(一般定义在 values.yaml 中)
- imageRegistry:Docker 映像仓库
- dockerTag: Docker 映像标签
- pullPolicy: 下载映像策略
- storage: 存储后端,默认值是 "minio"
values.yaml 文件样例:
imageRegistry: "quay.io/deis"dockerTag: "latest"pullPolicy: "Always"storage: "s3"
当前内容版权归 OpenPitrix 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 OpenPitrix .