Kubernetes - 实战:自己创建一个Helm Chart

创建一个自定义的Helm Chart主要包括以下几个步骤:

1. 初始化Chart模板

使用helm create命令创建一个新的Chart模板:

helm create my-chart

这将在当前目录下创建一个名为my-chart的目录,里面包含了标准的Chart结构和基础模板文件。

2. 查看Chart目录结构

打开创建的my-chart目录,你会看到类似以下的目录结构:

my-chart/
|-- charts/      # 存放依赖的其他Chart
|-- templates/   # 包含YAML manifests的模板文件
|   |-- _helpers.tpl  # 辅助函数文件
|   |-- deployment.yaml
|   |-- ingress.yaml
|   |-- service.yaml
|   |-- NOTES.txt
|-- Chart.yaml   # Chart的元数据描述文件
|-- values.yaml  # 默认配置值

3. 修改Chart.yaml

编辑Chart.yaml文件,提供Chart的基本信息,例如:

apiVersion: v2
name: my-chart
description: A sample Helm chart for deploying my application to Kubernetes
type: application
version: 0.1.0
appVersion: 1.0.0
dependencies: [] # 如果有依赖的其他Charts,这里列出它们

4. 编辑values.yaml

values.yaml文件包含了Chart的默认配置值。例如,你可以在这里配置应用的镜像版本、端口号、环境变量等:

replicaCount: 1
image:
  repository: myregistry/myapp
  tag: 1.0.0
  pullPolicy: IfNotPresent
service:
  type: ClusterIP
  port: 80

5. 编写模板文件

templates/目录下,编辑或新增YAML模板文件。这些文件使用Go模板语法,将values.yaml中的值插入到Kubernetes资源定义中。例如,deployment.yaml可能是这样的:

{{- $fullName := include "my-chart.fullname" . -}}
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ $fullName }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app.kubernetes.io/name: {{ include "my-chart.name" . }}
      app.kubernetes.io/instance: {{ .Release.Name }}
  template:
    metadata:
      labels:
        app.kubernetes.io/name: {{ include "my-chart.name" . }}
        app.kubernetes.io/instance: {{ .Release.Name }}
    spec:
      containers:
      - name: {{ .Chart.Name }}
        image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
        ports:
        - containerPort: {{ .Values.service.port }}

6. 测试和打包Chart

在本地测试Chart:

helm install my-release . --dry-run --debug

或者打包Chart以便分发:

helm package my-chart

这将生成一个.tgz格式的Helm包,可以上传到Helm仓库中,供他人下载和安装。

7. 安装Chart

在测试和验证完成后,可以将Chart安装到Kubernetes集群:

helm install my-release ./my-chart-0.1.0.tgz

以上就是创建一个基本Helm Chart的实战过程。在实际开发中,可能还需要根据应用需求定制更多的模板文件,如ConfigMap、Secret、ServiceAccount等,并完善Chart的README文档和NOTES.txt,以便使用者更好地理解Chart的用途和配置方式。

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值