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

2024-06-18 15:52

本文主要是介绍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 中管理应用程序。

这篇关于k8s学习--chart包开发(创建chart包)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1072438

相关文章

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Spring创建Bean的八种主要方式详解

《Spring创建Bean的八种主要方式详解》Spring(尤其是SpringBoot)提供了多种方式来让容器创建和管理Bean,@Component、@Configuration+@Bean、@En... 目录引言一、Spring 创建 Bean 的 8 种主要方式1. @Component 及其衍生注解

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块