@TOC
chart包
本次将创建两种chart包分别是可配置和不可配置chart包
可配置chart包和不可配置chart包在特性和使用场景上有显著区别。以下是两者的特点:
可配置chart包
特点
高度灵活: 用户可以通过各种参数和选项来自定义图表的外观和行为,包括颜色、样式、标注、轴标签等。
丰富的功能: 通常提供广泛的图表类型和高级特性,如交互式图表、动态数据更新、多维数据展示等。
复杂的API: 由于功能丰富,这类包的API可能较为复杂,需要用户花时间学习和理解。
适应性强: 适用于需要精细控制和自定义的场景,特别是需要符合品牌或设计标准的项目。示例
Matplotlib (Python): 提供极高的自定义能力,可以控制几乎所有图表元素。
D3.js (JavaScript): 非常灵活和强大,适用于创建复杂的交互式数据可视化。
Plotly (Python, JavaScript): 支持交互式图表,并提供丰富的配置选项。
不可配置chart包
特点
易于使用: API简单,通常提供默认的图表样式和设置,用户可以快速生成图表。
快速实现: 由于无需过多配置,生成图表的过程更快,适合快速展示数据。
有限的自定义: 提供的自定义选项较少,图表外观和行为更多依赖于包的默认设置。
适用性较窄: 适用于需要快速生成基本图表的场景,特别是无需复杂自定义的项目。示例
Seaborn (Python): 在Matplotlib基础上封装了默认的样式和主题,适合快速生成统计图表。
Google Charts (JavaScript): 提供一系列易于使用的图表,适合简单的可视化需求。
Chart.js (JavaScript): 虽然提供了一些自定义选项,但相较于D3.js等,更注重易用性和快速实现。
选择指南
如果项目需要高水平的定制和控制,应选择可配置chart包。
如果项目时间紧张或需求较为简单,应选择不可配置chart包,以便快速实现。
应用
环境
虚拟机
Ip | 主机名 | cpu | 内存 | 硬盘 |
---|---|---|---|---|
192.168.10.11 | master01 | 2cpu双核 | 4G | 100G |
192.168.10.12 | worker01 | 2cpu双核 | 4G | 100G |
192.168.10.13 | worker02 | 2cpu双核 | 4G | 100G |
版本 centos7.9
已部署k8s-1.27
一、安装helm客户端工具
具体命令解释请看,这里不再过多描述
链接: k8s学习--helm的详细解释及安装和常用命令
wget https://get.helm.sh/helm-v3.13.2-linux-amd64.tar.gz
tar xf helm-v3.13.2-linux-amd64.tar.gz
mv linux-amd64/helm /usr/bin/
helm version
helm repo add stable http://mirror.azure.cn/kubernetes/charts/
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm repo list
二、chart包目录结构
首先了解一下包的目录结构
创建一个新的chart并查看目录结构
helm create test
tree test
下载一个chart,并查看目录
helm pull stable/mysql
tar xf mysql-1.6.9.tgz
ls mysql
ls -l mysql/templates/
文件说明
文件 | 说明 |
---|---|
Chart.yaml | 用于描述Chart的基本信息;helm show chart stable/mysql命令查看的内容就是此文件内容 |
values.yaml | Chart的默认配置文件;helm show values stable/mysql命令查看的内容就是此文件内容 |
README.md | [可选]当前Chart的介绍 |
LICENS | [可选] 协议 |
requirements.yaml | [可选] 用于存放当前Chart依赖的其它Chart的说明文件 |
charts/ | [可选]: 该目录中放置当前Chart依赖的其它Chart |
templates/ | [可选]:部署文件模版目录 |
三、创建不可配置的chart
1.创建目录和chart.yaml
chart.yaml用于描述基本信息
mkdir -p /helm/nginx/templates
cd /helm/nginx/
vim Chart.yaml
name: helm-nginx
version; 1.0.0
apiVersion: v1
appVersion: "1.0"
description: A helm chart for kubernetes
2.创建deployment.yaml
vim templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: helm-nginx
spec:
replicas: 1
selector:
matchLabels:
app: helm-nginx
template:
metadata:
labels:
app: helm-nginx
spec:
containers:
- name: helm-nginx
image: nginx:1.20
imagePullPolicy: IfNotPresent
3.创建service.yaml
apiVersion: v1
kind: Service
metadata:
name: helm-nginx
spec:
selector:
app: helm-nginx
ports:
- port: 80
targetPort: 80
protocol: TCP
4.使用chart安装应用
helm install /helm/nginx --generate-name
5.查看和验证
helm ls
kubectl get pods,service
curl 10.106.176.236
可以看到网页内容
四、创建可配置的Chart
1.官方的预定义变量
Release 相关变量
Release.Name:Release 的名称。
Release.Time:Release 创建的时间。
Release.Namespace:Release 安装的命名空间。
Release.Service:Release 所使用的 Helm 服务(一般是 Helm)。
Release.IsUpgrade:布尔值,表示是否是一次升级操作。
Release.IsInstall:布尔值,表示是否是一次安装操作。Chart 相关变量
Chart.Name:Chart 的名称。
Chart.Version:Chart 的版本。
Chart.AppVersion:Chart 应用程序的版本。
Chart.Description:Chart 的描述信息。Values 相关变量
Values:包含用户提供的所有值的对象,可以通过 Values. 访问特定的值。Files 相关变量
Files:访问 Chart 文件的方法,支持如下操作:
Files.Get:获取特定文件的内容。
Files.GetBytes:以字节数组形式获取文件内容。Capabilities 相关变量
Capabilities.KubeVersion:Kubernetes 集群的版本信息。
Capabilities.HelmVersion:Helm 的版本信息。
Capabilities.APIVersions:支持的 API 版本集合。Template 相关变量
Template.Name:当前模板的名称。
2.新增values.yaml文件
为了避免影响,先删除上个chart
注:不要删除文件
helm ls
helm uninstall nginx-1718691772
然后确定位置
pwd
vim values.yaml
image:
repository: nginx
tag: '1.20'
replicas: 2
3.配置deploy引用values的值
vim templates/deployment.yaml
更改为
apiVersion: apps/v1
kind: Deployment
metadata:
name: helm-nginx
spec:
replicas: {
{ .Values.replicas }}
selector:
matchLabels:
app: helm-nginx
template:
metadata:
labels:
app: helm-nginx
spec:
containers:
- name: helm-nginx
image: {
{ .Values.image.repository }}:{
{ .Values.image.tag }}
imagePullPolicy: IfNotPresent
4.测试
(1)直接应用测试
deployment.yaml将直接使用values.yaml中的配置
helm install helm-nginx-new /helm/nginx
kubectl get pods
(2)通过命令行设置变量后干运行测试
通过在命令行设置变量为deployment.yaml赋值,使用--set选项,使用--dry-run选项来打印出生成的清单文件内容,而不执行部署
helm uninstall helm-nginx-new
helm install helm-nginx --set replicas=3 /helm/nginx/ --dry-run
可以看到传参成功了
replicas
image 处
helm install helm-nginx --set replicas=3 /helm/nginx
helm ls
kubectl get all
5.将Chart包进行打包
将chart打包成一个压缩文件,便于存储与分享。
helm package .
ls
打包出mychart-0.1.0.tgz文件
6.使用Chart安装
删除之前的helm-nginx实例
helm ls
helm uninstall helm-nginx
安装
helm install helm-nginx2 helm-nginx-1.0.0.tgz
kubectl get all
总结
创建 Helm Chart 包的过程涉及到理解 Helm 的基本概念、目录结构、模板语法和一些常见的 Helm 操作命令。通过以上步骤和示例,你应该能够创建和管理自己的 Helm Chart,以便在 Kubernetes 中管理应用程序。