Helm3入门教程全系列,26小时轻松掌握Helm
Posted 孔子-说
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Helm3入门教程全系列,26小时轻松掌握Helm相关的知识,希望对你有一定的参考价值。
很多人都使用过Ubuntu下的ap-get或者CentOS下的yum, 这两者都是Linux系统下的包管理工具。采用apt-get/yum,应用开发者可以管理应用包之间的依赖关系,发布应用;用户则可以以简单的方式查找、安装、升级、卸载应用程序。我们可以将Helm看作Kubernetes下的apt-get/yum。Helm是Deis (https://deis.com/) 开发的一个用于kubernetes的包管理器。每个包称为一个Chart,一个Chart是一个目录(一般情况下会将目录进行打包压缩,形成name-version.tgz格式的单一文件,方便传输和存储)。
-
对于应用发布者而言,可以通过Helm打包应用,管理应用依赖关系,管理应用版本并发布应用到软件仓库。
-
对于使用者而言,使用Helm后不用需要了解Kubernetes的Yaml语法并编写应用部署文件,可以通过Helm下载并在kubernetes上安装需要的应用。
-
除此以外,Helm还提供了kubernetes上的软件部署,删除,升级,回滚应用的强大功能。
本系列教程由浅入深,带你一步步了解学习helm的相关知识点,26小时轻松掌握helm。
Helm是Kubernetest(k8s)的包管理工具,类似Linux系统常用的 apt、yum等包管理工具。使用helm可以简化k8s应用部署,它能够把创建一个应用所需的所有 Kubernetes API 对象声明文件组合并打包在一起。并提供了仓库的机制便于分发共享,还支持模版变量替换,同时还有版本的概念,能够对应用的版本进行统一化管理。
安装Helm3的先决条件想要成功和正确地使用Helm,需要以下前置条件。1.安装或者使用现有的Kubernetes集群使用Helm,需要一个Kubernetes集群。对于Helm的最新版本,建议使用Kubernetes的最新稳定版, 在大多数情况下,它是倒数第二个次版本。
charts 是 Helm 要使用的包格式。它是一个描述 Kubernetes 相关资源的文件集合。一个 charts 可以用来部署一个简单的或者复杂的应用。例如数据库、消息队列、web 服务等等。通过创建一个特定目录树和文件来形成 chart,并将他们打包到一个带有版本号的压缩包中就可以进行部署了。
chart 是描述相关的一组 Kubernetes 资源的文件集合,是Helm要的包格式。单个chart可能用于部署简单的东西,比如 memcached pod,或者一些复杂的东西,比如完整的具有HTTP服务、数据库、消息队列、缓存等的 Web 应用程序。通过创建一个特定目录树和文件来形成chart,并将它们打包到一个带有版本号的压缩包中就可以进行部署了。
在Kubernetes环境中使用Helm来管理应用颇为方便,在教程的这部分,我们一起来开发一个Chart(简单说就是一个软件包),这样的实战可加深对Chart的理解,今后在使用第三方的Chart时,不论学习还是修改都会更加得心应手。
对象可以通过模板引擎传递到模板中,当然你的代码也可以传递对象。在上一讲中编写第一个 chart 的时候,我们引用了一个 Helm 的内置对象 .Relases.Name
,这个内置对象可以获取到安装 chart 时的 release 的名称并且注入到模板中进行替换。
Helm3 常用命令,包括Helm3 仓库、charts的创建及打包、charts上传到仓库、安装charts、Helm3 release等常用命令的介绍。
到目前为止,我们已经知道了如何将数据传入到模板中。但是传入的数据并不能被修改。Helm 提供了一种方式“函数”,可以实现传入数据的转换。Helm 有超过60个可用函数,通过使用这些函数,我们可以非常方便的对转入的数据进行转换。Helm函数大部分都是 Sprig 模板库,也有一些通过 Go模板语言本身定义。
Helm 包含了很多可以在模板中利用的模板函数。包括密码安全、日期、字典、逻辑与流程控制、列表、正则表达式、字符串、类型转换、统一资源定位等17大类的模板函数,本节主要介绍逻辑与流程控制函数(Logic and Flow Control)。
Helm 包含了很多可以在模板中利用的模板函数。包括密码安全、日期、字典、逻辑与流程控制、列表、正则表达式、字符串、类型转换、统一资源定位等17大类的模板函数,本节主要介绍字符串函数(String)。
Helm3入门教程-11:模板函数3-类型转换及正则表达式函数
Helm 包含了很多可以在模板中利用的模板函数。包括密码安全、日期、字典、逻辑与流程控制、列表、正则表达式、字符串、类型转换、统一资源定位等17大类的模板函数,本节主要介绍类型转换函数(Type Conversion)及正则表达式函数(Regular Expressions)。
Helm3入门教程-12:模板函数4-密码安全及编码解码函数
Helm 包含了很多可以在模板中利用的模板函数。包括密码安全、日期、字典、逻辑与流程控制、列表、正则表达式、字符串、类型转换、统一资源定位等17大类的模板函数,本节主要介绍密码安全函数(Cryptographic and Security)及编码解码函数(Encoding)。
Helm 包含了很多可以在模板中利用的模板函数。包括密码安全、日期、字典、逻辑与流程控制、列表、正则表达式、字符串、类型转换、统一资源定位等17大类的模板函数,本节主要介绍日期函数(Date)。
Helm 包含了很多可以在模板中利用的模板函数。包括密码安全、日期、字典、逻辑与流程控制、列表、正则表达式、字符串、类型转换、统一资源定位等17大类的模板函数,本节主要介绍字典函数(Date Functions)。
Helm 包含了很多可以在模板中利用的模板函数。包括密码安全、日期、字典、逻辑与流程控制、列表、正则表达式、字符串、类型转换、统一资源定位等17大类的模板函数,本节主要介绍列表函数(Lists Functions)。
Helm 包含了很多可以在模板中利用的模板函数。包括密码安全、日期、字典、逻辑与流程控制、列表、正则表达式、字符串、类型转换、统一资源定位等17大类的模板函数,本节主要介绍数学计算函数(Math Functions)。
Helm3入门教程-17:模板函数9-网络函数、文件路径函数、反射函数
Helm 包含了很多可以在模板中利用的模板函数。包括密码安全、日期、字典、逻辑与流程控制、列表、正则表达式、字符串、类型转换、统一资源定位等17大类的模板函数,本节主要介绍网络函数(Network Functions)、文件路径函数(File Path Functions)、反射函数(Reflection Functions)。
Helm3入门教程-18:模板函数10-语义版本函数、URL函数、UUID函数
Helm 包含了很多可以在模板中利用的模板函数。包括密码安全、日期、字典、逻辑与流程控制、列表、正则表达式、字符串、类型转换、统一资源定位等17大类的模板函数,本节主要介绍语义版本函数(Semantic Version Functions)、URL函数(URL Functions)、UUID函数(UUID Functions)、k8s函数。
Helm3入门教程-19:Helm3 的流程控制及控制空格的特殊字符
控制结构(在模板语言中称为"actions")提供给你和模板作者控制模板迭代流的能力。 Helm的模板语言提供了以下控制结构:
- if/else, 用来创建条件语句
- with, 用来指定范围
- range, 提供"for each"类型的循环
除了这些之外,还提供了一些声明和使用命名模板的关键字:
- define 在模板中声明一个新的命名模板
- template 导入一个命名模板
- block 声明一种特殊的可填充的模板块
在编程语言中还有一个很重要的概念“变量”,在 Helm 模板中也有变量,只是使用变量的场合不是特别多,但是在合适的时候使用变量可以很好的解决我们的问题。如变量搭配 with
和 range
使用,可以有效的简化代码。在 Helm 模板中,变量是对另一个对象的命名引用。
到目前为止,我们只看到在一个文件声明的一个模板。但是Helm模板语言一个很强大的特性是能够声明多个模板并将它们一起使用。在本节中,我们将看到如何在一个文件中定义命名模板,然后在别处使用它们。
Helm3入门教程-22:使用 Files 方法在模板中读取文件内容
前面我们介绍了几种创建和访问命名模板的方法,这可以很容易地从一个模板中导入另一个模板,但是有的时候我们需要导入的是一个普通的文件内容而不是模板文件。就此 Helm 提供了 .Files
对象用于访问文件,其中包含了一些方法用于处理文件中的内容。
Helm3入门教程-23:NOTES.txt 和 .helmignore文件
在本节中,我们将看到可以向你的 chart 用户提供说明的Helm工具。在 helm install
或 helm upgrade
命令的最后,Helm会打印出对用户有用的信息。这些信息是可以使用模板高度定制的。同时我们也会介绍 .helmignore
文件,该文件用来指定你不想包含在你的helm chart中的文件。
到目前为止,我们只使用了一个chart。但chart可以使用依赖,称为子chart,它们也有自己的值和模板。该章节我们会创建一个子chart并看到从模板中访问值的不同方法。在深入研究代码之前,需要了解一些子chart的重要细节:子chart被认为是“独立的”,意味着子chart从来不会显示依赖它的父chart。
调试模板可能很棘手,因为模板是在Tiller服务器上渲染的,而不是在Helm客户端上。然后将渲染后的模板发送给了 Kubernetes API 服务器,该服务器可能会因为格式以外的原因拒绝YAML文件。
本指南旨在为chart开发人员提供对如何使用Helm模板语言的深入理解,侧重于模板开发的技术方面。但是,当涉及到chart的日常实际开发时,本指南有许多事情没有涉及。这里有一些有用的文档链接及参考资料,可以帮助你创建新的chart。
以上是关于Helm3入门教程全系列,26小时轻松掌握Helm的主要内容,如果未能解决你的问题,请参考以下文章