一、helm的主要功能

1、创建新的chart
2、chart打包成tgz格式
3、上传chart到chart仓库或从仓库中下载chart
4、在kubernetes集群中安装或卸载chart
5、管理用helm安装的chart的发布周期

二、helm的三个重要概念

1、chart:包含了创建kubernetes的一个应用实例的必要信息
2、config:包含了应用发布配置信息
3、release:是一个chart及其配置的一个运行实例

三、helm的常用命令

helm repo list             		 //查看仓库
helm repo update //更新仓库
helm search mysql //搜索chart包
helm install stable/mysql --name mydb //安装chart
helm list //查看release
helm rollback mydb 1 //回滚到某个版本
helm delete mydb //删除release,未彻底删除,helm ls还是能查找到
helm delete mydb --purge //彻底删除release
helm ls --all //查看所有release包括已删除的
helm get manifest mydb //查看release具体信息
helm install --dry-run --debug ./mychart //调试不部署chart

四、helm install -f 更新release,

4.1、自定义config.yaml

cat config.yaml
mysqlUser: haimaxyUser
mysqlDatabase: haimaxyDB
persistence:
enabled: false //禁用pvc
service:
type: NodePort

4.2、通过配置文件修改release

helm install -f config.yaml stable/mysql --name mydb   //首次生成
helm upgrade -f config.yaml mydb stable/mysql //更新

 

五、helm create 创建使用chart案例

5.1、创建chart

helm create mychart

NOTES.txt //帮助文档
Chart.yaml //chart的meta信息,包括chart名称、版本、描述信息
values.yaml //针对模板的一些默认值,通过.Values.可以获得

5.2、将mychart/templates下的所有文件删除,自定义一个configmap.yaml

5.3、执行创建release

helm install ./mychart/

六、template的使用 

helm的template的语法使用的是go语言的template的语法,有一些内置的参数可以直接调用,如.Release.Name

apiVersion: v1
kind:Configmap
metadata:
name:{{ .Release.Name }}-configmap //release.name为自带的
data:
myvalue:"hello world"

创建之后生成的configmap名称为release名称

release.name只是内置对象的一个举例,还有其他的内置对象如下:

七、values值的来源

1、自带的变量值:如.Release.Name

2、chart.yaml和values.yaml里面的文件,可以通过.Values.变量或者.Chart.Name获取

3、helm install -f 获取的值,custom.yaml的值可以覆盖values.yaml里面的值

4、通过--set获取  //优先级最高

helm install --set replicase=2
.Values.replicase

八、template模板的使用 

8.1、管道的使用方法,

upper将.Values.course.k8s的值变成大写

更多模板参考:https://pkg.go.dev/github.com/Masterminds/sprig

8.2、template 的if-else语句,

例:判断等于的话则加上web:true标签

如图:渲染完成后,出现了空格,这是因为{{} if eq .Values.course,python "django"}}这段默认是不输出的,所以出现了空格

处理方法:添加破折号,破折号代表删除空格

重新部署之后,发现空格消失了

8.3  with语句,定义域的范围,

with .Values.hello代表一个域,.k8s和.python代表从.Values.hello域里面取值

8.4、range进行遍历

①、例:想要遍历以下courselist内的字段

解释:红框内的点代表在.Values.courselist这个域内,title代表取出的值首字母大写

②、也可以使用key,value的形式进行遍历

输出结果如下:

8.5、变量的使用

定义变量:$releaseName

8.6、helm模板之命名模板

为了避免重名,有个通用的约定就是为每个定义的模板添加上chart,{{define "mychart.lables"}},define关键字就是用来声明命名模板的,加上chart名称就可以避免不同chart间的模板出现冲突的清空

①、案例:define用来定义模板,template后接模板名称用来调用模板

渲染结果输出如下:

②、案例:为了方便使用,一般我们将template定义到一个合集中,以下划线开头代表其他都能引用

如下:将template部分复制到_helpers.tpl文件内,/**/里面的内容代表注释

③、案例:直接在当前标签添加Chart.Name 和Chart.Version,将会获取不到

渲染结果如下:

原因:定义的域不一样,导致获取不到。

需要进行修改如下:.点号代表当前域,通过当前域去获取值

渲染结果如下:

④、思考:

如上案例是在你知道labels和from,data,chart的格式的时候可以这样写没错,但是很多时候,你是不知道labels和from的排版格式的,这个时候应该怎么做?

正常情况下,咱们可能会全部写成如下key-value格式,这个时候如何调用呢?

helm提供了一个函数叫include可以解决这个问题,使用如下:indent 4 代表4个空格,记住:点号还是需要的,代表域的范围

