helm chart 入门

259 阅读3分钟

背景

我们知道,K8s 本身是没有“应用”这个概念的。但是我们部署应用的时候,可能需要管理多个资源。把这些资源 YAML 文件都提交给 K8s 来负责运行和管理这个应用。这里面的麻烦之处在于,怎么样去管理这个应用对应的所有 k8s 资源?于是 Helm 项目提供了一种简单的思路:它定义了一种新的应用打包格式叫 Chart 。这种应用打包的方法,很大程度上解决了 K8s 应用管理困难的问题。

helm2、helm3

一开始, Helm 项目并不只希望做一个简单“ K8s 应用打包工具”。所以无论是安装还是更新应用,Helm 一定需要在 Kubernetes 集群里部署了一个叫做 Tiller 的 Server 端,然后把请求都提交给 Tiller ,再由 Tiller 去跟 K8s APIServer 进行交互,完成应用的安装操作,这个复杂的过程,可以用下图表示清楚:

image.png

因为k8s是一个声明式的一个系统,但是现在,Helm 自己也内置了应用的更新和回滚策略,并且它们与 K8s 的策略没有什么关系、都通过 Tiller 帮你完成。这就和k8s原生就发生正面冲突,比如所以在helm3就移除 Tiller、让 Helm 变成纯客户端工具。所以目前我们使用的都是helm3。

有兴趣的可以去学习一下声明式和命令式系统的区别。

helm的安装

这里以mac为例子

  1. 下载helm的压缩包github.com/helm/helm/r…
  2. 解压文件(tar -zxvf helm-v3.0.0-linux-amd64.tar.gz)
  3. 将解压出来的文件移到 /usr/local/bin/helm (mv linux-amd64/helm /usr/local/bin/helm)

helm的常用命令

1.添加仓库 
 helm repo add [name] [url]
2.查看所有仓库
helm repo list
3.更新仓库
helm repo update
4.查找应用
helm search repo linxuhub
5.创建chart 应用 
helm create linxuhub
6.查看生成的yaml文件
helm  template  linxuhub
7.应用打包
helm package linxuhub

--------以下命令可以根据需求选择命名空间  [-n namespace] ----------
8.应用安装
helm install linxuhub ./linxuhub-0.1.0.tgz 
或者  helm install linxuhub ./linxuhub/
9.查看安装的应用
helm list
10.应用更新升级 
helm upgrade linxuhub ./linxuhub-0.1.0.tgz -f new-values.yaml
11.查看values
helm get values linxuhub
12.应用回滚
helm hist linxuhub
helm rollback linxuhub 1
13.应用删除
helm delete linxuhub
14.查看应用描述文件
helm get manifest linxuhub

更多命令可以查看官网文档

chart包的简单介绍

首先,我们先创建一个chart包的模板,helm create test-chart

├──test-chart    #chart包的名称
  ├── charts     #该目录中放置当前Chart依赖的其它Chart
  ├── Chart.yaml #用于描述Chart的相关信息,包括名字、描述信息以及等。
  ├── templates  #部署文件模版目录,模版使用的值来自values.yaml
  │   ├── deployment.yaml #kubernetes Deployment
  │   ├── _helpers.tpl    #用于修改kubernetes objcet配置的模板
  │   ├── ingress.yaml    #kubernetes ingress
  │   ├── NOTES.txt    #用于介绍 Chart 部署后的一些信息,例如:如何使用这个 Chart、列出缺省的设置等。
  │   ├── service.yaml #kubernetes Serivce
  │   └── tests
  │       └── test-connection.yaml
  └── values.yaml #用于存储 templates 目录中模板文件中用到变量的值。

如果有需要,则进行简单的看一下模板的文件,看一下简单的语法。

chart包的开发流程

  1. 首先使用命令,helm create test-chart

  2. 修改我们chart包的内容,使之达到我们需求

  3. 使用helm lint test-chart 校验chart包语法

  4. 使用helm template . 使之打印出渲染的yaml文件

  5. 将helm package . 将其打包,再到服务器上镜像部署测试

参考连接

中文文档:whmzsu.github.io/helm-doc-zh…

英文文档:helm.sh/docs/topics…