helm 是基于 kubernetes 的包管理器。它之于 kubernetes 就如 yum 之于 centos,pip 之于 python,npm 之于 javascript
那
helm
的引入对于管理集群有哪些帮助呢?可体现在基础运维建设及业务应用两方面
基础设施,更方便地部署与升级基础设施,如
gitlab
,
prometheus
,
grafana
,
ES
等业务应用,更方便地部署,管理与升级公司内部应用,为公司内部的项目配置 Chart,使用
helm
结合 CI,在 k8s 中部署应用如一行命令般简单让开发人员写
k8s
资源配置文件是不现实的
不是所有开发都了解 k8s,或者说很少,不了解 k8s 很难写资源配置部署文件
开发的主要职能还是在业务上
于是
helm
应时而出,运维通过
helm
配置好资源文件模板,然后交给开发填参数。Helm
Helm 是一个命令行下的客户端工具。主要用于 Kubernetes 应用程序 Chart 的创建、打包、发布以及创建和管理本地和远程的 Chart 仓库。
Tiller(helm3已经没有了)
Tiller 是 Helm 的服务端,部署在 Kubernetes 集群中。Tiller 用于接收 Helm 的请求,并根据 Chart 生成 Kubernetes 的部署文件( Helm 称为 Release ),然后提交给 Kubernetes 创建应用。Tiller 还提供了 Release 的升级、删除、回滚等一系列功能。
Chart
Helm 的软件包,采用 TAR 格式。类似于 APT 的 DEB 包或者 YUM 的 RPM 包,其包含了一组定义 Kubernetes 资源相关的 YAML 文件。
Repoistory
Helm 的软件仓库,Repository 本质上是一个 Web 服务器,该服务器保存了一系列的 Chart 软件包以供用户下载,并且提供了一个该 Repository 的 Chart 包的清单文件以供查询。Helm 可以同时管理多个不同的 Repository。
https://blog.csdn.net/Michaelwubo/article/details/108703681
Release
使用
helm install
命令在 Kubernetes 集群中部署的 Chart 称为 Release。Helm 有两个重要得概念:chart 和 release
chart :是创建一个应用的信息集合,包括各种 kubernetes 对象得配置模板、参数定义、依赖关系、文档说明等,可以将 chart 想象成 yum 中的软件安装包
release :是 chart 的运行实例,代表了一个正在运行的应用。当 chart 被安装到 kubernetes 集群,就会生成一个 release,chart 能够多次安装到同一个集群,但是只会有一个 release
1、下载
[root@localhost ingress]# wget https://get.helm.sh/helm-v3.1.0-linux-amd64.tar.gz
2、解压
tar -zxvf helm-v3.2.0-linux-amd64.tar.gz
3、拷贝
cp linux-amd64/helm /usr/local/bin
4、验证
[root@localhost ingress]# helm version
version.BuildInfo{Version:"v3.1.0", GitCommit:"b29d20baf09943e134c2fa5e1e1cab3bf93315fa", GitTreeState:"clean", GoVersion:"go1.13.7"}
5、添加 chart 源
[root@localhost ingress]# helm repo add aliyuncs https://apphub.aliyuncs.com
6、查询当前集群有哪些 chart 库
[root@localhost ingress]# helm repo list
NAME URL
aliyuncs https://apphub.aliyuncs.com
7、查询某个库 有哪些安装程序
[root@localhost ingress]# helm search repo aliyuncs | head -5
NAME CHART VERSION APP VERSION DESCRIPTION
aliyuncs/admin-mongo 0.1.0 1 MongoDB管理工具(web gui)
aliyuncs/aerospike 0.3.2 v4.5.0.5 A Helm chart for Aerospike in Kubernetes
aliyuncs/airflow 4.3.3 1.10.9 Apache Airflow is a platform to programmaticall...
aliyuncs/ambassador 5.3.0 0.86.1 A Helm chart for Datawire Ambassador
8、查找安装程序
[root@localhost ingress]# helm search repo nginx
NAME CHART VERSION APP VERSION DESCRIPTION
aliyuncs/nginx 5.1.5 1.16.1 Chart for the nginx server
aliyuncs/nginx-ingress 1.30.3 0.28.0 An nginx Ingress controller that uses ConfigMap...
aliyuncs/nginx-ingress-controller 5.3.4 0.29.0 Chart for the nginx Ingress controller
aliyuncs/nginx-lego 0.3.1 Chart for nginx-ingress-controller and kube-lego
aliyuncs/nginx-php 1.0.0 nginx-1.10.3_php-7.0 Chart for the nginx php server
9、安装一个程序
helm install nginx liyuncs/nginx
10、查询 svc
[root@master1 ~]# kubectl get svc -n default
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 116m
nginx LoadBalancer 10.99.247.71 <pending> 80:30300/TCP,443:32617/TCP 45s
11、访问 集群
[root@master1 ~]# curl http://10.99.247.71
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
.......
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
12、查看安装的应用
[root@master1 ~]# helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
nginx default 1 2020-12-15 11:48:13.181211885 +0800 CST deployed nginx-5.1.5 1.16.1
13、删除一个应用
helm uninstall nginx