12.Helm.md 4.7 KB

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

v3版本 image-20210701210558888

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 }}取到当前版本的名称