郭卫东 发表于 2024-12-23 10:01:23

chart文件布局

在 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企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: chart文件布局