helm chart描述

本文详细介绍了 Helm Chart 的结构及其在 Kubernetes 中的应用。包括 Chart.yaml 的配置、依赖管理、模板文件的使用以及如何创建、部署和管理 Chart。同时,讲解了如何设置本地 Repository 并将 Chart 入仓。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

helm chart 结构

examples/包名称
chart.yaml yaml 描述chart 基本信息,包含表名称版本等
license 版本
readme,md 当前chart的介绍
values.yaml chart 默认配置文件
requirements.yaml 当前chart 依赖的其它chart包
charts 当前chart 依赖的其它chart
templates/部署文件模板目录,模板使用的值来自values.yaml
templates/NOTES.txt 使用指南

1.charts.xml
name:名称 *
version : chart 版本号 必须符合semver 2 **
description: 描述
keywords: 关键字列表
home: 项目地址
sources: 当前chart 下载地址列表
maintainers: #可选
name: 名称 *
email
engine : gotpl 模板银镜 默认是gotpl
icon:一个图地址
带* * 的 全部要写

依赖配置文件 requirements.yaml
dependencies:
--name: nginx
  version:1.2.3
  repository:http://xxxxxx本地仓地址

–name :mysql
version: 版本
repository:仓库地址
支持两种方式,可以使用requirements.yaml 或者直接将依赖包放在charts中

创建chart
例:创建一个项目基础环境chart 依赖mysql nfs
storageclass mino 等
helm create basic-environment
$ tree basic-enviroment
basic-enviroment
├── Chart.yaml #Chart本身的版本和配置信息
├── charts #依赖的chart
├── templates #配置模板目录
│ ├── NOTES.txt #helm提示信息
│ ├── _helpers.tpl #用于修改kubernetes objcet配置的模板
│ ├── deployment.yaml #kubernetes Deployment object
│ └── service.yaml #kubernetes Serivce
└── values.yaml #kubernetes object configuration

Templates目录下是yaml文件的模板
deployment.yaml文件的内容
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {{ template “fullname” . }}
labels:
chart: “{{ .Chart.Name }}-{{ .Chart.Version | replace “+” “_” }}”
spec:
replicas: {{ .Values.replicaCount }}
template:
metadata:
labels:
app: {{ template “fullname” . }}
spec:
containers:
- name: {{ .Chart.Name }}
image: “{{ .Values.image.repository }}:{{ .Values.image.tag }}”
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- containerPort: {{ .Values.service.internalPort }}
livenessProbe:
httpGet:
path: /
port: {{ .Values.service.internalPort }}
readinessProbe:
httpGet:
path: /
port: {{ .Values.service.internalPort }}
resources:
{{ toyaml .Values.resources | indent 12 }}

双大括号包扩起来的部分是Go template,其中的Values是在values.yaml文件中定义的:

values 文件定义值
#Default values for mychart.
#This is a yaml-formatted file.
#Declare variables to be passed into your templates.

replicaCount: 1
image:
repository: nginx
tag: stable
pullPolicy: IfNotPresent
service:
name: nginx
type: ClusterIP
externalPort: 80
internalPort: 80
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
验证自己打包的chart 是否生效
helm install --dry-run --debug <chart_dir>
生成将数据渲染到模板的文件

部署
在打的包下面运行
helm install . 将项目部署到k8上
helm list 查看部署的版本
helm delete 删除版本
helm package . 打包版本
helm search mychart 查找chart
helm repo list 查看配置的仓库信息
注:新版本中执行 helm init 命令后默认会配置一个名为 local 的本地仓库。
入仓
我们可以在本地启动一个 Repository Server,并将其加入到 Helm Repo 列表中。Helm Repository 必须以 Web 服务的方式提供,这里我们就使用 helm serve 命令启动一个 Repository Server,该 Server 缺省使用 $HOME/.helm/repository/local 目录作为 Chart 存储,并在 8879 端口上提供服务。

$ helm serve &
Now serving you on 127.0.0.1:8879
默认情况下该服务只监听 127.0.0.1,如果你要绑定到其它网络接口,可使用以下命令:

$ helm serve --address 192.168.100.211:8879 &
如果你想使用指定目录来做为 Helm Repository 的存储目录,可以加上 --repo-path 参数:

$ helm serve --address 192.168.100.211:8879 --repo-path /data/helm/repository/ --url http://192.168.100.211:8879/charts/
通过 helm repo index 命令将 Chart 的 Metadata 记录更新在 index.yaml 文件中:

#更新 Helm Repository 的索引文件
$ cd /home/k8s/.helm/repository/local
$ helm repo index --url=http://192.168.100.211:8879 .
完成启动本地 Helm Repository Server 后,就可以将本地 Repository 加入 Helm 的 Repo 列表。

$ helm repo add local http://127.0.0.1:8879
“local” has been added to your repositories
现在再次查找 mychart 包,就可以搜索到了。

$ helm repo update
$ helm search mychart
NAME CHART VERSION APP VERSION DESCRIPTION
local/mychart 0.1.0 1.0 A Helm chart for Kubernetes
依赖
我们可以在requirement.yaml中定义应用所依赖的chart,例如定义对mariadb的依赖:

dependencies:

  • name: mariadb
    version: 0.6.0
    repository: https://kubernetes-charts.storage.googleapis.com
    使用helm lint .命令可以检查依赖和模板配置是否正确。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值