Helm

2022/5/3 k8sDevops

# 1.为什么需要helm

  • 如果我们不用helm,进行部署应用的基本过程
    • 编写yaml文件
    • 通过Deployment来部署pod
    • 用Service做服务发现
    • Ingress做端口暴露

上面这种方式,部署单一应用,少数服务的应用还是比较适合的,但如果部署微服务项目,可能几十个服务,每个服务都有一套yaml文件,那维护这个yaml文件就会很麻烦,还有版本管理也不方便。

helm官网 (opens new window)

# 2.helm可以解决那些问题

  • 使用helm可以把我们的yaml文件作为一个整体管理
  • 实现yaml高效复用
  • 使用helm实现应用级别的版本管理

# 3.helm介绍

Helm 是一个Kubernetes的包管理工具,就想Linux下的包管理器,如yum/apt 等, 可以很方便的将之前打包好的 yaml 文件 部署到 k8s上

# 3个重要概念

  • helm:是一个命令式行客户端,主要用于K8s应用 chart 的创建、打包、发布和管理

  • Chart:应用描述,一系列用于描述k8s资源相关文件的集合 (就是把yaml打包,yaml的集合)

  • Release:基于Chart的部署实体,一个chart被helm运行后将会生成对应的一个release,将在k8s中创建出真实运行的资源对象 (可实现应用级别的版本管理)

# 4.helm v3版本的一些变化

v3版本是2019发布的

V3之前的架构:


tu


v3+ 的架构:


tu


可以看到 v3 和 v3之前版本 的架构是有一些变化的

  • 删除了 Tiller
  • release可在不同命名空间重用
  • 可以将chart推到docker仓库中

# 5.helm 的安装和配置

这个就直接按照官网的文档,一步步来就可以,而且官网文档很nice

官网文档:https://helm.sh/zh/docs/intro/install/

一般通过把helm的压缩包上传到服务器中解压安装就可以了

tar zxvf helm-v3.x.x.x-linux-amd64.tar.gz

把解压后的包移动到 mv /usr/bin

  • 配置helm仓库的一些常用命令
helm repo add  [repoName] [repoUrl]
helm repo update
helm list
helm remove [repoName]
1
2
3
4

# 6.helm快速部署应用

  • 使用命令搜索应用:helm search repo [rappName] wave
  • 根据搜索内容进行选择安装:helm install [installName] [originName]
    • 查看状态:helm list
    • helm status [installName]

# 7.创建/升级一个自定义的Chart

  1. 首先
helm create [chartName]  /  helm upgrade [chartName]
1
  1. 然后可进入一个Chart文件夹
  • chart.yaml: 当前chart属性配置信息
  • templates: 编写yaml文件放到这个目录中
  • values.yaml: yaml文件可以用到的全局变量

# 8.如何给Chart中 templates 里面的yaml文件复用

  • 可以通过变量的形式来配置 在values.yaml 文件中定义Chart的全局变量 在values.yaml 中定义变量
imageName: nginx
port: 8080
1
2
  • 在templates的yaml文件中使用
{{ .Valuse.变量名称 }}
使用 {{ .Release.Name}} 根据版本动态生成名称 
1
2
Last Updated: 2022/8/13 下午12:28:10