【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 的名称,例如:nginx
    version:                        # 依赖的 chart 的版本,例如:15.1.2
    repository:                     # 依赖的 chart 所在的仓库地址:例如:https://charts.bitnami.com/bitnami

maintainers:                        # 维护者信息(可选)
  - name: sky
    wechat: sk6
    email:

二、创建不可配置 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: 1
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: nginx
        image: nginx:1.20
        imagePullPolicy: IfNotPresent
        ports:
        - 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: web
  ports:
  - port: 80
    targetPort: 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: nginx
  tags: "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: nginx
        image: {{ .Values.image.name }}:{{ .Values.image.tags }}
        imagePullPolicy: {{ .Values.image.pullpolicy | default "IfNotPresent" }}    # 如果value 文件中 image.pullpolicy 为空或者没有设置,则默认给定⼀个 IfNotPresent
        ports:
        - 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博客 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

List列表操作中的坑

使用 Arrays.asList 把数据转换为 List 的三个坑 在如下代码中&#xff0c;我们初始化三个数字的 int[]数组&#xff0c;然后使用 Arrays.asList 把数组转换为 List&#xff1a; int[] arr {1, 2, 3}; List list Arrays.asList(arr); log.info("list:{} size:{} class…

每天刷两道题——第十二天+第十三天

1.1合并区间 以数组 i n t e r v a l s intervals intervals 表示若干个区间的集合&#xff0c;其中单个区间为 i n t e r v a l s [ i ] [ s t a r t i , e n d i ] intervals[i] [starti, endi] intervals[i][starti,endi] 。请你合并所有重叠的区间&#xff0c;并返回 …

Visual Studio Code 连接远程服务器方法

1、输入用户名和服务器ip连接远程服务器 2、选择配置文件 配置文件路径&#xff1a;C:\Users\Administrator\.ssh\config config的内容大致如下&#xff1a; Host 192.168.134.3HostName 192.168.134.3User zhangshanHost 192.168.134.3HostName 192.168.134.3User lisiHost…

基础篇_快速入门(Java简介,安装JDK,cmd命令行运行Java文件产生乱码问题的解决方式,IDE工具,实用工具)

文章目录 一. Java 简介1. JVM2. JRE3. JDK 二. 安装 JDK1. 下载和安装2. 配置 Path3. 配置 JAVA_HOME&#xff08;选讲&#xff09;优化 三. 入门案例1. 第一行代码1) jshell2) 代码解读总结 3) 为何要分成对象与方法 2. 第一份源码1) 源码结构2) 编写 java 源代码3) 编译 jav…

聊一聊 C# 线程切换后上下文都去了哪里

一&#xff1a;背景 1. 讲故事 总会有一些朋友问一个问题&#xff0c;在 Windows 中线程做了上下文切换&#xff0c;请问被切的线程他的寄存器上下文都去了哪里&#xff1f;能不能给我挖出来&#xff1f;这个问题其实比较底层&#xff0c;如果对操作系统没有个体系层面的理解…

groovy XmlParser 递归遍历 xml 文件,修改并保存

使用 groovy.util.XmlParser 解析 xml 文件&#xff0c;对文件进行修改&#xff08;新增标签&#xff09;&#xff0c;然后保存。 是不是 XmlParser 没有提供方法遍历每个节点&#xff0c;难道要自己写&#xff1f; 什么是递归&#xff1f; 不用说&#xff0c;想必都懂得~ …

基于Pixhawk和ROS搭建自主无人车(一):底盘控制篇

参考 ArduPilot Development超维空间科技乐迪MiniPix车船使用说明书 1. 硬件篇 1.1 底盘构成一览 1.2 底盘接线示意 2. 软件篇 2.1 APM 固件下载 pixhawk 是硬件平台&#xff0c;PX4 是 pixhawk 的原生固件&#xff0c;APM&#xff08;Ardupilot Mega&#xff09;是硬件平台…

C++里main函数int main(int argc, char **argv)

C里main函数int main(int argc, char **argv), 这两个参数argc和argv分别是什么

安全帽/反光衣检测AI智能分析网关V4如何查看告警信息并进行处理?

智能分析网关V4属于高性能、低功耗的软硬一体AI边缘计算硬件设备&#xff0c;目前拥有3种型号&#xff08;8路/16路/32路&#xff09;&#xff0c;支持Caffe / DarkNet / TensorFlow / PyTorch / MXNet / ONNX / PaddlePaddle等主流深度学习框架。硬件内部署了近40种AI算法模型…

