【Helm 及 Chart 快速入门】03、Chart 基本介绍

目录

一、Chart 基本介绍

1.1 什么是 Chart 

1.2 Chart ⽬录结构 

1.3 Chart.yaml ⽂件 

二、创建不可配置 Chart 

2.1 创建 Chart 

2.2 安装 Chart 

三、创建可配置的 Chart 

3.1 修改 chart 

3.2 安装 Chart 


 

一、Chart 基本介绍

1.1 什么是 Chart 

        Helm 部署的应⽤都是以 "chart" 包的形式存在的。每个 "chart" 包含了应⽤所有所需要的清单⽂件(诸如 Deployment、Service、Ingress、ConfigMap 等)。这些清单⽂件被保存为模板⽂件。当我们部署应⽤时,这些模板⽂件会被转化为 Kubernetes 资源清单⽂件。 

1.2 Chart ⽬录结构 

        Helm Chart 的⽬录结构是预先定义好的。⽽每个 Chart 都应该⾄少包含 Chart.yaml ⽂件和 templates ⽬录。 

[root@k8s-master1 ~]# helm create app[root@k8s-master1 ~]# tree app
app
├── charts                            # 其他 Chart 的依赖,存储于此⽬录下。
├── Chart.yaml                        # 包含了关于这个 Chart 的基本信息,⽐如chart名称、chart版本、描述等。
├── templates                         # 这个⽬录包含了⼀系列的模板⽂件,当与 values ⽂件结合时,将⽣成有效的 Kubernetes 清单⽂件
│   ├── deployment.yaml
│   ├── _helpers.tpl                  # 公共模板⽂件,⽤于定义 chart 中重复使⽤的模板函数和变量,以便 charts 在其他模板⽂件中使⽤,减少重复的代码并提⾼代码的可维护性。
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── NOTES.txt                     # 安装 chart 应⽤后⾃动返回对应的 chart 使⽤信息(需要⾃⾏定制)
│   ├── serviceaccount.yaml
│   ├── service.yaml
│   └── tests
│       └── test-connection.yaml
└── values.yaml                       # 为模板提供对应的配置信息

1.3 Chart.yaml ⽂件 

对于 chart 包来说 Chart.yaml 这个⽂件是必须的,它包含下⾯的这些字段: 

apiVersion: v2                      # chart API 版本 (必须)
name: app                           # chart 包名称
version: 0.1.1                      # chart 包的版本,最终 chart 的包名称为 app-0.1.1.tgz
appVersion: 5.7.30                  # 应⽤的版本,例如:该 chart 中使⽤的 nginx,那么 nginx 是 1.18镜像,那么这⾥就可以写 1.18,便于区分应⽤的版本
description: Web Server             # chart的描述信息
home:                               # 当前项⽬的 URL (可选) 例如:https://www.mysql.com/
icon:                               # 当前 chart 的图标 URL (可选) 例如:https://www.mysql.com/common/logos/logo-mysql-170x115.png
keywords:                           # 当前 chart 的关键字集合 (可选) 例如:mysql、database、sql
sources:                            # 当前项⽬源码 URL (可选) 例如:https://github.com/docker-library/mysql
deprecated: true                    # chart 是否已被弃⽤ (可选)
dependencies:                       # 该 chart 依赖的其他 chart 列表(可选),如果定义了 chart 的依赖,可以执⾏ helm dependency update 更新并获取对应的 chart包- name:                           # 依赖的 chart 的名称,例如:nginxversion:                        # 依赖的 chart 的版本,例如:15.1.2repository:                     # 依赖的 chart 所在的仓库地址:例如:https://charts.bitnami.com/bitnamimaintainers:                        # 维护者信息(可选)- name: skywechat: sk6email:

二、创建不可配置 Chart 

2.1 创建 Chart 

1、创建 chart ⽬录结构 

[root@k8s-master1 ~]# mkdir -p /helm/nginx/templates

2、编写 Chart.yaml ⽂件 

[root@k8s-master1 ~]# cd /helm/nginx/
[root@k8s-master1 /helm/nginx]# vim Chart.yaml
apiVersion: v2
name: nginx-app
version: 1.0.0
appVersion: "1.20"
description: A Helm Chart Nginx

3、在 templates ⽬标中新建⼀个 deployment.yaml 清单⽂件 

