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

【一起来学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: mysqlversion: 8.0.0repository: 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怎么用


在这里插入图片描述

相关文章:

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

一、Helm 简介 Helm 是 Kubernetes 的包管理工具,类比 Linux 中的 yum 或 apt,用于简化应用的打包、部署和版本管理。其核心功能包括: Chart 管理:将 Kubernetes 资源(Deployment、Service 等)打包为可复…...

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

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

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

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

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

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

Spring 核心技术解析【纯干货版】- XV:Spring 网络模块 Spring-Web 模块精讲

Spring Framework 作为 Java 生态中最流行的企业级开发框架,提供了丰富的模块化支持。其中,Spring Web 模块是支撑 Web 开发的基础组件,无论是传统的 MVC 应用,还是 REST API 及微服务架构,都离不开它的核心能力。 本篇…...

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

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

MD编辑器中的段落缩进怎么操作

在 Markdown(MD)编辑器中,段落的缩进通常可以通过 HTML 空格符、Markdown 列表缩进、代码块缩进等方式 实现。以下是几种常见的段落缩进方法: 1. 使用全角空格 ( ) 在一些 Markdown 编辑器(如 Typora)中&…...

Oracle OCP知识点详解2:管理用户密码期限

一、Oracle密码期限管理机制 Oracle数据库通过**概要文件(Profile)**来管理用户的密码策略。默认情况下,所有用户都使用名为DEFAULT的概要文件,该文件的密码过期时间通常设置为180天。这种机制旨在强制用户定期更改密码&#xff…...

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

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

系统调用与中断

中断与系统调用 中断(Interrupt)和系统调用(Syscall)是操作系统中两个关键机制,分别用于处理硬件事件和用户程序与内核的交互。它们虽然都涉及从用户模式到内核模式的切换,但设计目的和触发方式不同。以下…...

数据结构和算法——汉诺塔问题

前言 先讲个故事,传说古代印度有三根黄金柱,64个石盘,需要将石盘从第一根移动到第三根上,规定每次只能移动一片,并且小盘在放置时必须在大盘上。 当石盘移动完毕时,世界就会毁灭。 汉诺塔——递归 接下来…...

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

文章目录 单位和全局可用变量(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在过去几…...

Kafka简要介绍与快速入门示例

1、什么是Kafka? Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。 Kafka是一个分布式消息队列。Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer&…...

线程池自顶向下

在一些场景下,线程会被频繁创建和销毁,但他们却始终在完成相似的任务 这个场景下我们回去引入一个线程池的概念 可以简单总结为: 任务提交 → 核心线程执行 → 任务队列缓存 → 非核心线程执行 → 拒绝策略处理。 话不多说先看一个简单的…...

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

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

Springboot 中使用 List<Integer> 与 JSONArray 处理 JSON 数组的性能与实践

深入对比&#xff1a;Springboot 中使用 List 与 JSONArray 处理 JSON 数组的性能与实践 引言 在现代 Web 开发中&#xff0c;处理 JSON 格式的数据是常见需求。当面对 POST 请求中的 JSON 数组时&#xff0c;开发者常需在 List<Integer> 和 JSONArray 两种方案间抉择。…...

容器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;文章还讨论了数据集大小的标准、机器学习训练数据量的…...

html处理Base文件流

处理步骤 从服务返回的字符串中提取文件流数据&#xff0c;可能是Base64或二进制。将数据转换为Blob对象。创建对象URL。创建<a>元素&#xff0c;设置href和download属性。触发点击事件以下载文件。删除缓存数据 代码 // 假设这是从服务返回的Base64字符串&#xff08…...

力扣每日一题:2712——使所有字符相等的最小成本

使所有字符相等的最小成本 题目示例示例1示例2 题解这些话乍一看可能看不懂&#xff0c;但是多读两遍就明白了。很神奇的解法&#xff0c;像魔术一样。 题目 给你一个下标从 0 开始、长度为 n 的二进制字符串 s &#xff0c;你可以对其执行两种操作&#xff1a; 选中一个下标…...

在MFC中使用Qt(六):深入了解QMfcApp

前言 此前系列文章回顾&#xff1a; 在MFC中使用Qt&#xff08;一&#xff09;&#xff1a;玩腻了MFC&#xff0c;试试在MFC中使用Qt&#xff01;&#xff08;手动配置编译Qt&#xff09; 在MFC中使用Qt&#xff08;二&#xff09;&#xff1a;实现Qt文件的自动编译流程 在M…...

JMeter进行分布式压测

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

Python实现音频数字水印方法

数字水印技术可以将隐藏信息嵌入到音频文件中而不明显影响音频质量。下面我将介绍几种在Python中实现音频数字水印的方法。 方法一&#xff1a;LSB (最低有效位) 水印 import numpy as np from scipy.io import wavfile def embed_watermark_lsb(audio_path, watermark, ou…...

快速入手-基于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;用户无需提交身份信…...