Kubernetes服务编排的利器——Helm

博文大纲:
一、Helm简介
二、Helm组件及相关术语
1)Helm
2)Tiller
3)Chart
4)Repoistory
5)Release
三、Helm工作原理
四、部署Helm
1)安装Helm客户端
2)安装Tiller server
3)配置Helm仓库
4)测试Helm是否可

一、Helm简介

很多人都使用过Ubuntu下的ap-get或者CentOS下的yum, 这两者都是Linux系统下的包管理工具。采用apt-get/yum,应用开发者可以管理应用包之间的依赖关系,发布应用;用户则可以以简单的方式查找、安装、升级、卸载应用程序。

我们可以将Helm看作Kubernetes下的apt-get/yum。Helm是一个用于kubernetes的包管理器。每个包称为一个Chart,一个Chart是一个目录(一般情况下会将目录进行打包压缩,形成name-version.tgz格式的单一文件,方便传输和存储)。

对于应用发布者而言,可以通过Helm打包应用,管理应用依赖关系,管理应用版本并发布应用到软件仓库。

对于使用者而言,使用Helm后不用需要了解Kubernetes的Yaml语法并编写应用部署文件,可以通过Helm下载并在kubernetes上安装需要的应用。

除此以外,Helm还提供了kubernetes上的软件部署,删除,升级,回滚应用的强大功能。

二、Helm组件及相关术语

1)Helm

Helm是一个命令行下的客户端工具。主要用于Kubernetes应用程序Chart的创建、打包、发布以及创建和管理本地和远程的Chart仓库。

2)Tiller

Tiller是Helm的服务端,部署在Kubernetes集群中,Tiller用于接受Helm的请求,并根据Chart生成Kubernetes的部署文件,然后提交给kubernetes创建应用。Tiller还提供了Release的升级、删除、回滚等一系列功能。

3)Chart

Helm的软件包,采用TAR格式。类似于YUM的RPM包。其包含一组定义Kubernetes资源相关的YAML文件。

4)Repoistory

Helm的软件仓库,Repository 本质上是一个 Web 服务器,该服务器保存了一系列的 Chart 软件包以供用户下载,并且提供了一个该 Repository 的 Chart 包的清单文件以供查询。Helm 可以同时管理多个不同的 Repository。

5)Release

使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release。

注意:Helm 中提到的 Release 和我们通常概念中的版本有所不同,这里的 Release 可以理解为 Helm 使用 Chart 包部署的一个应用实例。

三、Helm工作原理

工作流程图:

Chart Install 过程:
1)Helm从指定的目录或者tgz文件中解析出Chart结构信息;
2)Helm将指定的Chart结构和Values信息通过gRPC传递给Tiller;
3)Tiller根据Chart和Values生成一个Release;
4)Tiller将Release发送给Kubernetes用于生成Release;


Chart Update过程:
1)Helm从指定的目录或者tgz文件中解析出Chart结构信息;
2)Helm将要更新的Release的名称和Chart结构,Values信息传递给Tiller;
3)Tiller生成Release并更新指定名称的Release的History;
4)Tiller将Release发送给Kubernetes用于更新Release;


Chart Rollback过程:
1)Helm将要回滚的Release的名称传递给Tiller;
2)Tiller根据Release的名称查找History;
3)Tiller从History中获取上一个Release;
4)ler将上一个Release发送给Kubernetes用于替换当前Release;

四、部署Helm

1)安装Helm客户端

[[email protected] ~]#  wget https://get.helm.sh/helm-v2.14.3-linux-amd64.tar.gz
#从GitHub上下载Helm
[[email protected] ~]# tar zxf helm-v2.14.3-linux-amd64.tar.gz
[[email protected] ~]# mv linux-amd64/helm /usr/local/bin/
[[email protected] ~]# chmod +x /usr/local/bin/helm
#只是为了获取一个Helm命令
[[email protected] ~]# echo ‘source <(helm completion bash)‘ >> /etc/profile
[[email protected] ~]# . /etc/profile
#设置命令可以自动补全

2)安装Tiller server

[[email protected] ~]# vim tiller-rbac.yaml            #编写yaml文件创建授权用户
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system
[[email protected] ~]# kubectl apply -f tiller-rbac.yaml
[[email protected] ~]# helm init --service-account=tiller
#初始化helm,并指定刚才创建的授权用户
[[email protected] ~]#  kubectl get pod -n kube-system |  grep tiller   #查看tiller的pod名称
tiller-deploy-8557598fbc-9xpsg   0/1     ErrImagePull   0          72s
#发现pod并没有运行,那是因为该pod使用的是某歌的镜像,国内下载不了,需要将镜像换成国内的镜像,这里选择阿里云
[[email protected] ~]# kubectl edit pod -n kube-system tiller-deploy-8557598fbc-9xpsg
#修改spec字段的image指定的镜像,修改前如下:
    image: gcr.io/kubernetes-helm/tiller:v2.14.3
#修改后如下:
    image: registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.3
#修改后,如果没有自动下载,就想办法吧,比如说在tiller容器所在的节点手动下载下来镜像,然后重启该节点的kubelet,或重启该容器
[[email protected] ~]# kubectl get pod -n kube-system | grep tiller
tiller-deploy-8557598fbc-9xpsg   1/1     Running   0          6m3s
#必须保证tiller的Pod正常运行

3)配置Helm仓库

