k8s中的helm

Helm是什么?

Helm 是用于 Kubernetes(K8s)的开源包管理器,它可以帮助用户定义、安装和升级复杂的 Kubernetes 应用程序。

解决的用户痛点

  • 简化复杂应用的部署流程

  • 管理应用的依赖关系

  • 实现应用的版本控制和回滚

  • 统一应用的配置管理

部署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
# 默认安装在/usr/local/bin/helm目录下

Helm 的核心概念解析

  1. Chart 应用的安装包
my-chart/
├── Chart.yaml          # 元数据(名称、版本、描述等)
├── values.yaml         # 默认配置值
├── values.schema.json  # 配置验证 schema
├── charts/             # 依赖的子 Chart
├── templates/          # Kubernetes 资源模板
│   ├── deployment.yaml
│   ├── service.yaml
│   └── _helpers.tpl    # 模板辅助函数
└── README.md           # 说明文档
  1. Release Chart的实例化部署
  • 当 Chart 被部署到集群时,称为一个 Release

  • 每个 Release 有唯一名称,可包含多个版本

  • 支持通过 helm upgrade 更新和 helm rollback 回滚

  1. Respository Chart的仓库

存储和共享Chart的地方,既有官方仓库又有私有仓库

工作流程

  • 用户通过 Helm CLI 从仓库拉取 Chart

  • 使用 values.yaml 或命令行参数配置 Chart

  • Helm 渲染模板生成完整的 Kubernetes 资源 YAML

  • 将资源部署到集群,生成 Release

Helm 的常用命令(Helm 3)

命令 描述
helm search repo 搜索仓库中的 Chart
helm pull 从仓库拉取 Chart 到本地
helm install 安装 Chart 到集群,生成 Release
helm upgrade 更新已部署的 Release
helm uninstall 卸载 Release
helm list 列出集群中的所有 Release
helm history 查看 Release 的版本历史
helm rollback 回滚 Release 到指定版本
helm template 本地渲染 Chart 模板
 helm list --all-namespaces
 # 查看所有命名空间下的Chart

使用Helm创建资源

使用 --values 或 --set 分离环境配置,自定义灵活设置启动参数

# 安装 Nginx Chart
helm install my-nginx stable/nginx-ingress
# 可以使用--namespace指定命令空间
# --create-namespace如果命名空间不存在自动创建

# 查看部署状态
helm list
kubectl get pods -l app=nginx-ingress

# 升级应用
helm upgrade my-nginx stable/nginx-ingress --set replicaCount=3
# 灵活的设置副本数有容错升级

# 回滚到上一版本
helm rollback my-nginx 1
# 轻松回滚上一版本

部署参数详解

helm install my-nginx stable/nginx-ingress \
  --namespace ingress-nginx \
  --set controller.replicaCount=2 \
  --set controller.service.type=LoadBalancer

  # 可以指定命名空间和环境变量,降低了配置需要在文件中书写的复杂

  # --values my-values.yaml可以指定启动参数配置文件
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