课程目标
- 了解helm概念
- 了解helm v2与helm v3的区别
- 安装和使用helm v3
1. helm概念
我们在kubernetes集群中创建应用的时候,一般会使用清单文件manifest来规范我们的应用。典型的容器化应用程序会包含很多清单。Deployment、Service和ConfigMap的清单。我们可能还会创建一些Secret、Ingress和其他对象。每一个都需要一份清单。
从1.4版本开始,为了让软件的部署更加的规范化,Helm项目应运而生。Helm类似于yum或者apt这样的包管理器,而Chart类似于包。有了Helm,我们就可以打包所有这些清单文件,并使它们作为一个单独的tar包使用。我们可以将tar包放在一个存储库中,搜索该存储库,发现一个应用程序,然后使用一个命令部署并启动整个应用程序。
服务器运行在Kubernetes集群中,而客户端是本地的,也可以使本地笔记本电脑。我们可以使用客户端来连接到多个应用程序存储库。
2. helm v2与helm v3
2.1. Helm v2和Tiller
helm工具使用一系列YAML文件将Kubernetes应用程序打包成一个chart或包。这种方式允许用户之间简单的共享,使用模板方案进行优化,以及来源跟踪等。
zgxbwiuexxtg-BasicFlow-HelmandTiller.png2.2. 基础的Helm和Tiller的流程
Helm的v2版本是由两个组件构成的
- 服务器端叫Tiller,运行在kubernetes集群之中
- 客户端叫Helm,在我们本地的机器上运行
Helm v2会在集群中部署一个Tiller的pod,但是这样会引发很多安全和集群权限的问题。而Helm v3就不用部署这个pod了。
使用Helm客户端,我们就可以浏览包存储库(包含已发布的Chart),并在Kubernetes集群上部署这些Chart。kubernetes将下载Chart并将请求传递给Tiller来创建应用。这个应用是由运行在Kubernetes集群中的各种资源组成。
2.3. Helm v3
最近Helm彻底的翻修了一遍,流程和命令都有很大的改变。如果我们正在使用Helm的v2版本,那么可能需要花些时间去升级和集成这些改变。
最显著的变化之一就是Tiller的移除。这是一个一直存在的安全问题,因为pod需要提升权限才能部署Chart。在新版本中,这个功能被单独放在了命令行中,不再需要初始化才能使用。
在v2中,对chart和deployment的更新需要使用双向策略合并来完成。这需要将先前的manifest和预期的menifest进行比较,而不是在helm命令之外进行编辑。目前的检查是使用另外的方法,检查目前对象的状态。
还有其他的改变,比如软件安装不再自动生成名称。我们必须手动指定名称,要不就传递--generated name
参数
3. 部署helm v3
由于helm的v2版本存在一些安全问题,所以全部转向v3是大势所趋,这里就不再说v2的内容了,我们直接部署v3。
3.1. 安装helm
我们这里以linux64版本举例,我们首先要保证kubectl命令能够正确连接到我们的kubernetes集群
-
下载
$ wget https://get.helm.sh/helm-v3.2.4-linux-amd64.tar.gz
-
解压
$ tar xf https://get.helm.sh/helm-v3.2.4-linux-amd64.tar.gz
-
挪到环境变量所在的位置
mv linux-amd64/helm /usr/local/bin/helm chmod +x /usr/local/bin/helm
-
验证是否可用
helm help The Kubernetes package manager Common actions for Helm: - helm search: search for charts - helm pull: download a chart to your local directory to view - helm install: upload the chart to Kubernetes - helm list: list releases of charts ...
-
为helm添加一个仓库
$ helm repo add stable https://kubernetes-charts.storage.googleapis.com/
-
查看仓库里面的包
helm search repo stable NAME CHART VERSION APP VERSION DESCRIPTION stable/acs-engine-autoscaler 2.2.2 2.1.1 DEPRECATED Scales worker nodes within agent pools stable/aerospike 0.2.8 v4.5.0.5 A Helm chart for Aerospike in Kubernetes stable/airflow 4.1.0 1.10.4 Airflow is a platform to programmatically autho... stable/ambassador 4.1.0 0.81.0 A Helm chart for Datawire Ambassador # ... and many more
3.2. 管理应用
-
部署应用
$ helm repo update # Make sure we get the latest list of charts $ helm install stable/mysql --generate-name Released smiling-penguin
-
列出应用
$ helm ls NAME VERSION UPDATED STATUS CHART smiling-penguin 1 Wed Sep 28 12:59:46 2016 DEPLOYED mysql-0.1.0
-
卸载应用
$ helm uninstall smiling-penguin Removed smiling-penguin
为了方便大家学习,请大家加我的微信,我会把大家加到微信群(微信群的二维码会经常变)和qq群821119334,问题答案云原生技术课堂,有问题可以一起讨论
-
个人微信
640.jpeg -
腾讯课堂
640-20200506145837072.jpeg -
微信公众号
640-20200506145842007.jpeg 专题讲座
2020 CKA考试视频 真题讲解 https://www.bilibili.com/video/BV167411K7hp
2020 CKA考试指南 https://www.bilibili.com/video/BV1sa4y1479B/
2020年 5月CKA考试真题 https://mp.weixin.qq.com/s/W9V4cpYeBhodol6AYtbxIA