9个icon图标网站,海量免费矢量图标库!

​划到最后“阅读原文”——领取工具包&#xff08;超过1000工具&#xff0c;免费素材网站分享和行业报告&#xff09; Hi&#xff0c;我是胡猛夫~&#xff0c;专注于分享各类价值网站、高效工具&#xff01; 更多内容&#xff0c;更多资源&#xff0c;欢迎交流&#xff01;公…

MacOS安装Miniforge、Tensorflow、Jupyter Lab等(2024年最新)

大家好&#xff0c;我是邵奈一&#xff0c;一个不务正业的程序猿、正儿八经的斜杠青年。 1、世人称我为&#xff1a;被代码耽误的诗人、没天赋的书法家、五音不全的歌手、专业跑龙套演员、不合格的运动员… 2、这几年&#xff0c;我整理了很多IT技术相关的教程给大家&#xff0…

应用案例 | 基于三维机器视觉的自动化无序分拣解决方案

​ 近年来&#xff0c;电商行业蓬勃发展&#xff0c;订单的海量化、订单类型的碎片化&#xff0c;使物流行业朝着“多品种、无边界、分类广”的方向迅速发展。根据许多研究机构的预测&#xff0c;电子商务销售额预计将以每年两位数的速度增长&#xff0c;推动整个行业的规模不…

【排序】快速排序(C语言实现)

文章目录 前言1. Hoare思想2. 挖坑法3. 前后指针法4. 三路划分5. 快速排序的一些小优化5.1 三数取中常规的三数取中伪随机的三数取中 5.2 小区间优化 6. 非递归版本的快排7. 快速排序的特性总结 前言 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&#xff0c;其…

Leetcode 416 分割等和子集

题意理解&#xff1a; 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 即将数组的元素分成两组&#xff0c;每组数值sum(nums)/2 若能分成这样的两组&#xff0c;则返回true,否则返回false 本质上…

国标28181平台的手机视频监控客户端的电子地图功能对比

目 录 一、手机客户端 1、概述 2、具体功能简述 二、电子地图功能 1、经纬度定位 2、附近设备 3、实时浏览功能 4、录像回放 5、缩放功能 三、手机web客户端和CS客户端上的电子地图功能对比 1、对比表 2、测距&#xff08;PC客户端功能&#xff09; 3…

【分布式技术】rsync远程同步服务

目录 一、rsync&#xff08;远程同步&#xff09; 二、实操rsync远程文件同步 准备一个服务端192.168.20.18以及一个客户端192.168.20.30 1、服务端搭建&#xff1a;先完成服务端配置&#xff0c;启动服务 rsync拓展 1、关于rsyncd服务的端口号 2、rsync和scp的区别 2、测…

在qemu虚拟机环境下,使用kgdb调试kernel

enable kgdb的情况下&#xff0c;使用qemu启动kernel 1&#xff0c;需要先在内核配置中增加kgdb的支持 2&#xff0c;启动qemu虚拟机时&#xff0c;增加参数-s -S&#xff0c;这两个参数会使得kernel在启动之后遇到的第一个指令等待gdb连接 例子&#xff1a; /qemu-project…

爬虫之牛刀小试(三):爬取中国天气网全国天气

天气网&#xff1a; import requests from bs4 import BeautifulSoup import time from pyecharts.charts import Bar from pyecharts import options as optsurl_hb http://www.weather.com.cn/textFC/hb.shtml url_db http://www.weather.com.cn/textFC/db.shtml url_hd …

RocketMQ Dashboard可视化工具

RocketMQ Dashboard 将 RocketMQ的相关指标展示在web页面 &#xff0c;支持以可视化工具代替 Topic 配置、Broker 管理等命令行操作。 官方文档地址&#xff1a;RocketMQ Dashboard | RocketMQ 目录 1.下载安装 1.1 系统要求&#xff1a; 1.2 源码安装 1.3 访问页面 2.功…

微信小程序地图展示区轮廓+展示指定地区标点气泡

需求&#xff1a;显示当前地区所有的学校列表&#xff1a;名称。区域显示区域名称下面所属学校数量 根据用户缩小放大当前区域&#xff08;大于12显示区&#xff0c;小于12显示当前区学校列表&#xff09;&#xff0c;获取&#xff1a;regionchange的type&#xff1a;end数据&…