在 Helm 中,Chart 是一个用于界说、安装和升级 Kubernetes 应用步伐的包。Chart 文件布局遵照一定的目次和文件构造方式,以下是典型的 Helm Chart 文件布局:
1. Chart 文件布局示例
- mychart/
- ├── Chart.yaml # 描述 Chart 的基本信息
- ├── values.yaml # 默认配置值
- ├── charts/ # 依赖的其他 Chart
- ├── templates/ # Kubernetes 资源模板
- │ ├── deployment.yaml # Deployment 模板
- │ ├── service.yaml # Service 模板
- │ ├── ingress.yaml # Ingress 模板
- │ ├── _helpers.tpl # 模板助手函数
- │ └── NOTES.txt # 安装后的提示信息
- └── templates/tests/ # 测试文件
- └── test-connection.yaml
复制代码 2. 主要文件和目次详解
2.1 Chart.yaml
Chart.yaml 文件包含了 Chart 的基本信息,如名称、版本、描述等。
- apiVersion: v2
- name: mychart
- version: 0.1.0
- description: A Helm chart for Kubernetes
- type: application
- keywords:
- - example
- home: https://example.com
- sources:
- - https://github.com/example/mychart
- maintainers:
- - name: John Doe
- email: john.doe@example.com
- dependencies:
- - name: postgresql
- version: "10.9.4"
- repository: "https://charts.helm.sh/stable"
复制代码 2.2 values.yaml
values.yaml 文件包含了 Chart 的默认配置值,这些值可以在安装或升级 Chart 时被覆盖。
- replicaCount: 1
- image:
- repository: nginx
- tag: "1.16.0"
- pullPolicy: IfNotPresent
- service:
- type: ClusterIP
- port: 80
- ingress:
- enabled: false
- annotations: {}
- hosts:
- - host: chart-example.local
- paths:
- - /
- tls: []
复制代码 2.3 charts/
charts/ 目次包含了当前 Chart 依赖的其他 Chart。Helm 会自动剖析这些依赖并在安装时一并处理惩罚。
- charts/
- ├── postgresql/
- │ ├── Chart.yaml
- │ ├── values.yaml
- │ ├── templates/
- │ └── ...
- └── redis/
- ├── Chart.yaml
- ├── values.yaml
- ├── templates/
- └── ...
复制代码 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 的安装是否成功。
- apiVersion: v1
- kind: Pod
- metadata:
- name: "{{ .Release.Name }}-test-connection"
- labels:
- helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
- app.kubernetes.io/name: "{{ .Values.name }}"
- app.kubernetes.io/instance: "{{ .Release.Name }}"
- annotations:
- "helm.sh/hook": test
- spec:
- containers:
- - name: wget
- image: busybox
- command: ['wget']
- args: ['{{ .Release.Name }}:{{ .Values.service.port }}']
- 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 示例:
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- name: {{ .Release.Name }}-deployment
- labels:
- app: {{ .Values.name }}
- spec:
- replicas: {{ .Values.replicaCount }}
- selector:
- matchLabels:
- app: {{ .Values.name }}
- template:
- metadata:
- labels:
- app: {{ .Values.name }}
- spec:
- containers:
- - name: {{ .Values.name }}
- image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
- imagePullPolicy: {{ .Values.image.pullPolicy }}
- ports:
- - containerPort: {{ .Values.service.port }}
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |