文章总结: 本文详解了Kubernetes包管理器Helm的核心命令与操作,包括仓库管理、Chart构建、Release全生命周期管理及配置参数传递。内容涵盖安装、升级、回滚等实用流程,结合故障排查与最佳实践,阐述了Helm3架构优势及安全管理策略,为提升K8s集群应用部署效率提供了完整参考指南。 综合评分: 95 文章分类: 云安全,安全工具,安全运营
Kubernetes的包管理器-helm
原创
Titans Titans
骏之安科技知识库
2026年1月28日 06:00 北京
Helm 命令详解
Helm 是 Kubernetes 的包管理器,用于简化 Kubernetes 应用的部署和管理。以下是 Helm 常用命令的详细解释。
一、Helm 基础命令
1. 版本和帮助
# 查看 Helm 版本
helm version
# 查看帮助
helm help
helm [命令] --help
2. 环境信息
# 查看环境变量
helm env
# 查看 Helm 配置
helm env | grep HELM_
二、仓库管理
1. 添加仓库
# 添加官方稳定仓库
helm repo add stable https://charts.helm.sh/stable
# 添加自定义仓库
helm repo add myrepo https://myrepo.example.com/charts
# 添加 Bitnami 仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
2. 仓库操作
# 列出所有仓库
helm repo list
# 更新仓库(获取最新 charts)
helm repo update
# 移除仓库
helm repo remove myrepo
# 搜索仓库中的 charts
helm search repo nginx
helm search repo bitnami/nginx
# 搜索所有仓库
helm search hub nginx
三、Chart 操作
1. 创建和管理
# 创建新的 chart
helm create mychart
# 查看 chart 结构
ls mychart/
# mychart/
# ├── Chart.yaml # Chart 元数据
# ├── values.yaml # 默认配置值
# ├── charts/ # 依赖的子 charts
# └── templates/ # 模板文件
# ├── deployment.yaml
# ├── service.yaml
# └── ...
# 验证 chart 语法
helm lint mychart
# 打包 chart
helm package mychart
# 生成: mychart-0.1.0.tgz
2. Chart 依赖
# 查看依赖
helm dependency list mychart
# 更新依赖
helm dependency update mychart
# 构建依赖(下载到 charts/ 目录)
helm dependency build mychart
四、Release 管理
1. 安装和卸载
# 安装 chart
helm install myrelease mychart
helm install myrelease bitnami/nginx
# 指定命名空间
helm install myrelease mychart -n mynamespace
# 自定义 release 名称
helm install myrelease mychart
# 让 Helm 生成 release 名称
helm install mychart --generate-name
# 卸载 release
helm uninstall myrelease
helm uninstall myrelease -n mynamespace
# 强制卸载(不提示确认)
helm uninstall myrelease --no-hooks
2. 升级和回滚
# 升级 release
helm upgrade myrelease mychart
helm upgrade myrelease mychart --version 1.2.3
# 查看历史版本
helm history myrelease
# 回滚到指定版本
helm rollback myrelease 1
helm rollback myrelease 2 -n mynamespace
# 回滚并等待完成
helm rollback myrelease 1 --wait
3. 查看和管理
# 列出所有 release
helm list
helm list -a # 包含已删除的
helm list -n mynamespace # 指定命名空间
helm list --all-namespaces
# 查看 release 状态
helm status myrelease
helm status myrelease -n mynamespace
# 获取 release 的 manifest
helm get manifest myrelease
# 获取 release 的 values
helm get values myrelease
helm get values myrelease --all # 所有值(包括默认值)
# 查看 release 的 hooks
helm get hooks myrelease
# 查看 release 的 notes
helm get notes myrelease
五、配置管理
1. 值文件管理
# 安装时指定值文件
helm install myrelease mychart -f values.yaml
helm install myrelease mychart -f values1.yaml -f values2.yaml
# 升级时指定值文件
helm upgrade myrelease mychart -f new-values.yaml
# 查看使用的值
helm get values myrelease
# 显示所有值(包括默认值)
helm get values myrelease --all
# 调试模板渲染(不实际安装)
helm install myrelease mychart --dry-run --debug
helm template mychart --debug
2. 设置参数
# 通过命令行设置值
helm install myrelease mychart \
--set key1=value1 \
--set key2=value2
# 设置嵌套值
helm install myrelease mychart \
--set "database.host=mysql"
# 设置数组值
helm install myrelease mychart \
--set "servers[0].host=server1" \
--set "servers[0].port=80"
# 从文件加载值
helm install myrelease mychart \
--set-file key=path/to/file
# 安装时验证值
helm install myrelease mychart --verify
六、插件管理
# 安装插件
helm plugin install https://github.com/helm/helm-plugin-template
# 列出已安装插件
helm plugin list
# 更新插件
helm plugin update plugin-name
# 卸载插件
helm plugin uninstall plugin-name
七、常用参数和标志
1. 通用参数
--namespace, -n # 指定命名空间
--kubeconfig # 指定 kubeconfig 文件
--kube-context # 指定 kubeconfig 上下文
--debug # 启用详细输出
--dry-run # 模拟执行
--wait # 等待资源就绪
--timeout # 等待超时时间
--create-namespace # 如果命名空间不存在则创建
2. 安装/升级参数
--version # 指定 chart 版本
--values, -f # 指定值文件
--set # 设置参数值
--atomic # 失败时自动回滚
--cleanup-on-fail # 失败时清理资源
--dependency-update # 更新依赖
--disable-openapi-validation # 禁用 OpenAPI 验证
3. 输出格式
--output, -o # 输出格式(json, yaml, table)
-o json # JSON 格式输出
-o yaml # YAML 格式输出
-o table # 表格格式输出(默认)
八、实用示例
1. 完整安装流程
# 1. 添加仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
# 2. 搜索 chart
helm search repo bitnami/nginx
# 3. 查看 chart 信息
helm show chart bitnami/nginx
helm show values bitnami/nginx
# 4. 下载 values 文件并修改
helm show values bitnami/nginx > nginx-values.yaml
vim nginx-values.yaml
# 5. 安装
helm install my-nginx bitnami/nginx \
-f nginx-values.yaml \
--namespace web \
--create-namespace \
--wait \
--timeout 5m
2. 升级流程
# 1. 查看当前配置
helm get values my-nginx
# 2. 修改配置
helm upgrade my-nginx bitnami/nginx \
--set replicaCount=3 \
--set service.type=LoadBalancer
# 3. 验证升级
helm history my-nginx
helm status my-nginx
3. 备份和恢复
# 备份 release 配置
helm get values myrelease > myrelease-backup.yaml
# 备份所有 release
helm list -a -q | while read release; do
helm get values $release > ${release}-backup.yaml
done
# 从备份恢复
helm upgrade myrelease mychart -f myrelease-backup.yaml
九、最佳实践
1. 命名规范
# release 命名
<应用名>-<环境>-<版本>
# 示例: nginx-prod-v1, redis-staging
# chart 版本遵循语义化版本
# 主版本.次版本.修订号
2. 配置管理
# 使用值文件管理不同环境
values-dev.yaml # 开发环境
values-staging.yaml # 预生产环境
values-prod.yaml # 生产环境
# 使用 --set 覆盖敏感配置
helm install myapp mychart \
-f values-prod.yaml \
--set database.password=$DB_PASSWORD
3. 安全实践
# 使用 secrets 管理敏感数据
helm install myapp mychart \
--set secret.key=$(echo -n "password" | base64)
# 验证 chart 签名
helm install myapp mychart --verify --keyring keyring.pgp
十、Helm 3 与 Helm 2 的区别
| 特性 | Helm 3 | Helm 2 | | — | — | — | | 架构 | 移除 Tiller | 需要 Tiller | | 发布名称 | 必需 | 可选 | | 命令 | 简化,移除一些命令 | 更多命令 | | 安全 | 更安全,无 Tiller | 需要配置 Tiller RBAC | | 升级策略 | 三向合并策略 | 双向合并策略 |
十一、故障排查
# 查看详细日志
helm install myrelease mychart --debug
# 渲染模板查看输出
helm template mychart
# 检查 Kubernetes 资源
kubectl get all -l release=myrelease
# 查看 Helm 事件
kubectl get events --field-selector involvedObject.kind=Release
# 清理失败安装
helm uninstall myrelease --no-hooks
这些命令涵盖了 Helm 的主要功能。根据具体需求选择合适的命令和参数,可以大大提高 Kubernetes 应用的管理效率。
–END– 觉得不错,可以关注,点赞,转发,如果需要技术援助,可以联系我们,期待您的莅临
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:骏之安科技知识库 Titans Titans《Kubernetes的包管理器-helm》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论