[[email protected] ~]# helm repo list           #查看仓库的详细信息
NAME    URL
stable  https://kubernetes-charts.storage.googleapis.com
local   http://127.0.0.1:8879/charts
#默认情况下,仓库的地址是某歌,国内无法下载,需要更改为国内的仓库地址
[[email protected] ~]# helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
#更改为国内阿里云的仓库地址
[[email protected] ~]# helm repo list
NAME    URL
stable  https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
local   http://127.0.0.1:8879/charts
#再次查看仓库地址,可以发现地址已经换成了阿里云的仓库地址
[[email protected] ~]# helm repo update                 # 更新一下Helm仓库
[[email protected] ~]# helm version                         #查看helm版本信息
Client: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
#必须保证可以查看出来client和server,才可正常使用helm

4)测试Helm是否可以正常使用

[[email protected] ~]# helm search mysql      #搜索MySQL
#查看到的是charts包文件,查出来的版本是helm的Charts包的版本
[[email protected] ~]# helm inspect stable/mysql    #查看其详细信息
[[email protected] ~]# helm fetch stable/mysql        #下载搜索到的包到本地
[[email protected] ~]# helm install stable/mysql       #在线安装这个MySQL

如果上述测试命令都可以正常执行,则表示helm配置无误。

———————— 本文至此结束,感谢阅读 ————————

原文地址:https://blog.51cto.com/14157628/2474498

时间: 2024-08-29 23:58:35

Kubernetes服务编排的利器——Helm的相关文章

Helm - Kubernetes服务编排的利器

Helm介绍 在Kubernetes中部署容器云应用(容器或微服务编排)是一项有挑战性的工作,Helm就是为了简化在Kubernetes中安装部署容器云应用的一个客户端工具.通过Helm能够帮助开发者定义.安装和升级Kubernetes中的容器云应用.同时,也可以通过Helm进行容器云应用的分享. Helm的整体架构如下图(图片来源-Kubernetes中文社区)所示: Helm架构由Helm客户端.Tiller服务器端和Chart仓库所组成:Tiller部署在Kubernetes中,Helm客

15分钟在阿里云Kubernetes服务上快速建立Jenkins X Platform并运用GitOps管理应用发布

本文主要介绍如何在阿里云容器服务Kubernetes上快速安装部署Jenkins X Platform并结合demo实践演示GitOps的操作流程. 注意:本文中使用的jx工具.cloud-environments等做过改造用以适配阿里云Kubernetes容器服务,并未在自建Kubernetes集群中做过验证. 先决条件:首先,需要在 阿里云容器服务控制台 创建一个Kubernetes集群,本次实践使用的环境信息如下:master1 192.168.0.119master2 192.168.0

Kubernetes 系列(二):Kubernetes 服务暴露介绍

一.Kubernetes 服务暴露介绍 从 kubernetes 1.2 版本开始,kubernetes提供了 Ingress 对象来实现对外暴露服务:到目前为止 kubernetes 总共有三种暴露服务的方式: LoadBlancer Service NodePort Service Ingress 1.1.LoadBlancer Service LoadBlancer Service 是 kubernetes 深度结合云平台的一个组件:当使用 LoadBlancer Service 暴露服务

来自京东、唯品会对微服务编排、API网关、持续集成的实践分享(上)

架构师小组交流会:每期选一个时下最热门的技术话题进行实践经验分享. 第三期:微服务.微服务架构以其高度的弹性.灵活性和效率的巨大提升,快速受到各领域架构师和技术决策者的关注.它的基本理念是将一个肥大的系统拆分成若干小的服务组件,组件之间的通讯采用轻量的协议完成.我们本期小组交流会来探讨一下,现在互联网公司的微服务实践情况. 嘉宾:京东章耿.原唯品会石廷鑫.七牛陈爱珍 本文是对此次交流的整理,分了上下两篇文章. 第一轮:自由交流 京东章耿:大家好,我是京东基础架构部平台中间件的章耿,主要负责京东的

Docker之Compose服务编排

Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景. 说明:Compose是Fig的升级版,Fig已经不再维护.Compose向下兼容Fig,所有fig.yml只需要更名为docker-compose.yml即可被Compose使用. 服务编排工具使得Docker应用管理更为方便快捷. Compose网站:https://docs.docker.com/compos

(转)Docker之Compose服务编排

转自:https://www.cnblogs.com/52fhy/p/5991344.html Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景. 说明:Compose是Fig的升级版,Fig已经不再维护.Compose向下兼容Fig,所有fig.yml只需要更名为docker-compose.yml即可被Compose使用. 服务编排工具使得Docker应用管理

Docker Compose 1.18.0 之服务编排详解

一个使用Docker容器的应用,通常由多个容器组成.使用Docker Compose,不再需要使用shell脚本来启动容器.在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景. 服务编排工具使得Docker应用管理更为方便快捷. Docker Compose网站:https://docs.docke

阿里云宣布推出Serverless Kubernetes服务 30秒即可完成应用部署

摘要: 阿里云宣布推出Serverless Kubernetes服务,容器服务新增Serverless形态. 5月2日,阿里云宣布推出Serverless Kubernetes服务,容器服务新增Serverless形态.开发者可在5秒内创建集群.30秒部署应用上线.用户无需管理集群基础设施,还可根据应用实际消耗资源按量付费,此举意在进一步降低容器技术的使用门槛,简化容器平台运维的复杂度.该服务即日起开启公测. 阿里云是国内最大规模的容器公共云平台,为数千多家企业提供容器平台.新推出的Server

BoCloud博云获得CNCF Kubernetes服务提供商认证

近日,BoCloud博云正式获得 CNCF 和 Linux 基金认证的 Kubernetes 服务提供商资质(KCSP),此认证证明BoCloud博云在 Kubernetes 社区从事活动(包括积极贡献代码).支持企业最终用户的商业模式.以及将工程师派驻客户现场这三面具有相应的技术实力. KCSP 计划(全称 Kubernetes Certified Service Provider)是由 CNCF 和 Linux 基金会发起,旨在对在 Kubernetes 的企业应用中拥有丰富经验的服务商进行