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

文章目录

  • chart包
  • 应用
    • 环境
      • 一、安装helm客户端工具
      • 二、chart包目录结构
      • 三、创建不可配置的chart
        • 1.创建目录和chart.yaml
        • 2.创建deployment.yaml
        • 3.创建service.yaml
        • 4.使用chart安装应用
        • 5.查看和验证
      • 四、创建可配置的Chart
        • 1.官方的预定义变量
        • 2.新增values.yaml文件
        • 3.配置deploy引用values的值
        • 4.测试
        • 5.将Chart包进行打包
        • 6.使用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.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-nginxtemplate:metadata:labels:app: helm-nginxspec:containers:- name: helm-nginximage: nginx:1.20imagePullPolicy: IfNotPresent
3.创建service.yaml
apiVersion: v1
kind: Service
metadata:name: helm-nginx
spec:selector:app: helm-nginxports:- port: 80targetPort: 80protocol: 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: nginxtag: '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-nginxtemplate:metadata:labels:app: helm-nginxspec:containers:- name: helm-nginximage: {{ .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 中管理应用程序。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端基础——自学习梳理

超文本协议HTML <!DOCTYPE HTML> <html><head><meta charset"utf-8"> <style> /*Css*/.sty1{height:100px;width:100px;background-color: red;margin-top: 10px;float:left;margin-left: 10px;box-shadow: 10px 10px 10px #0000…

MySQL的自增 ID 用完了,怎么办?

MySQL 自增 ID 一般用的数据类型是 INT 或 BIGINT&#xff0c;正常情况下这两种类型可以满足大多数应用的需求。 当然也有不正常的情况&#xff0c;当达到其最大值时&#xff0c;尝试插入新的记录会导致错误&#xff0c;错误信息类似于&#xff1a; ERROR 167 (22003): Out o…

IOS开发学习日记(十六)

目录 App间的唤起和通信 App跳转 通过Scheme唤起其他App Universal Link 组件化 App间的唤起和通信 App跳转 使用URL Scheme支持App启动、跳转及参数传递 分享 / 登陆 / 拉起App Store等 设置URL Type 在UIApplication中处理参数和业务逻辑 -(BOOL)application:(UIApp…

CBSD创建和管理bhyve容器Ubuntu@FreeBSD

bhyve介绍&#xff1a;bhyve&#xff1a;FreeBSD下的原生虚拟机管理器_freebsd 虚拟化平台bhyve-CSDN博客 两个bhyve的管理软件&#xff1a;使用bvm管理bhyve虚拟机管理系统FreeBSD-CSDN博客 vm-bhyve&#xff1a;bhyve虚拟机的管理系统FreeBSD-CSDN博客 现在&#xff0c;我…

【ARMv8/v9 GIC 系列 4.2 -- GIC CPU Interface 详细介绍】

文章目录 GIC CPU Interface 介绍CPU Interface 主要寄存器 GIC CPU Interface 介绍 A 系列处理器提供 5个管脚来实现中断&#xff0c;分别是&#xff1a; nIRQ&#xff1a;物理普通中断nFIQ&#xff1a;物理快速中断nVIRQ&#xff1a;虚拟普通中断nVFIQ&#xff1a;虚拟快速…

Hi3861 OpenHarmony嵌入式应用入门--LiteOS Mutex

CMSIS 2.0接口中的Mutex&#xff08;互斥锁&#xff09;是用于在多线程环境中保护共享资源的访问机制。Mutex&#xff08;互斥锁&#xff09;是一种特殊的信号量&#xff0c;用于确保同一时间只有一个线程可以访问特定的共享资源。 在嵌入式系统或多线程应用中&#xff0c;当多…

C语言常用标准头文件

头文件的基础概念 在C的系列语言程序中&#xff0c;头文件&#xff08;通常扩展名为.h&#xff09;被大量使用&#xff0c;它通常包含函数、变量、结构体等的声明和定义&#xff0c;以及一些宏定义和类型定义。头文件的主要作用是为了方便管理和重用代码&#xff0c;它可以被多…

3dsMax怎样让渲染效果更逼真出色?三套低中高参数设置

渲染是将精心构建的3D模型转化为逼真图像的关键步骤。但要获得令人惊叹的渲染效果&#xff0c;仅仅依赖默认设置是不够的。 实现在追求极致画面效果的同时&#xff0c;兼顾渲染速度和时间还需要进行一些调节设置&#xff0c;如何让渲染效果更加逼真&#xff1f; 一、全局照明与…

【Python】已解决:urllib模块设置代理ip

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;urllib模块设置代理ip 一、分析问题背景 在使用Python的urllib模块进行网络请求时&#xff0c;有时我们需要通过代理服务器来发送请求&#xff0c;以达到隐藏真…

设计模式原则——单一职责原则(SPS)

设计模式原则 设计模式示例代码库地址&#xff1a; https://gitee.com/Jasonpupil/designPatterns 单一职责原则&#xff08;SPS&#xff09;&#xff1a; 又称单一功能原则&#xff0c;面向对象五个基本原则&#xff08;SOLID&#xff09;之一原则定义&#xff1a;一个类应…

使用 ks 安装 mysql

https://www.kubesphere.io/zh/docs/v3.3/application-store/built-in-apps/mysql-app/ 准备工作 您需要启用 OpenPitrix 系统。如何启用&#xff1f; 动手实验 步骤 1&#xff1a;从应用商店部署 MySQL 在 demo-project 的概览页面&#xff0c;点击左上角的应用商店。找到 …

Linux-磁盘管理与文件系统

目录 一、磁盘结构 1、磁盘的物理结构 2、磁盘的数据结构 3、磁盘存储容量 4、接口类型 二、磁盘分区 1、磁盘的两种分区方式 1.1、MBR分区 1.2、GPT分区 三、查看硬盘的分区情况 1、Fdisk—查询磁盘设备 2、lsblk—以树形查看磁盘分区 3、blkid—查看磁盘的UUID …

ONLYOFFICE 桌面编辑器 8.1 发布:全新功能齐备的 PDF 编辑器、丰富的幻灯片版式

前言 在当前数字化迅速发展的时代&#xff0c;办公软件套件作为企业日常工作的核心工具&#xff0c;其功能的全面性和使用的便捷性直接影响着工作效率和团队协作的效果。在众多办公软件中&#xff0c;ONLYOFFICE凭借其卓越的性能和丰富的功能&#xff0c;备受用户青睐。近日&a…

基于Java少儿编程管理系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

手机照片怎么恢复?3个方法,从灾难中崛起

已经成为了我们随身携带的必备品。而在这些小巧玲珑的设备中&#xff0c;存储着我们大量的个人回忆和重要资料。其中&#xff0c;手机拍摄的照片更是承载着我们的欢笑、泪水、成长与经历&#xff0c;但它们会因为意外从此消失。 面对这样的困境&#xff0c;我们是否只能无奈接…

Linux基础 - 定时计划

目录 零. 简介 一. cron 二. crontab 三. cron和crontab的区别 四. 例子 零. 简介 在 Ubuntu 系统中可以使用 crontab 来设置定时计划任务。crontab 是 Linux 下的无图形界面的计划任务工具&#xff0c;它可以在无需人工干预的情况下运行作业。 一. cron 在 Ubuntu 系统…

[ARM-2D 专题]3. ##运算符

C语言的宏系统相当强大&#xff0c;它允许使用##符号来处理预处理期的文本替换。这种用法被称为标记连接&#xff08;token pasting&#xff09;操作&#xff0c;其结果是将两个标记紧紧地连接在一起&#xff0c;而省略掉它们之间的所有空格。在复杂的宏定义中&#xff0c;运用…

13 物理层介质及设备

物理层介质及设备 一、线缆的连接 &#xff08;一&#xff09;线序 ​ 线序&#xff1a; RJ-45连接头12345678568A绿白绿橙白蓝蓝白橙棕白棕568B橙白橙绿白蓝蓝白绿棕白棕 ​ 1、2发送&#xff0c;3、6接收 &#xff08;二&#xff09;线缆的应用 1.线缆的连接 ​ 标准…

边缘计算为企业解决数据问题,提升业务效率和竞争力-天拓四方

企业在当前数字化时代面临着一系列具体的问题和挑战&#xff0c;这些问题往往与数据处理、实时响应、安全性以及运营成本等方面密切相关。边缘计算作为一种新兴的计算模型&#xff0c;能够有效地帮助企业解决这些问题&#xff0c;提升业务效率和竞争力。 首先&#xff0c;企业…

业务架构交付物

背景 业务的核心元素、扩展元素以及它们的协同关系&#xff0c;业务架构和其他架构的关系等等已经有了不少认识&#xff0c;那么&#xff0c;通过对业务架构的还原和分析&#xff0c;到底能够得到什么业务架构的内容呢&#xff1f;它可以是一套流程框架体系&#xff0c;也可以…