[root@k8s-master1 /helm/nginx]# vim templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploy-helm
spec:replicas: 1selector:matchLabels:app: webtemplate:metadata:labels:app: webspec:containers:- name: nginximage: nginx:1.20imagePullPolicy: IfNotPresentports:- containerPort: 80

4、在 templates ⽬标中新建⼀个 service.yaml 清单⽂件 

[root@k8s-master1 /helm/nginx]# vim templates/service.yaml
apiVersion: v1
kind: Service
metadata:name: nginx-svc-helm
spec:selector:app: webports:- port: 80targetPort: 80

2.2 安装 Chart 

1、部署编写的 chart 应⽤ 

指定 nginx 目录

[root@k8s-master1 /helm]# pwd
/helm
[root@k8s-master1 /helm]# helm install nginx-01 ./nginx/

2、检查 chart 应⽤是否部署成功

[root@k8s-master1 /helm]# helm ls
NAME            	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART          	APP VERSION
mysql-02        	default  	3       	2024-01-09 15:39:00.15500261 +0800 CST 	deployed	mysql-1.6.9    	5.7.30     
mysql-1704769258	default  	2       	2024-01-09 11:10:02.471047838 +0800 CST	deployed	mysql-1.6.9    	5.7.30     
nginx-01        	default  	1       	2024-01-10 14:47:35.85594287 +0800 CST 	deployed	nginx-app-1.0.0	1.20[root@k8s-master1 /helm]# kubectl get pods -o wide 
NAME                                 READY   STATUS    RESTARTS       AGE    IP               NODE        NOMINATED NODE   READINESS GATES
busybox                              1/1     Running   52 (41m ago)   2d4h   10.244.169.130   k8s-node2   <none>           <none>
mysql-02-7d858fbb95-pfkv9            1/1     Running   0              23h    10.244.36.68     k8s-node1   <none>           <none>
mysql-1704769258-b9db9dcd9-wl8c5     1/1     Running   0              27h    10.244.169.132   k8s-node2   <none>           <none>
nfs-provisioner-564c9cfbf6-j8dwn     1/1     Running   0              28h    10.244.36.65     k8s-node1   <none>           <none>
nginx-deploy-helm-7576995bbf-rzhk8   1/1     Running   0              87s    10.244.169.133   k8s-node2   <none>           <none>

3、测试是否能正常访问到对应的应⽤ 

[root@k8s-master1 /helm]# curl 10.244.169.133 

三、创建可配置的 Chart 

3.1 修改 chart 

1、为之前的 chart 添加 values.yaml ⽂件,然后定义对应的属性。 

[root@k8s-master1 /helm]# vim nginx/values.yaml
replicas: 2
labels: web
image:name: nginxtags: "1.20"pullpolicy: {}
container_port: 80

2、修改 deployment.yaml 清单⽂件,然后引⽤ values 的配置 

[root@k8s-master1 /helm]# vim nginx/templates/deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploy-helm
spec:replicas: {{ .Values.replicas }}selector:matchLabels:app: {{ .Values.labels }}template:metadata:labels:app: {{ .Values.labels }}spec:containers:- name: nginximage: {{ .Values.image.name }}:{{ .Values.image.tags }}imagePullPolicy: {{ .Values.image.pullpolicy | default "IfNotPresent" }}    # 如果value 文件中 image.pullpolicy 为空或者没有设置,则默认给定⼀个 IfNotPresentports:- containerPort: {{ .Values.container_port }}

3、通过 helm template 命令,将模板和配置⽂件结合起来渲染成真正的部署清单 

此命令主要用于测试你写的文件是否错误,并不是真正的部署应用。

[root@k8s-master1 /helm]# helm template ./nginx

3.2 安装 Chart 

[root@k8s-master1 /helm]# helm install nginx-02 ./nginx/

上一篇文章:【Helm 及 Chart 快速入门】02、Helm 基本使用-CSDN博客 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/338869.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ncast盈可视 高清智能录播系统 IPSetup.php信息泄露+RCE漏洞复现(CVE-2024-0305)

0x01 产品简介 Ncast盈可视 高清智能录播系统是广州盈可视电子科技有限公司一种先进的音视频录制和播放解决方案,旨在提供高质量、高清定制的录播体验。该系统采用先进的摄像和音频技术,结合强大的软件平台,可以实现高清视频录制、多路音频采集、实时切换和混音、定制视频分…

