目录
helm相当于debian/Ubuntu下的ap-get或者Redhat/CentOS/Fedora 下的yum,所以学习是很有必要的。
我在这里只是简单的安装,其它教程可以看第三方博客链接,感觉不错
一、知识点
1.1 什么是helm
很多人都使用过Ubuntu下的ap-get或者CentOS下的yum, 这两者都是Linux系统下的包管理工具。采用apt-get/yum,应用开发者可以管理应用包之间的依赖关系,发布应用;用户则可以以简单的方式查找、安装、升级、卸载应用程序。
我们可以将Helm看作Kubernetes下的apt-get/yum。Helm是Deis (https://deis.com/) 开发的一个用于kubernetes的包管理器。每个包称为一个Chart,一个Chart是一个目录(一般情况下会将目录进行打包压缩,形成name-version.tgz格式的单一文件,方便传输和存储)。
对于应用发布者而言,可以通过Helm打包应用,管理应用依赖关系,管理应用版本并发布应用到软件仓库。
对于使用者而言,使用Helm后不用需要了解Kubernetes的Yaml语法并编写应用部署文件,可以通过Helm下载并在kubernetes上安装需要的应用。
除此以外,Helm还提供了kubernetes上的软件部署,删除,升级,回滚应用的强大功能。
1.2 helm3新的功能
1.版本以新格式存储
2.没有群集内(分iller)组件
3.Helm 3包括对新版Helm图表的支持(图表v2)
4.Helm 3还支持库图表-图表主要用作其他图表的资源。
5.用于在OCI注册表中存储Helm图表的实验支持(例如Docker Distribution)可以进行测试。
6.现在在升级Kubernetes资源时将应用3向战略合并补丁。
7.现在可以根据JSON模式验证图表提供的值
8.为了使Helm更安全,可用和健壮,已进行了许多小的改进。
1.3 Helm3的变化
Helm3的内部实现已从 Helm2发生了很大变化,使其与 Helm2不兼容该版本主要变化如下
1、最明显的变化是
Tiller
的删除
2、Release 不再是全局资源,而是存储在各自命名空间内
3、Values 支持 JSON Schema校验器,自动检查所有输入的变量格式
4、移除了用于本地临时搭建 Chart Repository 的 helm serve 命令。
5、helm install 不再默认生成一个 Release 的名称,除非指定了 --generate-name。
6、Helm CLI 个别更名
helm delete更名为 helm uninstall
helm inspect更名为 helm show
helm fetch更名为 helm pull但以上旧的命令当前仍能使用。
二、安装环境说明
名称 | 版本 | 安装方式 | 备注 |
系统 | centos8.2 | VMware | 64位, VMware安装cnetos8.2最小化 |
k8s | 1.18.5 | kubeadm | |
helm | 3.3.0 | 二进制 | 以二进制方式安装 |
注:k8s安装可参见我的文章《hualinux 进阶 1.7:kubeadm1.18搭建k8s群集》
2.1 helm安装
在helm官网首页中,可以选择如下几种安装方式,但都不适合centos,所以选择二进制安装
2.1.1 安装要求
按照helm官网安装要求,要成功且正确地确保使用Helm,必须满足以下先决条件。
- Kubernetes集群
- 确定要应用于安装的安全性配置(如果有)
- 安装和配置Helm。
2.1.2 安装helm(二进制)
按照helm官方安装文档,我这里使用的是二进制安装方式,下载heml二进制包,目前最稳定的是v3.3.0
wget https://get.helm.sh/helm-v3.3.0-rc.1-linux-amd64.tar.gz
tar -xf helm-v3.3.0-rc.1-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/
cd ~
helm help
helm env
2.1.3 添加公用chart仓库
#官网仓库https://kubernetes-charts.storage.googleapis.com/不稳定,我添加了国内的仓库
helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo update
#例子:安装ingress
#因涉及到国外的镜像,需要梯子,要不安装不成功
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm install ing1 ingress-nginx/ingress-nginx