HELM的使用的更多相关文章

  1. Why Helm? - 每天5分钟玩转 Docker 容器技术(160)

    本章我们将学习 Helm,Kubernetes 的包管理器. 每个成功的软件平台都有一个优秀的打包系统,比如 Debian.Ubuntu 的 apt,Redhat.Centos 的 yum.而 Hel ...

  2. Helm 架构 - 每天5分钟玩转 Docker 容器技术(161)

    在实践之前,我们先来看看 Helm 的架构. Helm 有两个重要的概念:chart 和 release. chart 是创建一个应用的信息集合,包括各种 Kubernetes 对象的配置模板.参数定 ...

  3. 部署 Helm - 每天5分钟玩转 Docker 容器技术(162)

    本节我们将安装和部署 Helm 客户端和 Tiller 服务器. Helm 客户端 通常,我们将 Helm 客户端安装在能够执行 kubectl 命令的节点上,只需要下面一条命令: curl http ...

  4. 使用 Helm - 每天5分钟玩转 Docker 容器技术(163)

    Helm 安装成功后,可执行 helm search 查看当前可安装的 chart. 这个列表很长,这里只截取了一部分.大家不禁会问,这些 chart 都是从哪里来的? 前面说过,Helm 可以像 a ...

  5. Helm学习笔记

    Helm学习笔记 Helm 是 Kubernetes 生态系统中的一个软件包管理工具.本文将介绍 Helm 中的相关概念和基本工作原理,并通过一个具体的示例学习如何使用 Helm 打包.分发.安装.升 ...

  6. k8s使用helm打包chart并上传到腾讯云TencentHub

    本文只涉及Helm的Chart操作,不会对其他知识进行过多描述.至于安装这块,麻烦自行百度吧,一大堆呢. 在容器化的时代,我们很多应用都可以部署在docker,很方便,而再进一步,我们还有工具可以对d ...

  7. 如何使用vs将asp.net core项目添加容器支持并发布docker镜像到私有dockerhub和添加k8s/helm管理

    这篇文章介绍一下,如何使用VS2017给asp.net core添加容器支持,并发布镜像到私有docker hub,然后用chart管理容器镜像的操作流程. 话不多说,just do it. 新建项目 ...

  8. helm 持久化部署ingres

    Ingress 是一种 Kubernetes 资源,也是将 Kubernetes 集群内服务暴露到外部的一种方式.本文将讲一讲如何用 Helm 在 Kubernetes 集群中部署 Ingress,并 ...

  9. Helm包管理工具(简介、安装、方法)

    认识Helm 每次我们要部署一个应用都需要写一个配置清单(维护一套yaml文件),但是每个环境又不一样.部署一套新的环境成本是真的很高.如果我们能够使用类似于yum的工具来安装我们的应用的话那就太好了 ...

  10. kubernetes包管理工具Helm安装

    helm官方建议使用tls,首先生成证书. openssl genrsa -out ca.key.pem openssl req -key ca.key.pem -new -x509 -days -s ...

随机推荐

  1. vue+elementUI表格实现自定义右键菜单

    组件代码: <template> <div id="contextmenu" class="contextmenu open"> < ...

  2. 使用WTM框架项目的部署遇到的问题及解决方式

    .打开web.config找到stdoutLogEnabled="false",把该值改为true,即->stdoutLogEnabled="true"1 ...

  3. 慢sql_查询条件加了函数导致索引失效

    问题背景:生产环境查询很慢,通过skywaking全链路监控发现/get请求相关的一个sql为慢sql,慢的原因在于查询字段使用了加解密函数(  CONVERT(AES_DECRYPT(UNHEX(` ...

  4. Git探究

    Git Git是什么? Git是一个开源的分布式版本控制系统. 1.什么是版本控制? 字面意思,控制版本,存储.追踪目录和文件的修改历史.市面上有各式各样的版本控制工具,比较常用的SVN.Git等等. ...

  5. 代替宝塔的webmin搭建

    webmin官网 对于IBM的服务器,cpu架构不同于常见的x86或aarch64,部分第三方软件是无法正常安装的,比如大名鼎鼎的宝塔面板,对于像我一样的新手很不友好,这里分享一款代替宝塔的web管理 ...

  6. Python异步爬取梁羽生小说网

    才知道写在文章里面不是原创... https://www.cnblogs.com/kebei/articles/14659937.html

  7. vue.cli的安装配置

    关于旧版本 Vue CLI 的包名称由 vue-cli 改成了 @vue/cli. 如果你已经全局安装了旧版本的 vue-cli(1.x 或 2.x),你需要先通过 npm uninstall vue ...

  8. 统一单点登录&跳转

    在客户端输入地址(xxx.xxx.xxx/controll/方法/参数) 服务端到controll层 进行数据匹配 跳转 前端响应情况 图片跳转与列表跳转 图片:编写跳转函数 列表公用图片跳转函数,@ ...

  9. Jquery 简单实现demo

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. TIDB-DM数据迁移第三部(集群管理)

    1.对现在 dm 集群进行缩容,将 free 状态的 worker 下线. tiup dm display dm-test 查看 free 状态节点 tiup dm scale-in dm 172.1 ...