机器视觉检测设备在连接器外观缺陷检测中的应用

作为传输电流或信号连接两个有源器件的器件&#xff0c;连接器被广泛应用于各个行业&#xff0c;从手机、平板、电脑&#xff0c;到冰箱、空调、洗衣机&#xff0c;再到汽车、国防、航空&#xff0c;处处是它的所在。每个电子产品少了连接器将无法运作&#xff0c;因此&#xf…

Qt 6之六:Qt Designer介绍

Qt 6之六&#xff1a;Qt Designer介绍 Qt Designer是一个可视化的用户界面设计工具&#xff0c;用于创建Qt应用程序的用户界面&#xff0c;允许开发人员通过拖放和布局来设计和创建GUI界面。 Qt 6之一&#xff1a;简介、安装与简单使用 https://blog.csdn.net/cnds123/articl…

软件测试|Python openpyxl库使用指南

简介 我们之前介绍过&#xff0c;python在自动化办公方面可以大放异彩&#xff0c;因为Python有许多的第三方库&#xff0c;其中有很多库就支持我们对office软件进行操作&#xff0c;熟练的使用Python对office进行操作&#xff0c;可以实现自动化办公&#xff0c;极大提升我们…

计算机二级WPS Office考试须知、如何备考、备考建议

本文从计算机二级考试须知、如何备考、备考建议以及考试的注意事项等方面进行讲述&#xff0c;认认真真看&#xff0c;对你受益匪浅。 一、计算机二级考试须知 2021年3月27日至29日将举办第60次全国计算机等级考试&#xff08;NCRE&#xff09;&#xff0c;从今年起&#xff0…

Python-12-正则

当然内容不是很全&#xff0c;可以参考: 正则表达式学习资料 https://blog.csdn.net/weixin_40907382/article/details/79654372

42 智能指针 auto_ptr, unique_ptr,shared_ptr,weak_ptr 整理

都是类模版 都不用开发者自己delete 指针。这是因为智能指针有自己管理指向对象的能力&#xff0c;包括释放指向的内存&#xff0c;因此开发者不要自己释放。 auto_ptr, &#xff08;废弃&#xff09;C98 已经被弃用&#xff0c;替代方案是unique_ptr. 被弃用的原因: 1.不能…

[足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-3(2) 刚体的位形 Configuration of Rigid Body

本文仅供学习使用&#xff0c;总结很多本现有讲述运动学或动力学书籍后的总结&#xff0c;从矢量的角度进行分析&#xff0c;方法比较传统&#xff0c;但更易理解&#xff0c;并且现有的看似抽象方法&#xff0c;两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有…

TypeScript进阶(三)类型演算与高级内置类型

✨ 专栏介绍 TypeScript是一种由微软开发的开源编程语言&#xff0c;它是JavaScript的超集&#xff0c;意味着任何有效的JavaScript代码都是有效的TypeScript代码。TypeScript通过添加静态类型和其他特性来增强JavaScript&#xff0c;使其更适合大型项目和团队开发。 在TypeS…

最实用的 8 个免费 Android 数据恢复软件

如果您正在寻找最好的免费 Android 数据恢复软件&#xff0c;那就不用再犹豫了&#xff0c;因为我已经列出了最好的软件。不可否认&#xff0c;智能手机和平板电脑等 Android 设备正在与技术一起发展。与以前相比&#xff0c;它们也更加融入了我们的日常生活。 Android 智能手…

跟着小德学C++之进程信息记录

嗨&#xff0c;大家好&#xff0c;我是出生在达纳苏斯的一名德鲁伊&#xff0c;我是要立志成为海贼王&#xff0c;啊不&#xff0c;是立志成为科学家的德鲁伊。最近&#xff0c;我发现我们所处的世界是一个虚拟的世界&#xff0c;并由此开始&#xff0c;我展开了对我们这个世界…

掌握Java Future模式及其灵活应用

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;今天咱们来聊聊Future。咱们程序员在日常工作中&#xff0c;肯定都遇到过需要处理耗时任务的情况&#xff0c;特别是在Java领域。比如说&#xff0c;小黑要从网络上下载数据&#xff0c;或者要执行一个计算密集型…