Helm 实战

2024-11-05#Helm#Kubernetes

Helm 是 Kubernetes 的包管理器,它能帮助用户更方便地打包、配置、部署和管理 Kubernetes 应用程序及其依赖项,简化复杂应用在 Kubernetes 集群中的操作。对于应用开发者而言,Helm 让应用部署变得更加灵活和简单;不过,要想熟练使用它,还需要熟悉很多细节。本文记录实战中的要点。

Helm Chart 模板 🔗

模板语言 🔗

Helm 主要是由 Go 语言编写的,而 Helm Chart 模板使用的就是 Go 语言标准库中的模板引擎,即 text/template,所以从模板语言来说,使用的是 Go模板语言。

模板函数 🔗

不过,标准库中的模板引擎不够强大。为了让模板更好用,就要添加更多的函数。Helm 添加了第三方包 sprig 用于扩展模板中函数。最后,Helm 还扩充了模板中的函数。

官方文档《Template Function List》 分类列出了 Helm 模板中的函数。

模板参数 🔗

【待补充】

在本地渲染模板 🔗

在发布到 Kubernetes 之前,可使用 helm template 命令本地渲染模板。

部署应用 🔗

首次安装和升级 🔗

《Helm Upgrade》

使用 --install 可执行首次安装或者升级。因此不需要分别使用 helm installhelm upgrade 进行首次安装和升级。

-i, --install                                    if a release by this name doesn't already exist, run an install

为了确保应用成功运行再返回,那么需要加上 --wait--wait-for-jobs 选项:

--wait                                       if set, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment, StatefulSet, or ReplicaSet are in a ready state before marking the release as successful. It will wait for as long as --timeout
--wait-for-jobs                              if set and --wait enabled, will wait until all Jobs have been completed before marking the release as successful. It will wait for as long as --timeout

--atomic 选项可用于在升级失败时回滚:

--atomic                                     if set, upgrade process rolls back changes made in case of failed upgrade. The --wait flag will be set automatically if --atomic is used

卸载和回滚 🔗

如果出于某些原因,比如一直在升级,但其实已经失败,那么需要强制卸载或者回滚。

查看发布状态 🔗

《Helm Status》

卸载 🔗

《Helm Uninstall》

回滚 🔗

《Helm Rollback》

其他 🔗

Kubernetes 相关 🔗

Job 的 template 是 immutable 的 🔗

未完待续


加载中...