helm使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了helm使用相关的知识,希望对你有一定的参考价值。
参考技术A helm是k8s的包管理工具,类似于centos的yum,k8s将管理的资源都抽象成api,并且推荐使用声明方式创建,修改,删除这些对象,每个 API 对象都通过一个 yaml 格式或者 json 格式的文本来声明。这带来的一个问题就是这些 API 对象声明文本的管理成本,每当我需要创建一个应用,都需要去编写一堆这样的声明文件helm就是管理这些api对象的工具,它把创建一个应用所需的所有 Kubernetes API 对象声明文件组合并打包在一起。并提供了仓库的机制便于分发共享,还支持模版变量替换,同时还有版本的概念,使之能够对一个应用进行版本的管理。
Helm chart 是用来封装 Kubernetes 原生应用程序的 YAML 文件,可以在你部署应用的时候自定义应用程序的一些 metadata,便与应用程序的分发。
Helm 和 chart 的主要作用是:
1.应用程序封装
2.版本管理
3.依赖检查
4.便于应用程序分发
Helm 可以安装本地或者远程的 chart,当 chart 安装到 Kubernetes 中后就会创建一个 release,每次更新该 chart 的配置并执行 helm upgrade, release 的版本数就会加 1。同一个 chart 可以部署多次
下面我们将一步步创建一个 chart 来说明其组织结构。
首先使用 helm create mychart 创建一个名为 mychart 的示例,我们再使用 tree mychart 命令看一下 chart 的目录结构。
以上仅为 helm 为我们自动创建的目录结构,我们还可以在 templates 目录加其他 Kubernetes 对象的配置,比如 ConfigMap、DaemonSet 等。
我们查看下使用 helm create 命令自动生成的 templates/service.yaml 文件。
可以看到其中有很多 包围的字段,这是使用的 Go template 创建的自定义字段,其中 mychart 开头的都是在 _helpers.tpl 中生成的定义。
例如 _helpers.tpl 中对 chart.fullname 的定义:
我们再看下 values.yaml 文件中有这样的一段配置:
在使用 helm install 或 helm update 时,会渲染 templates/service.yaml 文件中的 .Values.service.type 和 .Values.service.port 的值。
使用 Helm
Helm 常用命令如下:
安装 chart 的命令格式为:
helm install [NAME] [CHART] [flags]
示例:
其中:
myvalues.yaml:自定义变量配置文件;
myredis:release 名称;
./redis:本地的 chart 目录;
Helm chart 安装后会转化成 Kubernetes 中的资源对象,生成一个 chart release,可以使用 helm list 命令查看。
关于 helm intsall 详细用法见: https://helm.sh/docs/helm/helm_install/ 。
要想升级 chart 可以修改本地的 chart 配置并执行:
使用 helm ls 的命令查看当前运行的 chart 的 release 版本,并使用下面的命令回滚到历史版本:
要想卸载 chart 可以使用下面的命令。
helm uninstall RELEASE_NAME [...] [flags]
helm下载及使用
helm 官网文档:多种语言可以切换,建议参考官方文档。本文仅作为自身需要总结,不够全面。
我是使用脚本直接安装的。
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh
三大概念
Chart 代表着 Helm 包。它包含在 Kubernetes 集群内部运行应用程序,工具或服务所需的所有资源定义。你可以把它看作是 Homebrew formula,Apt dpkg,或 Yum RPM 在Kubernetes 中的等价物。
Repository(仓库) 是用来存放和共享 charts 的地方。它就像 Perl 的 CPAN 档案库网络 或是 Fedora 的 软件包仓库,只不过它是供 Kubernetes 包所使用的。
Release 是运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release。
以上是关于helm使用的主要内容,如果未能解决你的问题,请参考以下文章