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

news2025/4/3 6:20:30

一、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怎么用


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2326338.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python 常用的6个爬虫第三方库

Python中有非常多用于网络数据采集的库,功能非常强大,有的用于抓取网页,有的用于解析网页,这里介绍6个最常用的库。 1. BeautifulSoup BeautifulSoup是最常用的Python网页解析库之一,可将 HTML 和 XML 文档解析为树形…

blender场景导入Unity的流程(个人总结)

处理找不到贴图的问题 blender场景导入Unity遇到的主要问题是贴图找不到。经研究是blender里材质的着色器结构不是贴图-原理化BSDF-输出导致的。目前还没有自动解决方法,总结了一个效率还可以的手动解决流程。 打开后到材质预览,看一下显示没问题&…

可编辑36页PPT | “新基建”在数字化智慧高速公路中的支撑应用方案智慧高速解决方案智慧交通方案

这份文档是一份关于“新基建”在数字化智慧高速公路中支撑应用方案的PPT内容介绍,它详细阐述了新基建在智慧高速建设中的背景、总体要求和建设内容。从政策背景来看,多个政府部门发布了相关政策文件,推动交通运输基础设施的数字化升级和智慧交…

一文解读DeepSeek在保险业的应用

引言 随着人工智能技术的深度渗透,保险行业正经历从传统经验驱动向数据智能驱动的转型。作为国产高性能开源大模型的代表,DeepSeek 凭借其低成本、高推理效率及跨模态处理能力,已成为保险机构突破服务瓶颈、重构业务逻辑的核心工具。截止目前…

物联网时代,HMI 设计的创新机遇与挑战

随着物联网(IoT)技术的蓬勃发展,各种智能设备如雨后春笋般涌现,从智能家居到智慧城市,物联网的应用场景愈发广泛。作为人与设备之间的桥梁,人机界面(HMI)设计在物联网时代扮演着至关…

【区块链安全 | 第二十四篇】单位和全局可用变量(二)

文章目录 单位和全局可用变量(Units and Globally Available Variables)特殊变量和函数1. 区块和交易属性2. ABI 编码和解码函数3. bytes 成员函数4. string 成员函数5. 错误处理6. 数学和加密函数7. 地址类型成员函数8. 与合约相关9. 类型信息 单位和全…

C语言:指针数组、函数、二级指针

1.指针数组 指针数组是一个数组,数组中的每个元素都是指针。这些指针可以指向各种类型的数据,如整数、字符、结构体等,甚至可以指向其他数组或函数。 指针数组的声明格式通常为: 数据类型 *数组名[数组大小];其中,数…

批量修改记事本文本文件编码,可以解决文本文件乱码问题

对于文本文件来说,通常都可以设置不同的编码格式,每一种不同的编码格式支持的字符都可能是不一样的。因此当编码格式出现错误的时候,文本文件可能会出现乱码的问题。如何将文本文件的编码由一种格式变为另外一种格式呢?如果文件出…

亚马逊云科技提供完全托管的DeepSeek-R1模型

近日,亚马逊云科技宣布在Amazon Bedrock上线完全托管的DeepSeek-R1模型。DeepSeek是首个登陆Amazon Bedrock的国产大模型,自今年1月底推出以来,已有数千客户使用Amazon Bedrock的自定义模型导入功能部署了DeepSeek-R1模型。 DeepSeek在过去几…

利用 Chrome devTools Source Override 实现JS逆向破解案例

之前讲解 Chrome 一大强势技术 override 时,给的案例貌似没有给大家留下多深的印象 浏览器本地替换(local overrides)快速定位前端样式问题的案例详解(也是hook js的手段)_浏览器的 overrides 替换功能-CSDN博客 其实…

容器C++ ——STL常用容器

string容器 string构造函数 #include<iostream> using namespace std; #include<string.h> void test01() {string s1;//默认构造const char* str "hello world";string s2(str);//传入char*cout << "s2" << s2 << endl;s…

npu踩坑记录

之前使用qwen系列模型在ascend 910a卡进行了一些生成任务, 贴出踩坑过程也许对遇到类似问题的同学有帮助: ) 目录 千问 qwq32环境配置 代码部署 生成内容清洗 已生成内容清洗 生成过程优化 Failed to initialize the HCCP process问题 assistant 的历史回答丢失 推理执…

Linux信号——信号的产生(1)

注&#xff1a;信号vs信号量&#xff1a;两者没有任何关系&#xff01; 信号是什么&#xff1f; Linux系统提供的&#xff0c;让用户&#xff08;进程&#xff09;给其他进程发送异步信息的一种方式。 进程看待信号的方式&#xff1a; 1.信号在没有发生的时候&#xff0c;进…

【机器学习】——机器学习思考总结

摘要 这篇文章深入探讨了机器学习中的数据相关问题&#xff0c;重点分析了神经网络&#xff08;DNN&#xff09;的学习机制&#xff0c;包括层级特征提取、非线性激活函数、反向传播和梯度下降等关键机制。同时&#xff0c;文章还讨论了数据集大小的标准、机器学习训练数据量的…

JMeter进行分布式压测

从机&#xff1a; 1、确认防火墙是否关闭&#xff1b; 2、打开网络设置&#xff0c;关闭多余端口&#xff1b;&#xff08;避免远程访问不到&#xff09; 3、打开JMeter/bin 目录底下的jmeter.properties&#xff1b; remove_hosts设置当前访问地址&#xff0c;192.XXXXX&…

快速入手-基于Django-rest-framework的第三方认证插件(SimpleJWT)权限认证扩展返回用户等其他信息(十一)

1、修改serializer.py&#xff0c;增加自定义类 # 自定义用户登录token等返回信息 class MyTokenObtainPair(TokenObtainPairView): def post(self, request, *args, **kwargs): serializer self.get_serializer(datarequest.data) try: serializer.is_valid(raise_exceptio…

关于IP免实名的那些事

IP技术已成为个人与企业保护隐私、提升网络效率的重要工具。其核心原理是通过中介服务器转发用户请求&#xff0c;隐藏真实IP地址&#xff0c;从而实现匿名访问、突破地域限制等目标。而“免实名”代理IP的出现&#xff0c;进一步简化了使用流程&#xff0c;用户无需提交身份信…

【SQL性能优化】预编译SQL:从注入防御到性能飞跃

&#x1f525; 开篇&#xff1a;直面SQL的"阿喀琉斯之踵" 假设你正在开发电商系统&#x1f6d2;&#xff0c;当用户搜索商品时&#xff1a; -- 普通SQL拼接&#xff08;危险&#xff01;&#xff09; String sql "SELECT * FROM products WHERE name "…

SQL Server从安装到入门一文掌握应用能力。

本篇文章主要讲解,SQL Server的安装教程及入门使用的基础知识,通过本篇文章你可以快速掌握SQL Server的建库、建表、增加、查询、删除、修改等基本数据库操作能力。 作者:任聪聪 日期:2025年3月31日 一、SQL Server 介绍: SQL Server 是微软旗下的一款主流且优质的数据库…

力扣HOT100之矩阵:54. 螺旋矩阵

这道题之前在代码随想录里刷过类似的&#xff0c;还有印象&#xff0c;我就按照当初代码随想录的思路做了一下&#xff0c;结果怎么都做不对&#xff0c;因为按照代码随想录的边界条件设置&#xff0c;当行数和列数都为奇数时&#xff0c;最后一个元素无法被添加到数组中&#…