chart文件布局

打印 上一主题 下一主题

主题 809|帖子 809|积分 2427

在 Helm 中,Chart 是一个用于界说、安装和升级 Kubernetes 应用步伐的包。Chart 文件布局遵照一定的目次和文件构造方式,以下是典型的 Helm Chart 文件布局:
1. Chart 文件布局示例

  1. mychart/
  2. ├── Chart.yaml          # 描述 Chart 的基本信息
  3. ├── values.yaml         # 默认配置值
  4. ├── charts/             # 依赖的其他 Chart
  5. ├── templates/          # Kubernetes 资源模板
  6. │   ├── deployment.yaml # Deployment 模板
  7. │   ├── service.yaml    # Service 模板
  8. │   ├── ingress.yaml    # Ingress 模板
  9. │   ├── _helpers.tpl    # 模板助手函数
  10. │   └── NOTES.txt       # 安装后的提示信息
  11. └── templates/tests/    # 测试文件
  12.     └── test-connection.yaml
复制代码
2. 主要文件和目次详解

2.1 Chart.yaml

Chart.yaml 文件包含了 Chart 的基本信息,如名称、版本、描述等。
  1. apiVersion: v2
  2. name: mychart
  3. version: 0.1.0
  4. description: A Helm chart for Kubernetes
  5. type: application
  6. keywords:
  7.   - example
  8. home: https://example.com
  9. sources:
  10.   - https://github.com/example/mychart
  11. maintainers:
  12.   - name: John Doe
  13.     email: john.doe@example.com
  14. dependencies:
  15.   - name: postgresql
  16.     version: "10.9.4"
  17.     repository: "https://charts.helm.sh/stable"
复制代码
2.2 values.yaml

values.yaml 文件包含了 Chart 的默认配置值,这些值可以在安装或升级 Chart 时被覆盖。
  1. replicaCount: 1
  2. image:
  3.   repository: nginx
  4.   tag: "1.16.0"
  5.   pullPolicy: IfNotPresent
  6. service:
  7.   type: ClusterIP
  8.   port: 80
  9. ingress:
  10.   enabled: false
  11.   annotations: {}
  12.   hosts:
  13.     - host: chart-example.local
  14.       paths:
  15.         - /
  16.   tls: []
复制代码
2.3 charts/

charts/ 目次包含了当前 Chart 依赖的其他 Chart。Helm 会自动剖析这些依赖并在安装时一并处理惩罚。
  1. charts/
  2. ├── postgresql/
  3. │   ├── Chart.yaml
  4. │   ├── values.yaml
  5. │   ├── templates/
  6. │   └── ...
  7. └── redis/
  8.     ├── Chart.yaml
  9.     ├── values.yaml
  10.     ├── templates/
  11.     └── ...
复制代码
2.4 templates/

templates/ 目次包含了 Kubernetes 资源模板文件。这些模板文件使用 Go 模板语言编写,并根据 values.yaml 中的值动态生成 Kubernetes 资源配置。


  • deployment.yaml: 界说 Deployment 资源。
  • service.yaml: 界说 Service 资源。
  • ingress.yaml: 界说 Ingress 资源。
  • _helpers.tpl: 包含模板助手函数,用于在多个模板文件中复用代码。
  • NOTES.txt: 安装后显示的提示信息。
2.5 templates/tests/

templates/tests/ 目次包含测试文件,用于验证 Chart 的安装是否成功。
  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4.   name: "{{ .Release.Name }}-test-connection"
  5.   labels:
  6.     helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
  7.     app.kubernetes.io/name: "{{ .Values.name }}"
  8.     app.kubernetes.io/instance: "{{ .Release.Name }}"
  9.   annotations:
  10.     "helm.sh/hook": test
  11. spec:
  12.   containers:
  13.     - name: wget
  14.       image: busybox
  15.       command: ['wget']
  16.       args: ['{{ .Release.Name }}:{{ .Values.service.port }}']
  17.   restartPolicy: Never
复制代码
3. 常用命令



  • helm create <chart-name>: 创建一个新的 Chart。
  • helm install <release-name> <chart-name>: 安装一个 Chart。
  • helm upgrade <release-name> <chart-name>: 升级一个已安装的 Chart。
  • helm template <chart-name>: 渲染 Chart 模板并输出 Kubernetes 资源配置。
  • helm lint <chart-name>: 查抄 Chart 的语法和布局是否正确。
4. 模板语法示例

在 templates/ 目次中的文件可以使用 Go 模板语言来动态生成 Kubernetes 资源配置。以下是一个简单的 deployment.yaml 示例:
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.   name: {{ .Release.Name }}-deployment
  5.   labels:
  6.     app: {{ .Values.name }}
  7. spec:
  8.   replicas: {{ .Values.replicaCount }}
  9.   selector:
  10.     matchLabels:
  11.       app: {{ .Values.name }}
  12.   template:
  13.     metadata:
  14.       labels:
  15.         app: {{ .Values.name }}
  16.     spec:
  17.       containers:
  18.         - name: {{ .Values.name }}
  19.           image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
  20.           imagePullPolicy: {{ .Values.image.pullPolicy }}
  21.           ports:
  22.             - containerPort: {{ .Values.service.port }}
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

郭卫东

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表