ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Helm show与get命令详解:Kubernetes包管理核心操作

2026/8/11 18:20:32 拓冰建站 浏览量
Helm show与get命令详解:Kubernetes包管理核心操作 1. Helm show 与 Helm get 的基础定位差异Helm作为Kubernetes的包管理工具其命令行接口提供了多种操作Chart的方式。其中helm show和helm get这两个子命令经常被混淆使用但它们的设计初衷和使用场景有着本质区别。helm show的核心功能是展示Chart的静态内容它直接读取Chart包.tgz文件或Chart目录中的文件内容不需要与Kubernetes集群交互。这个命令主要用于快速查看Chart的元信息values.yaml、README.md等在安装前检查Chart内容提取Chart中的特定文件而helm get则是获取已安装Release的动态信息它必须连接Kubernetes集群并查询特定Release的状态。典型使用场景包括查看已部署Release的当前配置获取Release的历史版本信息检查Release生成的Kubernetes资源清单关键区别helm show操作的是Chart文件本身而helm get操作的是集群中已部署的Release实例。2. 命令参数与输出格式深度解析2.1 helm show 的子命令参数helm show包含多个子命令每个子命令对应不同的输出内容helm show all [CHART] # 显示Chart所有信息 helm show values [CHART] # 显示values.yaml内容 helm show chart [CHART] # 显示Chart.yaml内容 helm show readme [CHART] # 显示README.md内容 helm show crds [CHART] # 显示CRD定义这些命令都支持以下常用参数--version指定Chart版本--repo从指定仓库获取Chart--devel显示开发版本alpha/beta/rc--output format指定输出格式json/yaml例如查看bitnami/nginx Chart的默认valueshelm show values bitnami/nginx --version 13.2.232.2 helm get 的子命令参数helm get的子命令则聚焦于Release状态helm get all RELEASE_NAME # 获取Release所有信息 helm get values RELEASE_NAME # 获取当前部署的values helm get manifest RELEASE_NAME # 获取生成的K8s资源清单 helm get hooks RELEASE_NAME # 获取钩子资源 helm get notes RELEASE_NAME # 获取Release注释关键参数包括--revision指定历史版本号--output输出格式控制--namespace指定命名空间例如获取my-nginx Release的manifesthelm get manifest my-nginx -n default3. 典型使用场景对比3.1 开发阶段helm show 的价值在Chart开发阶段helm show是必不可少的工具快速验证Chart内容helm show all ./mychart # 本地Chart目录验证 helm show values mysql-8.0.31.tgz # 打包文件验证提取默认values用于定制helm show values bitnami/redis myvalues.yaml # 然后编辑myvalues.yaml进行定制检查README中的使用说明helm show readme stable/jenkins | less3.2 运维阶段helm get 的价值在Release部署后helm get提供了运维视角故障排查时对比配置helm get values my-app current-values.yaml diff current-values.yaml expected-values.yaml回滚时检查历史版本helm history my-app helm get manifest my-app --revision 2审计生成的K8s资源helm get manifest my-db | grep Secret -A54. 底层实现机制差异4.1 helm show 的工作原理helm show的实现路径非常简单根据Chart引用本地路径/仓库名定位Chart文件解压或直接读取Chart文件内容按子命令要求提取特定文件内容格式化输出到终端整个过程不涉及Kubernetes API调用完全在本地完成。4.2 helm get 的工作原理helm get的工作流程则复杂得多连接Kubernetes集群使用kubeconfig通过Release名称查询Secrets或ConfigMapsHelm 3存储后端从存储中重建Release对象根据子命令类型组织返回数据可能涉及多个K8s API调用获取关联资源5. 高级使用技巧与常见问题5.1 helm show 的实用技巧结合jq处理JSON输出helm show chart bitnami/nginx --output json | jq .dependencies批量检查多个Chartfor chart in charts/*; do helm show values $chart | grep -A3 resources; done验证远程Chart版本helm show chart bitnami/nginx --version 13.2.23 | grep version5.2 helm get 的常见问题处理Release不存在错误Error: release: not found解决方案确认命名空间是否正确-n参数检查helm list输出权限不足问题Error: configmaps is forbidden需要确保kubeconfig有足够权限读取Release相关资源输出内容截断使用重定向保存完整输出helm get manifest large-app full-manifest.yaml6. 性能考量与最佳实践6.1 大型Chart的处理建议对于包含大量文件的Charthelm show all可能输出内容过多建议使用特定子命令可以结合grep过滤关键信息helm show all my-chart | grep -A10 serviceAccount6.2 生产环境使用规范避免频繁调用helm get大量查询可能给API Server带来压力建议对稳定Release减少查询频率必要时缓存查询结果敏感信息处理helm get manifest可能暴露Secrethelm get manifest my-app | grep -i secret确保输出不会记录到日志系统版本控制整合将helm show values输出纳入Git管理helm show values my-chart values/prod.yaml git add values/prod.yaml7. 与其他Helm命令的协作模式7.1 与helm template的配合helm show和helm template都可用于检查Chart内容但show直接展示原始文件template会渲染模板生成最终YAML典型工作流helm show values my-chart values.yaml vim values.yaml # 编辑配置 helm template my-chart -f values.yaml output.yaml7.2 与helm upgrade的联动升级前使用helm get检查当前状态helm get values my-app current.yaml # 修改current.yaml helm upgrade my-app -f current.yaml升级后验证变更helm get manifest my-app --revision 3 | diff -u (helm get manifest my-app --revision 2) -8. 安全注意事项8.1 helm show 的安全边界虽然helm show不连接集群但仍需注意从可信源获取Chart避免恶意Chart检查values.yaml中的敏感默认值仓库证书验证--verify参数8.2 helm get 的权限控制helm get涉及集群访问建议遵循最小权限原则使用ServiceAccount而非个人凭证敏感环境禁用helm get manifest权限RBAC示例apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: helm-reader rules: - apiGroups: [] resources: [secrets] verbs: [get, list] - apiGroups: [helm.cattle.io] resources: [releases] verbs: [get]