使用 Helm 管理应用的一些 Tips

使用,helm,管理,应用,一些,tips · 浏览次数 : 24

小编点评

**背景** Helm 是一个 Kubernetes 的包管理工具,与 Mac 上的 brew 和 Python 中的 PIP 相似。 **Helm 的优势** * 简化了 Kubernetes 应用的安装和管理。 * 使用 YAML 文件定义应用配置。 * 支持 k8s 集群安装和卸载。 * 提供一键安装,简化了复杂的应用。 **问题** 使用 Helm 时出现空 yaml 文件的问题。 **原因** 执行了 `helm upgrade pulsar ./charts/pulsar --version 2.9.2 -f charts/pulsar/values-2.10.3.yaml -n pulsar --dry-run --debug > debug.yaml` 命令时,在升级前没有指定 `values-2.10.3.yaml` 文件,导致生成的 yaml 文件为空。 **解决方案** 1. 在升级前先模拟升级:`helm upgrade pulsar ./charts/pulsar --version 2.9.2 -f charts/pulsar/values-2.10.3.yaml -n pulsar --dry-run --debug > debug.yaml`。 2. 使用 `helm diff upgrade pulsar ./charts/pulsar --version 2.9.2 -f charts/pulsar/values-2.10.3.yaml -n pulsar` 命令可以高亮显示修改的区域。 **其他提示** * 使用 Helm 插件 `helm-diff` 可以帮助我们高亮显示修改的区域。 * 在升级前备份 k8s 集群,以确保我们在发生故障时能够恢复数据。

正文

Helm tips.png

背景

Helm 是一个 Kubernetes 的包管理工具,有点类似于 Mac 上的 brewPython 中的 PIP;可以很方便的帮我们直接在 kubernetes 中安装某个应用。

比如我们可以直接使用以下命令方便的在 k8s 集群安装和卸载 MySQL

helm install my-sql oci://registry-1.docker.io/bitnamicharts/mysql -n mysql

helm uninstall my-mysql -n mysql

对于一些复杂的应用使用 Helm 一键安装会更简单,以 Pulsar 举例:
image.png
它有着多个组件,比如 bookkeeper、zookeeper、broker、proxy 等,各个组件还有着依赖关系。

如果我们手动安装流程会比较繁琐,而使用 Helm 时便非常简单:

helm repo add apache https://pulsar.apache.org/charts

helm install my-pulsar apache/pulsar --version 3.0.0 -n pulsar

当然他也只是帮我们生成了部署所需要的 yaml 文件,也没有太多黑科技。

升级

看似简单的工具我在实际线上使用的时候也踩过一个坑,最大的一个问题就是某次升级 Pulsar 的时候生成的 yaml 文件是空的,导致整个集群被删除了😭。

还好最后使用 helm rollback version 将集群恢复过来了,我们的持久化数据也还在。

而出现这个问题的原因是我执行了下面这个命令:

helm upgrade pulsar ./charts/pulsar --version 2.9.2 -f charts/pulsar/values-2.10.3.yaml -n pulsar

我们是将 pulsarHelm-Chart 源码下载到本地,然后修改 value.yaml 的方式执行升级的。

当时执行命令的时候没有注意,在一个没有 values-2.10.3.yaml 文件的目录下执行的,导致生成的 yaml 文件是空的,也就导致 k8s 在 pulsar 这个 namespace 下删除了所有的资源。

模拟升级

为了避免今后再次出现类似的问题,需要在升级前先模拟升级:

helm upgrade pulsar ./charts/pulsar --version 2.9.2 -f charts/pulsar/values-2.10.3.yaml -n pulsar --dry-run --debug > debug.yaml

其中关键的 dry-rundebug 参数可以指定模拟升级和输出详细的内容。

这样我们就可以在升级前先查看 debug.yaml 里的内容是不是符合我们的预期。

对比升级

但这样并不能直观的看出哪些地方是我们修改的,还好社区已经有了相关的插件,可以帮我们高亮显示修改的地方。

helm plugin install https://github.com/databus23/helm-diff

我们先安装好这个 helm 插件。

然后在升级前先使用该插件:

