当前位置: 首页 > news >正文

helm 模板的基础使用

1、Helm Chart 目录结构

mychart/
├── Chart.yaml                   # 存放该Chart的基本信息
├── values.yaml                  # 存放参数值
├── charts/                      # 存放该Chart依赖的其他子Chart
├── templates/                   # 存放模板文件
│   ├── deployment.yaml          # 资源模板
│   ├── service.yaml             # 资源模板
│   ├── ingress.yaml             # 资源模板
│   ├── _helpers.tpl             # 存放自定义模板
│   └── NOTES.txt                # 安装完成后在终端显示的提示信息
├── crds/                        # 自定义资源模板
└── .helmignore                  # 指定哪些文件在打包Chart (helm package)时应被忽略

2、templates的基本使用

[root@master-11 mychart]# mkdir templates
[root@master-11 mychart]# touch Chart.yaml
[root@master-11 mychart]# touch values.yaml
[root@master-11 mychart]# tree .
.
├── Chart.yaml
├── templates
│   └── deployment.yaml
└── values.yaml# 再找一个nginx的deployment的创建文件
[root@master-11 mychart]# cat ./templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:creationTimestamp: nulllabels:app: nginxname: nginx
spec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- image: registry.cn-beijing.aliyuncs.com/xwk123/nginx:aaaname: nginx# 尝试安装
[root@master-11 mychart]# helm install nginx .
NAME: nginx
LAST DEPLOYED: Thu Oct  2 00:14:30 2025
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
[root@master-11 mychart]# kubectl get pods
NAME                     READY   STATUS             RESTARTS      AGE
nginx-867d96d6bb-cjlqt   1/1     Running            0             37s# 删除
[root@master-11 mychart]# helm uninstall nginx
release "nginx" uninstalled

3、Chart.yaml 与 values.yaml

# 先随便写一个Chart.yaml
[root@master-11 mychart]# cat Chart.yaml
apiVersion: v2
name: mychart
description: nginx
type: application
version: 0.1.0
appVersion: "1.0.0"# 编写values.yaml文件,将deployment中的变量全部写到values.yaml里面
[root@master-11 mychart]# cat values.yaml
replicas: 1
image:repository: registry.cn-beijing.aliyuncs.com/xwk123/nginxtag: aaa# 编写deployment文件,将里面的变量全部替换掉
[root@master-11 mychart]# cat ./templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:creationTimestamp: nulllabels:app: {{ .Chart.Name }}                  # .Chart.Name指的就是Chart.yaml文件里的name字段后对应的值mychartname: {{ .Chart.Name }}
spec:replicas: {{ .Values.replicas }}          # .Values.replicas指的就是values.yaml文件中replicas字段后对应的值1selector:matchLabels:app: {{ .Chart.Name }}template:metadata:labels:app: {{ .Chart.Name }}spec:containers:- image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"    # .Values.image.repository指的就是values.yaml文件中image字段下的tag所对应的值,和上面的差别就是多了一层image字段,使用方法还是一样的,这种组合需要添加双引号name: nginx# 查看渲染效果
[root@master-11 mychart]# helm template nginx .
---
# Source: mychart/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:creationTimestamp: nulllabels:app: mychartname: mychart
spec:replicas: 1selector:matchLabels:app: mycharttemplate:metadata:labels:app: mychartspec:containers:- image: "registry.cn-beijing.aliyuncs.com/xwk123/nginx:aaa"name: nginx# 再进行部署
[root@master-11 mychart]# helm install nginx .
NAME: nginx
LAST DEPLOYED: Thu Oct  2 00:40:29 2025
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
[root@master-11 mychart]# kubectl get pods
NAME                       READY   STATUS             RESTARTS      AGE
mychart-57d9dbd796-l64mk   1/1     Running            0             4s# service也是同理
[root@master-11 mychart]# cat values.yaml
replicas: 1
image:repository: registry.cn-beijing.aliyuncs.com/xwk123/nginxtag: aaanodePort: 30000         # 添加进去[root@master-11 mychart]# cat templates/service.yaml
apiVersion: v1
kind: Service
metadata:name: {{ .Chart.Name }}-svclabels:app: {{ .Chart.Name }}
spec:type: NodePortselector:app: {{ .Chart.Name }}ports:- port: 80targetPort: 80nodePort: {{ .Values.nodePort }}[root@master-11 mychart]# helm template nginx .
---
# Source: mychart/templates/service.yaml
apiVersion: v1
kind: Service
metadata:name: mychart-svclabels:app: mychart
spec:type: NodePortselector:app: mychartports:- port: 80targetPort: 80nodePort:
---
# Source: mychart/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:creationTimestamp: nulllabels:app: mychartname: mychart
spec:replicas: 1selector:matchLabels:app: mycharttemplate:metadata:labels:app: mychartspec:containers:- image: "registry.cn-beijing.aliyuncs.com/xwk123/nginx:aaa"name: nginx

4、NOTES.txt

# 随便瞎写一点东西到NOTES.txt里
[root@master-11 mychart]# cat ./templates/NOTES.txt
国亲节快乐
国亲节快乐
国亲节快乐
国亲节快乐
国亲节快乐
国亲节快乐
国亲节快乐# 安装
[root@master-11 mychart]# helm install nginx .
NAME: nginx
LAST DEPLOYED: Thu Oct  2 00:43:01 2025
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:                                 # 这个就是你NOTES.txt的内容了,他会在你安装的使用打印出来
国亲节快乐                  
国亲节快乐 
国亲节快乐
国亲节快乐
国亲节快乐
国亲节快乐
国亲节快乐

4、.helmignore

[root@master-11 harbor]# cat .helmignore    # 在此处添加文件的筛选,使用helm package时会将这些文件忽略掉
.github/*
docs/*
.git/*
.gitignore
CONTRIBUTING.md
http://www.hskmm.com/?act=detail&tid=26721

相关文章:

  • 20251008J赛合订本
  • [计算机组成] 计算机字体文件及其运行原理
  • 后量子密码技术延迟随数据量增加而降低
  • 2025 南昌装修公司最新推荐榜单:权威解析本土标杆与新锐品牌,助力品质家装决策南昌装修设计 / 南昌装修设计师公司推荐
  • 1000th post Problem 1
  • 下行经济周期,就应该做只能在下行周期里做的事情
  • 题解:AT_agc065_d [AGC065D] Not Intersect
  • uniapp滚动导航 - unique
  • 滚动导航 - unique
  • windows剪切板工具
  • P1545 [USACO04DEC] Dividing the Path G 题解
  • 视频采集程序
  • java作业2
  • 关于PPT的课后作业
  • RK 系列 GPU 驱动检查方法
  • 咕乡
  • Linux随记(十八) - 详解
  • week2课后作业
  • Java 语言程序设计(第二讲 方法)动手动脑与课后实验问题整理文档 - 20243867孙堃2405
  • 算法第一章
  • mac打开app提示文件损坏解决方案
  • QBXT2025S刷题 Day7题
  • 无需重新训练即可更新语音识别词汇
  • 深入解析:vscode中无法使用npm node
  • 第一次算法作业
  • AI元人文:新的评价与启示
  • Ai元人文:岐金兰回应
  • Why is English commonly used in scientific literature?
  • 第二次课程
  • 考研系列—操作系统:冲刺笔记(1-3章) - 指南