k8s应用的包管理Helm工具

一、Helm 是什么?

Helm 是 Kubernetes 的包管理器,类似于我们熟知的:

  • Linux 系统中的 apt (Debian/Ubuntu) 或 yum (CentOS/RHEL)

  • Python 中的 pip

  • Node.js 中的 npm

  • macOS 中的 Homebrew

  • Helm是Kubernetes 应用的包管理工具,主要用来管理 Charts,类似Linux系统的yum。

  • Helm Chart是用来封装Kubernetes原生应用程序的一系列YAML文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。

  • 对于应用发布者而言

  • 通过Helm打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。

  • 对于使用者而言

  • 使用Helm后可以以简单的方式在Kubernetes上查找、安装、升级、回滚、卸载应用程序

它的核心思想是:将一组相关的 Kubernetes 资源(Deployment, Service, ConfigMap, Secret, Ingress 等)打包到一个单独的、可版本化的单元中,这个单元称为 Chart。然后,你可以通过 Helm 工具轻松地安装、升级、回滚和删除这些复杂的应用。

二 部署helm

安装helm:

[root@k8s-master helm]# tar zxf helm-v3.15.4-linux-amd64.tar.gz
[root@k8s-master helm]# ls
helm-v3.15.4-linux-amd64.tar.gz  linux-amd64
[root@k8s-master helm]# cd  linux-amd64/
[root@k8s-master linux-amd64]# ls
helm  LICENSE  README.md
[root@k8s-master linux-amd64]# cp -p helm  /usr/local/bin/

配置helm命令补齐:

[root@k8s-master linux-amd64]#  echo "source <(helm completion bash)" >> ~/.bashrc
[root@k8s-master linux-amd64]# source   ~/.bashrc
[root@k8s-master linux-amd64]# helm version
version.BuildInfo{Version:"v3.15.4", GitCommit:"fa9efb07d9d8debbb4306d72af76a383895aa8c4", GitTreeState:"clean", GoVersion:"go1.22.6"}

三 helm常用操作

命令描述
create创建一个指定名字的 chart 目录骨架
dependency管理 chart 依赖(update / build / list)
get下载指定 release 的相关资源;子命令:all、hooks、manifest、notes、values
history查看 release 的历史版本列表
install安装 chart,生成新的 release
list列出当前集群所有 release(简写 helm ls
package将本地 chart 目录打包为 .tgz 存档
pull从远程仓库拉取 chart;加 --untar 可自动解压
repo管理仓库:add / index / list / remove / update
rollback将 release 回退到历史某个版本
search按关键字搜索 chart;子命令:hub、repo
show查看 chart 详情;子命令:all / chart / readme / values
status显示指定 release 的当前状态
template本地渲染模板并输出 YAML(不真正安装)
uninstall删除指定 release(含资源及历史)
upgrade升级现有 release 到新 chart 或新配置
version查看 Helm 客户端版本

查询官方应用中心:

[root@k8s-master helm]# helm search  hub nginx		#在官方仓库中搜索
[root@k8s-master helm]# helm  search  repo  nginx	#在本地仓库中搜索

helm有官方仓库,但是不能连接上

添加第三方镜像源仓库

#添加阿里云仓库
[root@k8s-master helm]# helm repo  add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
"aliyun" has been added to your repositories

#添加bitnami仓库
[root@k8s-master helm]# helm repo add bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories

#查看仓库信息
[root@k8s-master helm]# helm repo list
NAME    URL
aliyun  https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
bitnami https://charts.bitnami.com/bitnami

#查看仓库存储helm清单
[root@k8s-master helm]# helm search repo  aliyun
NAME                            CHART VERSION   APP VERSION     DESCRIPTION         #应用名称						  封装版本			软件版本          软件描述                   
aliyun/acs-engine-autoscaler    2.1.3           2.1.1           Scales worker nodes within agent pools           
aliyun/aerospike                0.1.7           v3.14.1.2       A Helm chart for Aerospike in Kubernetes 

#删除第三方存储库
[root@k8s-master helm]# helm repo list
NAME    URL
aliyun  https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
bitnami https://charts.bitnami.com/bitnami

[root@k8s-master helm]# helm repo remove aliyun
"aliyun" has been removed from your repositories
[root@k8s-master helm]# helm repo list
NAME    URL
bitnami https://charts.bitnami.com/bitnami

从指定的本地源来查看,可以看到刚刚加载的镜像源

查看有多少镜像源

搜索镜像源里有多少镜像

删除镜像

搜索本地所有的源

安装项目

查看项目详细信息

卸载项目

查看是否还在

拉取项目

安装项目前预定义项目选项

就先解压开压缩包,然后进入目录中去,目录中就都是项目的全部信息了

缺少的镜像上传下来

镜像源位置

不用改变

更新项目

对内有IP,对外没有

从上面变成ClusterIP

更新配置文件

查看更新历史


四 构建helm中的chart包

建立chart项目

[root@k8s-master helm]# tree timinglee/
timinglee/
├── charts							#目录里存放这个chart依赖的所有子chart。
├── Chart.yaml						#用于描述这个 Chart 的基本信息
									#包括名字、描述信息以及版本等。
 
├── templates						#目录里面存放所有 yaml 模板文件。
│   ├── deployment.yaml
│   ├── _helpers.tpl				#放置模板助手的地方,可以在整个 chart 中重复使用
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── NOTES.txt
│   ├── serviceaccount.yaml
│   ├── service.yaml
│   └── tests
│       └── test-connection.yaml
└── values.yaml						#用于存储 templates 目录中模板文件中用到变量的值。
 
3 directories, 10 files

构建方法

这里没有写版本,就会识别刚刚写的配置文件(就是上面的配置文件)里的版本号V1

ingress的配置

检测是否有语法错误

安装项目

报错情况:

之前的实验项目未删除干净,导致影响这里的实验

删除之后重新运行又因为之前运行失败的一次还是创建了,所以导致用户名冲突

查看是否有相同命名的项目,然后删除重复的,就可以成功创建了

成功以后,该做的都会一键生成

删除项目

对项目进行打包

不用解压,一键安装压缩包就行


五 构建helm仓库

通过软件的地址直接安装到插件里

但是此时是安装不上的,地址无效

此时需要我们自己创建插件的地址

要解到能被检测到的目录里

这个私有地址当中这个目录是默认的

#添加仓库时报错,因为我们用的是加密访问

证书位置是识别不到的

更新之后,才能使用

搜索项目

安装项目

列出所有版本

访问测试

六 helm的版本迭代

打包修改后的项目

上传之后

跟新一下

直接搜索默认展示最新的

-l 才能展示所有

直接跟新就行

回滚版本

版本更新和回滚会留下记录,想要改变直接输入记录的版本号,也能直接变化版本了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值