k8s学习--chart包开发(创建chart包)

文章目录


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 中管理应用程序。

相关推荐
开挖掘机上班38 分钟前
基于Alpine构建MySQL镜像
mysql·docker·容器
心疼你的一切1 小时前
Unity 多人游戏框架学习系列一
学习·游戏·unity·c#·游戏引擎
todoitbo1 小时前
docker搭建freeswitch实现点对点视频,多人视频
docker·容器·音视频·freeswitch·视频聊天
Chef_Chen2 小时前
从0开始学习R语言--Day47--Nomogram
学习
William一直在路上3 小时前
回顾一下Docker的基本操作
docker·容器·eureka
阿里云云原生3 小时前
Nacos 开源 MCP Router,加速 MCP 私有化部署
云原生
赵成ccc3 小时前
如何进行 Docker 数据目录迁移
docker·容器·eureka
毕设源码柳学姐4 小时前
计算机毕业设计Java医学生在线学习平台系统 基于 Java 的医学生在线学习平台设计与开发 Java 医学在线教育学习系统的设计与实现
java·学习·课程设计
康闯4 小时前
Docker 部署emberstack/sftp 镜像
java·docker·容器
小阿技术4 小时前
本地电脑安装Dify|内网穿透到公网
人工智能·计算机视觉·docker·目标跟踪·flask·dify