Administrator
发布于 2026-08-19 / 1 阅读
0
0

第十章.k8sHELM-HELM安装及演示-1

来源链接:https://www.bilibili.com/video/BV1PbeueyE8V?spm_id_from=333.788.videopod.episodes&vd_source=d8c71ff24a3359a807967fc4b5daa0e4&p=71

1. Helm v2 与 v3 核心架构差异

  • Helm v2 时期 RBAC 未成为 K8s 主流权限机制,因此设计了独立的 Tiller 组件负责集群管理权限,安装部署时需赋予 Tiller 集群管理员权限;Tiller 与客户端通过 gRPC 协议通信,再调用 K8s API Server 完成资源创建、管理等操作,权限配置较为复杂。
  • Helm v3 得益于 RBAC 的完整加持,可直接通过 ServiceAccount 完成认证授权,无需独立 Tiller 组件,直接走标准 K8s API 完成操作,架构更简洁安全;此外 v3 还做了多处功能微调,整体可用性大幅提升。

2. Helm 安装步骤

  • 官方安装 v3 的方式:下载官方提供的安装脚本,添加执行权限后直接运行,即可安装最新稳定版 Helm v3,但该方式依赖 Docker Hub 或 Github 地址,国内访问速度较慢。
  • 视频提供的离线安装方式:
    1. 提前准备好 Helm 二进制包,保存到本地后上传至服务器
    2. 执行 tar -zxvf 命令解压包
    3. 将解压后的 Helm 二进制文件移动到 /usr/local/bin 目录下
    4. 为二进制文件添加执行权限
    5. 执行 helm version 验证安装,可正常输出版本号(视频中为 v3.12.3)即表示安装成功
  • 安装完成后可清理无用安装包释放空间。

3. Helm 与 K8s 集群对接规则

  • Helm 默认读取当前用户目录下的 ~/.kube/config 文件完成集群对接,权限与 kubectl 完全绑定:如果使用 dev 命名空间用户的 kubeconfig 文件,则 Helm 仅能操作 dev 命名空间下的资源,无法跨命名空间操作,需避免配置错误的低权限 kubeconfig 导致权限不足。

4. Helm 仓库配置与使用

  • 注:Helm v2 版本默认内置 Bitnami 仓库,v3 版本默认无内置仓库,需手动添加第三方仓库才能搜索、安装 Chart 包。
  • 添加仓库命令为 helm repo add <仓库名称> <仓库地址>,视频中使用官方推荐的 Bitnami 仓库,执行后会自动下载仓库下所有 Chart 包的索引信息,首次同步速度较慢。
  • 常用仓库相关命令:
    • helm repo list:查看已添加的所有仓库,输出仓库名称、对应地址
    • helm search repo <关键词>:搜索当前已添加仓库下的 Chart 包,支持模糊匹配,比如搜索 mysql 可找到 mysql、mysql-intel 两个不同版本的包
    • helm search hub <关键词>:从 Helm Hub 官方公开的全量仓库中搜索 Chart 包,不局限于已添加的本地仓库,搜索结果更广,但不熟悉的仓库需注意安全性和可用性
  • 已添加的仓库信息会持久化存储在 ~/.config/helm/repository.yaml 文件中,可直接查看或修改。
  • helm repo update:更新仓库索引,同步最新的 Chart 包版本、应用版本信息,类似 yum update 操作。

5. Chart 核心概念与查看命令

  • Chart 是 Helm 的打包单元,可理解为 K8s 应用的“安装包”,是自包含的逻辑单元,包含部署应用所需的所有资源配置(Deployment、ConfigMap、Secret、Service 等),等价于 Linux 系统的 rpm 包、Ubuntu 系统的 deb 包。
  • 常用 Chart 查看命令:
    • helm show values <仓库名>/<Chart名>:查看当前 Chart 所有可修改的配置参数,这些参数是 Chart 封装时抽象出的可变项,无需修改完整资源清单,仅调整对应参数即可自动生成适配当前环境的资源,大幅降低部署门槛(比如修改集群副本数仅需调整 replicas 参数即可)
    • helm show chart <仓库名>/<Chart名>:查看 Chart 的整体元信息,对应 Chart.yaml 文件的内容
    • helm show all <仓库名>/<Chart名>:查看 Chart 的所有信息,包括说明文档、依赖关系等,是最详细的查看方式。

6. Chart 安装、卸载与状态查看

  • 基础安装命令:helm install <自定义Release名称> <仓库名>/<Chart名>,其中 --generate-name 参数可自动生成随机的 Release 名称,也可手动指定名称,注意同一命名空间下 Release 名称不能冲突。
  • Chart 内部资源对象有默认安装顺序,第一个为 Namespace(大部分 K8s 资源为命名空间级别,命名空间不存在则后续资源无法创建),其余顺序官方有完整文档可查。
  • 安装完成后可通过 helm list 查看已安装的 Release,输出包含版本号、更新时间、当前状态、Chart 名称、应用版本号等信息,支持版本回滚。
  • 可通过 kubectl get pods -n <对应命名空间> 验证 Pod 是否正常创建,确认应用部署成功。
  • 卸载命令:v3 官方推荐使用 helm uninstall <Release名称> 完成卸载,若添加 --keep-history 参数可保留该 Release 的历史版本,方便后续回滚;不加该参数则 Release 会被完全删除,仅执行 helm list --keep-history 可查看保留的历史版本。
  • helm status <Release名称>:查看当前 Release 的详细信息,包含安装时的输出信息,v3 相比 v2 做了简化,不会打印所有关联资源对象。

7. Chart 配置覆盖方法

Helm 支持两种配置覆盖方式,可灵活调整 Chart 的默认配置:

  1. 指定 values 文件覆盖:通过 -f 参数指定自定义的 values.yaml 文件覆盖默认配置,可多次指定 -f 参数,最右侧文件的优先级最高,左侧配置会被右侧覆盖。
  2. 单参数覆盖:通过 --set 参数指定单个配置项覆盖,适合仅修改少量参数的场景,无需编写完整的 values.yaml 文件。
  • 优先级规则:两种方式同时使用时,--set 指定的配置会合并到 values 配置中,且 --set 的优先级高于 -f 指定的文件配置,可通过 helm get values <Release名称> 查看当前生效的最终配置。
  • 升级 Chart 时可通过 --set 重新指定参数覆盖之前的 --set 配置,也可通过 helm upgrade <Release名称> <仓库名>/<Chart名> --set <参数> 完成升级。
  • 使用建议:改动较多、层级较深的配置建议通过 -f 指定 values 文件管理,稳定、少量的配置可通过 --set 快速调整。
  • --set 参数格式限制:
    • 支持传入 0 或多个键值对,基础用法为 --set key=value
    • 多参数用逗号隔开,例如 --set key1=value1,key2=value2
    • 支持通过点号指定嵌套对象的键,例如 --set service.type=NodePort 可直接修改 service 的 type 字段。

AI 总结

本视频为 Kubernetes v1.29 环境下的 Helm 基础教程,系统讲解了 Helm v2 与 v3 的架构差异、Helm 的离线安装方法、与 K8s 集群的权限对接规则、仓库配置与 Chart 搜索方法,以及 Chart 的安装、卸载、状态查看、配置覆盖等核心操作,覆盖了 Helm 作为 K8s 包管理工具的基础使用全流程,可帮助学习者快速掌握通过 Helm 简化 K8s 应用部署的能力。


评论