一、Helm引入
K8S 上的应用对象,都是由特定的资源描述组成,包括 deployment、service 等。都保存各自文件中或者集中写到一个配置文件。然后 kubectl apply –f 部署。如果应用只由一个或几个这样的服务组成,上面部署方式足够了。而对于一个复杂的应用,会有很多类似上面的资源描述文件,例如微服务架构应用,组成应用的服务可能多达十个,几十个。如果有更新或回滚应用的需求,可能要修改和维护所涉及的大量资源文件,而这种组织和管理应用的方式就显得力不从心了。且由于缺少对发布过的应用版本管理和控制,使Kubernetes 上的应用维护和更新等面临诸多的挑战,主要面临以下问题:
(1)如何将这些服务作为一个整体管理
(2)这些资源文件如何高效复用
(3)不支持应用级别的版本管理
二、Helm介绍
Helm 是一个 Kubernetes 的包管理工具,就像 Linux 下的包管理器,如 yum/apt 等,可以很方便的将之前打包好的 yaml 文件部署到 kubernetes 上。
Helm 有 3 个重要概念:
1)helm:一个命令行客户端工具,主要用于 Kubernetes 应用 chart 的创建、打包、发布和管理。
2)Chart:应用描述,一系列用于描述 k8s 资源相关文件的集合。
3)Release:基于 Chart 的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个release;将在 k8s 中创建出真实运行的资源对象。
三、Helm作用
1.使用helm可以这些yaml文件作为一个整体管理
2.实现yaml高效复用
3.使用helm应用级别的版本管理
四、Helm v3 变化
2019 年 11 月 13 日, Helm 团队发布 Helm v3 的第一个稳定版本。该版本主要变化如下:
架构变化:
1)最明显的变化是 Tiller 的删除
2)Release 名称可以在不同命名空间重用
3)支持将 Chart 推送至 Docker 镜像仓库中
4)使用 JSONSchema 验证 chart values
5)其他
五、Helm客户端安装
1.下载Helm安装包
Helm 客户端下载地址:https://github.com/helm/helm/releases
[root@kubernetes-master-001 ~]# cd /data/software/
[root@kubernetes-master-001 /data/software]# wget https://get.helm.sh/helm-v3.7.1-linux-amd64.tar.gz
2.解压安装包
[root@kubernetes-master-001 /data/software]# tar xf helm-v3.7.1-linux-amd64.tar.gz -C /opt/
[root@kubernetes-master-001 /data/software]# cd /opt/
[root@kubernetes-master-001 /opt]# ll
total 0
drwxr-xr-x 2 3434 3434 50 Oct 14 04:09 linux-amd64
3.配置环境变量
#1.配置环境变量
[root@kubernetes-master-001 /opt]# vim /etc/profile.d/helm.sh
export PATH=/opt/linux-amd64:$PATH
#2.刷新环境变量
[root@kubernetes-master-001 /opt]# source /etc/profile.d/helm.sh
4.验证helm
[root@kubernetes-master-001 /opt]# helm version
version.BuildInfo{Version:"v3.7.1", GitCommit:"1d11fcb5d3f3bf00dbe6fe31b8412839a96b3dc4", GitTreeState:"clean", GoVersion:"go1.16.9"}
六、Helm常用命令
命令 描述
create 创建一个 chart 并指定名字
dependency 管理 chart 依赖
get 下载一个 release。可用子命令:all、hooks、manifest、notes、values
history 获取 release 历史
install 安装一个 chart
list 列出 release
package 将 chart 目录打包到 chart 存档文件中
pull 从远程仓库中下载 chart 并解压到本地 # helm pull stable/mysql -- untar
repo 添加,列出,移除,更新和索引 chart 仓库。可用子命令:add、index、 list、remove、update
rollback 从之前版本回滚
search 根据关键字搜索 chart。可用子命令:hub、repo
show 查看 chart 详细信息。可用子命令:all、chart、readme、values
status 显示已命名版本的状态
template 本地呈现模板
uninstall 卸载一个 release
upgrade 更新一个 release
version 查看 helm 客户端版本
七、配置国内chart仓库
1.常用国内仓库
微软仓库(http://mirror.azure.cn/kubernetes/charts/)这个仓库推荐,基本上官网有的 chart 这里都有。
阿里云仓库(https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts)
官方仓库(https://hub.kubeapps.com/charts/incubator)官方 chart 仓库,国内有点不好使。
2.添加存储库
[root@kubernetes-master-001 /opt]# helm repo add stable http://mirror.azure.cn/kubernetes/charts
"stable" has been added to your repositories
[root@kubernetes-master-001 /opt]# helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
"aliyun" has been added to your repositories
[root@kubernetes-master-001 /opt]# helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "aliyun" chart repository
...Successfully got an update from the "stable" chart repository
Update Complete. ⎈Happy Helming!⎈
3.查看配置的存储库
#1.查看配置的存储库
[root@kubernetes-master-001 /opt]# helm repo list
NAME URL
stable http://mirror.azure.cn/kubernetes/charts
aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
#2.查看配置存储库的服务清单
[root@kubernetes-master-001 /opt]# helm search repo stable
4.删除存储库
#1.查看存储库
[root@kubernetes-master-001 /opt]# helm repo list
NAME URL
stable http://mirror.azure.cn/kubernetes/charts
aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
#2.删除存储库aliyun
[root@kubernetes-master-001 /opt]# helm repo remove aliyun
"aliyun" has been removed from your repositories
#3.再次查看存储库
[root@kubernetes-master-001 /opt]# helm repo list
NAME URL
stable http://mirror.azure.cn/kubernetes/charts
八、Helm基本使用
主要三个命令:
1)chart install
2)chart upgrade
3)chart rollback
评论