Kubernetes学习之Helm包管理器

一、认识Helm
  在之前的文章中的应用部署过程可知,在Kubernetes系统上面部署容器化应用时需要事先手动编写资源配置清单文件,而且其每一次的配置定义基本上都是硬编码。基本上无法实现复用。对于较大规模的应用场景、分发、版本控制、查找、回滚甚至是查看都将是用户的噩梦。Helm却可以大大的简化应用管理的难度。
  简单来说,Helm就是Kubernetes的应用程序包管理器,类似于Linux系统之上的yum或apt-get等。可用于实现帮助用户查找、分享及使用Kubernetes应用程序,目前的版本由CNCF所维护。它的核心打包功能组件称为chart,可以帮助用户创建、安装及升级复杂应用。
  Helm将Kubernetes的资源(如Deployment、Service或ConfigMap等)打包到一个Chart中,制作并测试完成的各个Charts将保存到Charts仓库进行存储和分发。另外,Helm实现了可配置的发布,它支持应用配置的版本管理,简化了Kubernetes部署应用的版本控制、打包、发布、删除和更新等操作。Helm的架构图如下图所示:
  在这里插入图片描述
  简单来说,Helm其实就是一个基于Kubernetes的程序包(资源包)管理器,它将一个应用的相关资源组织成Charts,并通过Charts管理程序包,其使用优势可以简单总结为如下几个方面:

  • 管理复杂应用:Charts能够描述哪怕是最复杂的程序结构,其提供了可重复使用的应用安装的定义。
  • 易于升级:使用就地升级和自定义钩子来解决更新的难题。
  • 简单分享:Charts易于通过公共或私有服务完成版本化、分享及主机创建。
  • 回滚:可使用"helm rollback"命令轻松实现快速回滚。

二、Helm的核心术语及架构
  Helm将Kubernetes应用的相关配置组织成Charts,并通过它完成应用的常规管理操作。通常来说,使用Charts管理应用的流程包括从0开始创建Charts、将Charts及其相关的文件打包为归档格式、将Charts存储于仓库(repository)中并与之交互、在Kubernetes集群中安装或卸载Charts以及管理经Helm安装的应用的版本发行周期,因此,对Helm来说,它具有以下几个关键概念:

  • Charts:即一个Helm的程序包,它包含运行了一个Kubernetes应用所需要的镜像、依赖关系和资源的定义等等,必要时还会包含Service的定义;它类似于APT的dpkg文件或者yum的rpm文件。
  • Repository:Charts的仓库,用于集中存储和分发Charts,类似于Perl的CPAN,或者Python的PYPI。
  • Config:应用程序实例化安装运行时使用的配置信息。
  • Release:应用程序实例化运行于Kubernetes集群中的一个Charts实例,在同一个集群上,一个Charts可以使用不同的Config重复安装多次,每次安装都会创建一个新的Release。
      事实上,Charts更像是存储于Kubernetes集群之外的程序,它的每次安装是指在集群中使用专门配置运行一个实例,执行过程有点类似于在操作系统上基于程序启动一个进程。
      Helm主要是由Helm客户端、Tiller服务器和Charts仓库(repository)组成。
      在这里插入图片描述
      Helm客户端是命令行客户端工具,采用Go语言编写,基于gRPC协议与Tiller server进行交互。它主要完成如下任务:
  • 本地Charts开发
  • 管理Charts仓库
  • 与Tiller服务器交互:发送Charts以安装、查询Release的相关信息以及升级或卸载已有的Release。  
      Tiller server是托管运行于Kubernetes集群之中的容器化服务应用,它接收来自Helm客户端的请求,并在必要时于Kubernetes API Server进行交互。它主要完成以下任务:
  • 监听来自于Helm客户端的请求。
  • 合并Charts和配置以构建一个Release。
  • 向Kubernetes集群安装Charts并对相应的Release进行跟踪。
  • 升级和卸载Charts
      通常,用户于Helm客户端本地遵循其格式编写Charts文件,而后即可部署于Kubernetes集群之上运行为一个特定的Release。仅在有分发需求时,才应该将同一应用的Charts文件打包成归档压缩格式提交到特定的Charts仓库。仓库既可以运行为公共托管平台,也可以是用户自建的服务器,仅供特定的组织或个人使用。

三、Helm的安装

1)创建helm目录并下载helm(需要主机提前配置科学上网)

]# mkdir helm 
]# cd helm
]# curl -L https://git.io/get_helm.sh | bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
100  7160  100  7160    0     0   3692      0  0:00:01  0:00:01 --:--:-- 19724
Downloading https://get.helm.sh/helm-v2.17.0-linux-amd64.tar.gz
Preparing to install helm and tiller into /usr/local/bin
helm installed into /usr/local/bin/helm
tiller installed into /usr/local/bin/tiller
Run 'helm init' to configure helm.

2)创建Tiller的Service Account

]# vim helm-rbac.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system
 
]# kubectl apply -f helm-rbac.yaml 
serviceaccount/tiller created
clusterrolebinding.rbac.authorization.k8s.io/tiller created

3)初始化Helm

]# helm init --service-account=tiller --history-max 300 
Creating /root/.helm 
Creating /root/.helm/repository 
Creating /root/.helm/repository/cache 
Creating /root/.helm/repository/local 
Creating /root/.helm/plugins 
Creating /root/.helm/starters 
Creating /root/.helm/cache/archive 
Creating /root/.helm/repository/repositories.yaml 
Adding stable repo with URL: https://charts.helm.sh/stable 
Adding local repo with URL: http://127.0.0.1:8879/charts 
$HELM_HOME has been configured at /root/.helm.

Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.

Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.
To prevent this, run `helm init` with the --tiller-tls-verify flag.
For more information on securing your installation see: https://v2.helm.sh/docs/securing_installation/

4)查看Tiller资源信息

]# kubectl get deployment tiller-deploy -n kube-s
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值