一、什么是Helm
(一)引入
一般部署单一的应用,比如nginx,是通过编写yaml文件然后进行deployment、Service、Ingress这样的过程,但是假如现在需要部署几十个单体应用,这样的部署方式太过于繁琐,那么Helm就可以解决这样的问题,在Helm的官网上是这样介绍它的:
The package manager for Kubernetes,是kubernetes包管理的工具,所以类似于yum、apt这样的包管理工具。可以方便的将yaml文件部署到kubernetes集群中。它可以解决下面一系列的问题:
- 多个yaml文件进行整体管理
- yaml文件的高效复用
- 进行应用级别的版本管理
(二)重要概念
Helm中的重要概念:
- Chart 代表Helm的包,可以理解为yum的rpm包,是yaml文件的集合
- Repository 是用来存放和共享 charts 的地方,它是供 Kubernetes 包所使用的。
- Release 是运行在 Kubernetes 集群中的 chart 的实例,每安装一次chart就会产生一个新的release,进行应用级别的版本管理
- helm 是一个命令行客户端工具
二、Helm实践
(一)安装Helm
下载安装包并解压:
# 下载 [root@k8smaster ~]# wget https://get.helm.sh/helm-v3.6.1-linux-amd64.tar.gz # 解压 [root@k8smaster ~]# tar -xzvf helm-v3.6.1-linux-amd64.tar.gz
在解压目中找到helm程序,移动到需要的目录中(mv linux-amd64/helm /usr/local/bin/helm)
[root@k8smaster ~]# mv linux-amd64/helm /usr/local/bin/helm
(二)配置Helm仓库
- 微软仓库 http://mirror.azure.cn/kubernetes/charts/
- 阿里云仓库 https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
- 官方仓库 https://hub.kubeapps.com/charts/incubator
# 添加仓库 [root@k8smaster ~]# helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts "aliyun" has been added to your repositories [root@k8smaster ~]# helm repo add stable http://mirror.azure.cn/kubernetes/charts/ "stable" has been added to your repositories # 查看仓库 [root@k8smaster ~]# helm repo list NAME URL aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts stable http://mirror.azure.cn/kubernetes/charts/
当然helm哈有很多其它命令,比如:
helm repo update # 更新仓库 helm repo remove aliyun #删除仓库 ...
更多信息查看 helm --help.
(三)部署应用
1、搜索应用
# 通过helm search repo 名称 [root@k8smaster ~]# helm search repo weave NAME CHART VERSION APP VERSION DESCRIPTION aliyun/weave-cloud 0.1.2 Weave Cloud is a add-on to Kubernetes which pro... aliyun/weave-scope 0.9.2 1.6.5 A Helm chart for the Weave Scope cluster visual... stable/weave-cloud 0.3.9 1.4.0 DEPRECATED - Weave Cloud is a add-on to Kuberne... stable/weave-scope 1.1.12 1.12.0 DEPRECATED - A Helm chart for the Weave Scope c...
2、进行安装
# helm install 安装后应用名称 搜索后应用名称 [root@k8smaster ~]# helm install app-ui stable/weave-scope # 查看安装列表 [root@k8smaster ~]# helm list # 查看安装状态 [root@k8smaster ~]# helm status app-ui
3、修改服务端口
可以到已经安装好了,然后再查看一下服务:
[root@k8smaster ~]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE app-ui-weave-scope ClusterIP 10.107.225.177 <none> 80/TCP 7m8s
不过貌似没有对外暴露端口,Service的类型是ClusterIP,所以需要改成NodePort类型:
# 编辑资源文件 [root@k8smaster ~]# kubectl edit svc app-ui-weave-scope
将其中的type字段的ClusterIP修改为NodePort即可:
[root@k8smaster ~]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE app-ui-weave-scope NodePort 10.107.225.177 <none> 80:31491/TCP 13m
访问集群任何节点的31491端口即可。