当前位置: 首页 > news >正文

【一起来学kubernetes】31、Helm使用详解


一、Helm 简介

Helm 是 Kubernetes 的包管理工具,类比 Linux 中的 yumapt,用于简化应用的打包、部署和版本管理。其核心功能包括:

  • Chart 管理:将 Kubernetes 资源(Deployment、Service 等)打包为可复用的 Chart。
  • 动态配置:通过模板化 YAML 文件支持参数注入。
  • 版本控制:支持应用的升级、回滚及历史版本追踪。

二、Helm 安装与初始化

1. 安装 Helm 客户端
# 下载安装脚本并执行(适用于 Linux/macOS)
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

手动安装

  • 从 Helm 官网 下载二进制文件,解压后移动至 /usr/local/bin
2. 添加仓库
# 添加官方仓库
helm repo add stable https://charts.helm.sh/stable
# 添加阿里云仓库(国内加速)
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
# 更新仓库索引
helm repo update

三、核心概念解析

概念说明
Chart应用包,包含部署所需的所有资源模板和配置(如 values.yaml)。
RepositoryChart 仓库,类似 Docker Registry,存储可共享的 Chart。
ReleaseChart 在集群中的运行实例,每次安装生成唯一 Release。

四、Helm 使用详解

1. Chart 操作
  • 搜索 Chart

    helm search repo nginx      # 从本地仓库搜索
    helm search hub mysql      # 从 Artifact Hub 搜索公共 Chart
    
  • 安装 Chart

    helm install my-nginx bitnami/nginx \
      --namespace dev \
      --set replicaCount=2 \
      -f custom-values.yaml
    
    • --set:动态覆盖配置参数。
    • -f:指定自定义 values.yaml 文件。
  • 查看已安装 Release

    helm list -n dev           # 查看指定命名空间的 Release
    helm status my-nginx       # 查看 Release 状态
    
2. Chart 开发
  • 创建新 Chart

    helm create myapp          # 生成 Chart 目录结构
    

    目录结构

    myapp/
    ├── Chart.yaml            # Chart 元数据(名称、版本等)
    ├── values.yaml           # 默认配置参数
    ├── templates/            # Kubernetes 资源模板(Deployment、Service 等)
    └── charts/               # 子 Chart 依赖
    
  • 打包与发布

    helm package myapp        # 生成 .tgz 包
    helm push myapp-1.0.0.tgz repo-url  # 上传至私有仓库(需配置)
    
3. 升级与回滚
  • 升级 Release
    helm upgrade my-nginx bitnami/nginx --version 1.2.0
    
  • 回滚到历史版本
    helm history my-nginx     # 查看版本历史
    helm rollback my-nginx 2  # 回滚到版本 2
    
4. 卸载 Release
helm uninstall my-nginx -n dev

五、高级操作

1. 依赖管理

Chart.yaml 中定义依赖:

dependencies:
  - name: mysql
    version: 8.0.0
    repository: https://charts.bitnami.com/bitnami

运行 helm dependency update 下载依赖。

2. 模板函数与流程控制

templates/ 中使用 Go 模板语言动态生成配置:

# 示例:根据环境注入不同标签
metadata:
  labels:
    env: {{ .Values.environment | default "prod" }}

六、常见问题与注意事项

  1. 权限问题:确保 Helm 客户端有足够的 Kubernetes 集群权限。
  2. 网络问题:国内访问官方仓库可能需替换为镜像源(如阿里云)。
  3. 版本兼容性:Helm v3 移除 Tiller 组件,直接通过 kubeconfig 连接集群。

七、典型应用场景

  1. 微服务部署:一键部署包含数十个服务的复杂应用。
  2. 环境差异化配置:通过 values.yaml 区分开发、测试、生产环境。
  3. CI/CD 集成:在流水线中自动执行 helm upgrade

拓展

【一起来学kubernetes】28、StorageClass使用详解

【一起来学kubernetes】30、k8s的java sdk怎么用


在这里插入图片描述

相关文章:

  • Redis 02
  • 深入C++栈:从STL到底层实现的全面解析
  • TCP 三次握手与四次挥手深度解析(面试高频)
  • 百度热力图数据获取,原理,处理及论文应用25
  • SEO长尾关键词优化实战策略
  • webpack和vite的区别是什么
  • NAT穿越
  • Ollama+open-webui搭建私有本地大模型详细教程
  • HashMap 在 JDK 1.7 和 JDK 1.8 有什么区别
  • EasyExcel导出自动回显中文,读取自动转换码值(基于全局转换器与自定义注解)
  • 基于SpringBoot的高校学术交流平台
  • FPGA学习(三)——数码管实现四位分秒计数器
  • 【Easylive】saveCategory方法中的if判断(对应增加和修改)
  • 如何获取ecovadis分数?获取ecovadis分数流程,更快通过ecovadis分数方法
  • 27--当路由器学会“防狼术“:华为设备管理面安全深度解剖(完整战备版)
  • 2025年消费观念转变与行为趋势全景洞察:”抽象、符号、游戏、共益、AI”重构新世代消费价值的新范式|徐礼昭
  • 【Spiffo】环境配置:最简cmake工程构建(含使用例)
  • 2025年win10使用dockerdesktop安装k8s
  • 浙大研究团队揭示电场调控5-HT1AR的分子机制
  • 动态规划问题之最长公共子序列
  • 特朗普与泽连斯基通话
  • 世卫大会再次拒绝涉台提案,国台办:民进党当局再遭挫败理所当然
  • 历史缝隙里的人︱觑功名如画饼:盛世“做题家”的攀爬与坠落
  • 经济日报:政府采购监管篱笆要扎得更牢
  • 从《缶翁的世界》开始,看吴昌硕等湖州籍书画家对海派的影响
  • 四大皆空!赛季还没结束,曼城已经吃上“散伙饭”了