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.11master012cpu双核4G100G
192.168.10.12worker012cpu双核4G100G
192.168.10.13worker022cpu双核4G100G

版本 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.yamlChart的默认配置文件;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 中管理应用程序。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