Kubernetes的包管理器-helm

admin 2026-01-28 17:49:36 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详解了Kubernetes包管理器Helm的核心命令与操作,包括仓库管理、Chart构建、Release全生命周期管理及配置参数传递。内容涵盖安装、升级、回滚等实用流程,结合故障排查与最佳实践,阐述了Helm3架构优势及安全管理策略,为提升K8s集群应用部署效率提供了完整参考指南。 综合评分: 95 文章分类: 云安全,安全工具,安全运营


cover_image

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&nbsp; &nbsp; &nbsp;# 开发环境
values-staging.yaml&nbsp;# 预生产环境
values-prod.yaml&nbsp; &nbsp; # 生产环境

# 使用 --set 覆盖敏感配置
helm install myapp mychart \
&nbsp; -f values-prod.yaml \
&nbsp; --set&nbsp;database.password=$DB_PASSWORD

3. 安全实践

# 使用 secrets 管理敏感数据
helm install myapp mychart \
&nbsp; --set&nbsp;secret.key=$(echo&nbsp;-n&nbsp;"password"&nbsp;|&nbsp;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》

评论:0   参与:  0