kubernetes Helm详解及部署
一、Helm
Helm是Kubernetes 应用的包管理工具,主要用来管理 Charts,类似Linux系统的yum。
Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。
对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。
对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序。
Helm当前最新版本 v3.1.2 官网:https://helm.sh/docs/intro/
Helm V3 与 V2 最大的区别在于去掉了tiller:
二、Helm安装
安装包的下载地址:https://github.com/helm/helm/releases
,最新版本3.2.1.
下载软件包:helm-v3.2.1-linux-amd64.tar.gz
解压:
[root@server1 ~]# tar zxf helm-v3.2.1-linux-amd64.tar.gz
[root@server1 ~]# cd linux-amd64/
[root@server1 linux-amd64]# ls
helm LICENSE README.md
[root@server1 linux-amd64]# cp helm /usr/local/bin/
- 1
- 2
- 3
- 4
- 5
使命令自动补齐:
[root@server1 linux-amd64]# echo "source <(helm completion bash)" >> ~/.bashrc
[root@server1 linux-amd64]# source ~/.bashrc
- 1
- 2
helm部署完成。
三、Helm仓库的使用
搜索官方helm hub chart库:
[root@server1 linux-amd64]# helm search hub redis
- 1
Helm 添加第三方 Chart 库:
添加微软库:
[root@server1 linux-amd64]# helm repo add stable http://mirror.azure.cn/kubernetes/charts/
"stable" has been added to your repositories
- 1
- 2
添加第三库之后就可以使用以下方式查询:
[root@server1 linux-amd64]# helm search repo redis
- 1
注意:加-l
选项可以查看历史版本
这里也可以添加阿里云的库,但是不建议,因为阿里云的镜像版本比较老。
删除第三方库:
[root@server1 linux-amd64]# helm repo remove aliyun
"aliyun" has been removed from your repositories
- 1
- 2
四、使用Helm部署redis-ha
拉取部署文件
[root@server1 linux-amd64]# helm pull stable/redis-ha
[root@server1 linux-amd64]# ls
helm LICENSE README.md redis-ha-4.4.4.tgz
- 1
- 2
- 3
不指定标签时默认拉取最新版本,拉取下来是一个压缩包
解压
[root@server1 linux-amd64]# tar zxf redis-ha-4.4.4.tgz -C /root/helm
- 1
[root@server1 linux-amd64]# cd
[root@server1 ~]# cd helm/
[root@server1 helm]# ls
redis-ha
[root@server1 helm]# cd redis-ha/
[root@server1 redis-ha]# ls
Chart.yaml ci OWNERS README.md templates values.yaml
- 1
- 2
- 3
- 4
- 5
- 6
- 7
上述文件中README.md 为帮助文档,目录templates中为模板部署文件,部署文件中的变量都保存在values.yaml文件中,因此我们在部署应用时只需要更改values.yaml文件即可。
查看目录结构:
[root@server1 redis-ha]# tree .
.
├── Chart.yaml
├── ci
│ └── haproxy-enabled-values.yaml
├── OWNERS
├── README.md
├── templates
│ ├── _configs.tpl
│ ├── _helpers.tpl
│ ├── NOTES.txt
│ ├── redis-auth