八 Kubernetes学习Helm应用包管理器

为什么需要Helm
K8S上的应用对象 , 都是由特定的资源描述组成 , 包括、等 。都保存各自文件中或者集中写到一个配置文件 , 然后 apply –f 部署 。
如果应用只由一个或几个这样的服务组成 , 上面部署方式足够了 。
而对于一个复杂的应用 , 会有很多类似上面的资源描述文件 , 例如微服务架构应用 , 组成应用的服务可能多达十个 , 几十个 。如果有更新或回滚应用的需求 , 可能要修改和维护所涉及的大量资源文件 , 而这种组织和管理应用的方式就显得力不从心了 。
且由于缺少对发布过的应用版本管理和控制 , 使上的应用维护和更新等面临诸多的挑战 , 主要面临以下问题:
什么是Helm
Helm是一个的包管理工具 , 就像Linux下的包管理器 , 如yum/apt等 , 可以很方便的将之前打包好的yaml文件部署到上 。
Helm有几个重要概念:
Helm客户端 1、部署Helm客户端
Helm客户端下载地址: · helm/helm ·
解压移动到/usr/bin/目录即可
2、Helm常用命令
命令
描述
创建一个chart并指定名字
管理chart依赖
get
下载一个 。可用子命令:all、hooks、、notes、
获取历史
安装一个chart
list
列出
将chart目录打包到chart存档文件中
pull
从远程仓库中下载chart并解压到本地 # helm pull /mysql --untar
repo
添加 , 列出 , 移除 , 更新和索引chart仓库 。可用子命令:add、index、list、、
从之前版本回滚
根据关键字搜索chart 。可用子命令:hub、repo
show
查看chart详细信息 。可用子命令:all、chart、、
显示已命名版本的状态
本地呈现模板
卸载一个
更新一个
查看helm客户端版本
需要自定义chart配置选项 , 安装过程中有两种方法可以传递配置数据:
yaml与set使用:

八  Kubernetes学习Helm应用包管理器

文章插图
helm 命令可以从多个来源安装:
chart存储库本地chart存档(helmfoo-0.1.1.tgz)chart目录(helmpath/to/foo)完整的URL(helm) Helm基本使用 构建一个Helm Chart
# helm create mychartCreating mychart# tree mychart/mychart/├── charts├── Chart.yaml├── templates│├── deployment.yaml│├── _helpers.tpl│├── ingress.yaml│├── NOTES.txt│└── service.yaml└── values.yaml
Chart模板
Helm最核心的就是模板 , 即模板化的K8S 文件 。
它本质上就是一个Go的模板 。Helm在Go 模板的基础上 , 还会增加很多东西 。如一些自定义的元数据信息、扩展的库以及一些类似于编程形式的工作流 , 例如条件语句、管道等等 。这些东西都会使得我们的模板变得更加丰富 。
[root@master demo-nginx]# tree.├── charts├── Chart.yaml├── templates│├── deployment.yaml│└── service.yaml└── values.yaml2 directories, 4 files[root@master demo-nginx]# cat templates/deployment.yaml apiVersion: apps/v1kind: Deploymentmetadata:name: myappspec:selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- name: myappimage: nginxresources:limits:memory: "128Mi"cpu: "500m"ports:- containerPort: 80[root@master demo-nginx]# cat templates/service.yaml apiVersion: v1kind: Servicemetadata:name: myappspec:selector:app: myappports:- port: 80targetPort: 80[root@master demo-nginx]#