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

相关推荐
杨侨治1 分钟前
Web后端开发概述&环境搭建&项目创建&servlet生命周期
java·笔记·学习·servlet·java基础·javaee
xuruilll5 分钟前
Docker部署前端,动态配置后端地址
运维·docker·容器
腾讯数据架构师8 分钟前
最新docker仓库镜像
运维·docker·容器·镜像源
天下·第二10 分钟前
使用【docker】简单部署打包构建好的镜像并运行python项目
python·docker·eureka
2301_7811725337 分钟前
K8S基础简介
云原生·容器·kubernetes
诸葛悠闲39 分钟前
【数据结构(邓俊辉)学习笔记】二叉搜索树04——AVL树
数据结构·笔记·学习
2401_8554507944 分钟前
Pc端多功能视频混剪工具/便携版打开即用
经验分享·笔记·学习
web安全工具库1 小时前
逆向学习汇编篇:内存管理与寻址方式
汇编·学习
Itmastergo1 小时前
零基础小白学习 Python,应该如何配置 Python 开发环境?(包含Windows、MacOS、Linux)
开发语言·python·学习
yuzhangfeng1 小时前
【TensorFlow深度学习】自我监督学习的理论基础与未来挑战
人工智能·深度学习·学习·机器学习·tensorflow