# 1.什么是Helm ## 1.之前部署应用的基本过程 1. 编写yaml文件 2. deployment 3. 创建service 4. ingress域名管理 缺陷 如果部署单一应用,少数应用,比较合适 比如部署微服务项目,可以由几十个服务,每个服务都有一套yaml文件,需要维护大量yaml文件,版本管理特别不方便 ## 2.使用helm可以解决什么问题 1. 使用helm可以把这些yaml作为一个整体管理 2. 实现yaml文件高效复用 3. 使用helm应用级别的版本管理 ## 3.Helm是什么 Helm 是 Kubernetes 的包管理器。包管理器类似于我们在 Ubuntu 中使用的apt、Centos中使用的 yum 或者Python中的 pip 一样,能快速查找、下载和安装软件包。Helm 由客户端组件 helm 和服务端组件 Tiller 组成,能够将一组K8S资源打包统一管理,是查找、共享和使用为Kubernetes构建的软件的最佳方式。 Helm类似于yum安装指令,统一对安装服务进行管理,使得用户不需要关系服务之间的依赖关系。 ## 4.Helm 相关组件及概念 * helm 是一个命令行工具,用于本地开发及管理chart,chart仓库管理等 * chart Helm的打包格式叫做chart,所谓chart就是一系列文件, 它描述了一组相关的 k8s 集群资源 * release 使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release 本质是部署实体 ## 5.helm的V3版本新变化 1. v3版本删除Tiller 2. release可以在不同命名空间重用 3. 将chart推送到docker仓库中 v3之前版本架构图 ![image-20210701210351090](../照片/image-20210701210351090.png) v3版本 ![image-20210701210558888](../照片/image-20210701210558888.png) # 2.helm安装与使用 第一步 下载helm安装文件,上传系统 第二步 解压文件复制到/usr/bin 目录下 | 命令 | 描述 | | ---------- | ------------------------------------------------------------ | | create | 创建一个chart并指定名字 | | dependency | 管理chart依赖 | | get | 下载一个release。可用子命令:all、hooks、manifest、notes、values | | history | 获取release历史 | | install | 安装一个chart | | list | 列出release | | package | 将chart目录打包到chart存档文件中 | | pull | 从远程仓库中下载chart并解压到本地#helmpullstable/mysql–untar | | repo | 添加,列出,移除,更新和索引chart仓库。可用子命令:add、index、list、remove、update | | rollback | 从之前版本回滚 | | search | 根据关键字搜索chart。可用子命令:hub、repo | | show | 查看chart详细信息。可用子命令:all、chart、readme、values | | status | 显示已命名版本的状态 | | template | 本地呈现模板 | | uninstal | 卸载一个release | | upgrade | 更新一个release | | version | 查看helm客户端版本 | 添加仓库 helm repo add 仓库名称 仓库地址 helm repo add stable http://mirror.azure.cn/kubernetes/charts helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts helm repo update 查看配置的存储库 helm repo list helm search repo stable 删除存储库 helm repo remove aliyun # 3.使用helm快速部署应用 ``` helm search repo weave helm show chart stable/mysql helm install ui stable/weave-scope helm list helm status ui ``` # 4.自己搭建chart ## 1.使用命令搭建chart helm create chart 名称 目录解释: charts:空目录,一般不会写什么 Chart.yaml:chart的基本信息,包括版本名字之类 templates:存放yaml文件 values.yaml:存放全局变量,templates下的文件可以调用 ## 2.在templates文件创建两个yaml文件 deployment.yaml service.yaml ## 3.安装 helm install web1 mychart/ ## 5.升级 helm upgrade chart 名称 目录 # 5.helm实现yaml文件高效复用 yaml文件有几个地方不同 * image * tag * label * port * replicas ## 1.在values.yaml定义变量和值 replicas: 1 image: nginx tag: 1.19 label: nginx port: 80 ## 2.在具体yaml文件定义变量值 在templates的yaml文件使用values.yaml定义变量 通过表达式形式使用全局变量:{{ .Values.变量 }} {{ .Release.Name }}取到当前版本的名称