一、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 才能展示所有
直接跟新就行
回滚版本
版本更新和回滚会留下记录,想要改变直接输入记录的版本号,也能直接变化版本了