事半功倍:Helm的了解与使用

2024-02-12 07:59

本文主要是介绍事半功倍:Helm的了解与使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Helm

  • Helm是什么?
  • Helm中一个很重要的元素:Chart
  • 使用Helm
    • 安装helm客户端注意点
    • 下面我们通过二进制的方式安装helm客户端:
    • 添加chart存储库
    • 搜索chart存储库
  • 安装一个chart
    • 自定义配置安装

Helm是什么?

Helm是Kubernetes的软件包管理器,类似于yum、apt等包管理工具一样,Helm可以轻松的一键式部署出我们想要的应用。

编写Helm有三个主要目标:

1.轻松地实现从“从零到Kubernetes”;
2.提供与操作系统类似的软件包管理系统;
3.强调将应用程序部署到Kubernetes的安全性和可配置性。

Helm中一个很重要的元素:Chart

  • chart是Helm的软件包,是航海图的意思。chart是遵循chart规范的一组文件和目录,用于定义要安装到kubernetes中的资源。
  • chart中包含一个名为chart.yaml的文件,它描述了此chart的版本、名称、说明和作者的一些信息。
  • chart包含模板,即kubernetes清单。
  • chart中有一个提供默认配置的文件名字为values.yaml。此文件包含安装和升级期间可覆盖的参数,可以进行修改。
  • 当你所见到一个chart的时候,它可能是一个压缩包,像这个样子ingress-nginx-4.0.17.tgz,也可以是一个目录ingress-nginx
  • 它的目录构造可能是这个样子:
[root@k8s-master01 ingress-nginx]# ls
CHANGELOG.md  Chart.yaml  ci  OWNERS  README.md  README.md.gotmpl  templates  values.yaml

当一个chart被安装时,它的流程可能是这个样子的:

  • Helm读取chart
  • 将定义的值发送到模板,生成kubernetes清单
  • 清单被发送到kubernetes
  • kubernetes根据清单在集群中创建请求的资源

使用Helm

Helm拥有v2和v3版本,这里就忽略v2了,因为我是用的是v3。
Helm提供了一个名为helm的命令行工具,我们使用它进行操作。

安装helm客户端注意点

安装helm时要注意一点,helm的版本要匹配kubernetes的版本,如下图:
具体详细版本对应参考:https://helm.sh/docs/topics/version_skew/
在这里插入图片描述

下面我们通过二进制的方式安装helm客户端:

详细说明或其他方式安装参考:https://helm.sh/docs/intro/install/官方文档
目前到我安装的时候helm的最新版本为3.8.0,而我的k8s集群版本为1.23.x是完全符合的。

  • 下载二进制包
wget https://get.helm.sh/helm-v3.8.0-linux-amd64.tar.gz
  • 解压二进制包
tar xf helm-v3.8.0-linux-amd64.tar.gz
  • 将解压后目录中的helm目录移动到/usr/local/bin/helm下
mv linux-amd64/helm /usr/local/bin/helm
  • 安装结束,灰常简单

添加chart存储库

只有一个客户端工具是没法干活的,我们还需要知道它的chart包从哪来,相当于yum安装的软件源。

  • 添加一个官方存储库
  • 注意:add 后面的名称是自定义的,方便你记住,不是固定的
helm repo add bitnami https://charts.bitnami.com/bitnami# 我的环境添加的存储库
[root@k8s-master01 ~]# helm repo list
NAME         	URL                                       
ingress-nginx	https://kubernetes.github.io/ingress-nginx
nginx-stable 	https://helm.nginx.com/stable             
bitnami      	https://charts.bitnami.com/bitnami    
  • 查看是否添加成功?其实上面已经演示了,这条命令可以查看你添加过的存储库存不存在
helm repo list

搜索chart存储库

  • 添加了库后,怎么能知道我想安装的chart包存不存在呢?使用下面这条命令
[root@k8s-master01 ~]# helm search repo apache
NAME                    	CHART VERSION	APP VERSION	DESCRIPTION                                       
bitnami/apache          	9.0.2        	2.4.52     	Apache HTTP Server is an open-source HTTP serve...
bitnami/airflow         	12.0.1       	2.2.3      	Apache Airflow is a tool to express and execute...
  • 当然你也可以尝试搜索来自网络中的chart包:
[root@k8s-master01 ~]# helm search hub wordpress
URL                                               	CHART VERSION 	APP VERSION        	DESCRIPTION                                       
https://artifacthub.io/packages/helm/kube-wordp...	0.1.0         	1.1                	this is my wordpress package                      
https://artifacthub.io/packages/helm/bitnami/wo...	13.0.11       	5.9.0              	WordPress is the world's most popular blogging ...

安装一个chart

  • 安装chart的前提是需要有一个命名空间,当然默认的也可以,为了区分还是创建一个
  • 下面创建一个名为mysql的命名空间
kubectl create ns mysql
  • 然后安装chart软件包
hellm install my-mysql bitnami/mysql -n mysql

说一下这条命令的含义:

  • my-mysql代表我运行这个chart的名字,是自定义的
  • bitnami/mysql:是存储库的名字加软件包名
  • -n mysql:是指定命名空间的名字

安装完可以查看一下是否安装成功:

需要注意的是:

  • 不管你的Pod资源能不能创建成功,只要helm创建成功了那么这个实例就会存在
  • 同一命名空间内实例名称唯一,再次创建同名称的实例会报错
[root@k8s-master01 ~]# helm list -n mysql
NAME    	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART       	APP VERSION
my-mysql	mysql    	1       	2022-02-17 14:32:38.423267837 +0800 CST	deployed	mysql-8.8.23	8.0.28
  • 这条命令可以查看你创建chart 的一些状态:
[root@k8s-master01 ~]# helm status my-mysql -n mysql
  • 当你不想要这个chart的时候也可以选择卸载掉:
[root@k8s-master01 ~]# helm uninstall my-mysql -n mysql

自定义配置安装

默认安装的配置往往不是我们需要的,那么我们可以将chart包pull下来,然后进行修改参数后再执行。

  • 将chart包pull下来,进行解压,可以看到包内的基本信息
[root@k8s-master01 ~]# helm pull bitnami/mysql
[root@k8s-master01 ~]# tar xf mysql-8.8.23.tgz -C /temp/
[root@k8s-master01 ~]# cd /temp/mysql/
[root@k8s-master01 mysql]# ls
Chart.lock  charts  Chart.yaml  ci  README.md  templates  values.schema.json  values.yaml
  • 可以修改他的values.yaml文件,这里就不修改了
  • 然后执行修改后的values.yaml文件,因为你执行的是本地文件,就不用加源地址了
[root@k8s-master01 mysql]# helm install mysql-01 -n mysql .
  • 如果你已经运行了这个chart,然后又修改了yaml文件,你可以用这条命令进行更新
[root@k8s-master01 mysql]# helm upgrade --install mysql-01 -n mysql .

就到这吧,只说一下helm的基本使用。
以后会写chart的使用,自己创建chart等内容。

这篇关于事半功倍:Helm的了解与使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景