helm diff upgrade pulsar ./charts/pulsar --version 2.9.2 -f charts/pulsar/values-2.10.3.yaml -n pulsar

image.png

这样就可以高亮显示出修改的内容。

不用担心这个命令会直接升级,它会自动加上 --dry-run --debug 参数。

更多命令可以参考官方文档:
https://github.com/databus23/helm-diff

Helm 功能很强,在操作生产环境的时候必须得谨慎,都是血淋淋的教训啊。

与使用 Helm 管理应用的一些 Tips相似的内容:

使用 Helm 管理应用的一些 Tips

背景 Helm 是一个 Kubernetes 的包管理工具,有点类似于 Mac 上的 brew,Python 中的 PIP;可以很方便的帮我们直接在 kubernetes 中安装某个应用。 比如我们可以直接使用以下命令方便的在 k8s 集群安装和卸载 MySQL: helm install my-s

使用 Helm 安装 MQTT 服务器-EMQX

EMQX ℹ️ Info: 使用 EMQX 通过 Helm3 在 Kubernetes 上部署 EMQX 4.0 集群 | EMQ emqx/deploy/charts/emqx at main-v4.4 · emqx/emqx (github.com) emqx/values.yaml at ma

使用Helm部署Wikijs

使用 Helm 部署 Wiki.js 📚️ 参考文档: Wiki.js 官方文档 - 安装 - Kubernetes Wiki.js 使用 Helm 安装 Wiki.js 官方文档 - 安装 - 侧加载 官方教程 Kubernetes 开始使用 Helm Chart 在 Kubernetes 上安

Velero 系列文章(二):使用 Helm 安装 Velero

概述 本文是通过 Helm 3 来安装 Velero, 只做最基本的安装。并计划将 YAML (只备份 YAML, 不备份 Volume) 备份到腾讯云的 COS(兼容 S3, 所以可以通过 AWS S3 插件来实现) 需要安装: velero AWS S3 插件 不安装: CSI VolumeSn

Grafana 系列文章(十四):Helm 安装Loki

前言 写或者翻译这么多篇 Loki 相关的文章了, 发现还没写怎么安装 😓 现在开始介绍如何使用 Helm 安装 Loki. 前提 有 Helm, 并且添加 Grafana 的官方源: helm repo add grafana https://grafana.github.io/helm-cha

Rancher 系列文章-Rancher 升级

概述 之前在 天翼云上用 4 台机器安装了一个 1 master(及 etcd) 3 node 的 K3S 集群,并在其上使用 Helm 安装了 Rancher 2.6.3 版本。 前几天发现 Rancher 官方推荐的最新版为:v2.6.4 所以决定先后对 Rancher 和 K3S 集群进行升级

使用 Bitnami Helm 安装 Kafka

服务器端 K3S 上部署 Kafka Server Kafka 安装 📚️ Quote: charts/bitnami/kafka at master · bitnami/charts (github.com) 输入如下命令添加 Helm 仓库: > helm repo add tkemarket

[转帖]Kubernetes-17:Kubernets包管理工具—>Helm介绍与使用

https://www.cnblogs.com/v-fan/p/13949025.html Kubernets包管理工具—>Helm 什么是Helm? 我们都知道,Linux系统各发行版都有自己的包管理工具,比如Centos的YUM,再如Ubuntu的APT。 Kubernetes也有自己的集群包管

[转帖]Kubernetes-18:Dashboard安装及使用

https://www.cnblogs.com/v-fan/p/13950268.html Helm安装Dashboard 简介 Dashboard 是 kubernetes 的图形化管理工具,可直观的看到k8s中各个类型控制器的当前运行情况,以及Pod的日志,另外也可直接在 dashboard 中

K3S +Helm+NFS最小化测试安装部署只需十分钟

作者:郝建伟 k3s 简介 官方文档:k3s 什么是k3s k3s 是一个轻量级的 Kubernetes 发行版 它针对边缘计算、物联网等场景进行了高度优化。 k3s 有以下增强功能: 打包为单个二进制文件。 使用基于 sqlite3 的轻量级存储后端作为默认存储机制。同时支持使用 etcd3、My