一、Helm 是什么?
-
Helm 是 Kubernetes 的"软件管家",就像 Ubuntu 的 apt、CentOS 的 yum 一样。
-
你不需要手动写一堆 Kubernetes 的 YAML 配置文件(比如 deployment.yaml、service.yaml),Helm 帮你把这些文件打包成一个安装包(Chart),然后一条命令就能装好整个应用。
二、核心概念(用人话解释)
| 概念 | 大白话解释 |
|---|---|
| Chart | 一个应用的"安装包",里面包含了运行这个应用所需的所有 K8s 配置模板。 |
| Repository | 存放 Chart 的"软件仓库",可以远程下载别人做好的 Chart。 |
| Release | 当你把 Chart 装到 K8s 集群里,就会产生一个"运行实例",叫 Release。你可以对一个应用装多次,得到多个 Release。 |
三、Helm 能解决什么问题?
-
不用手写 YAML:你只需改改配置文件(values.yaml)里的参数(比如副本数、镜像版本),Helm 自动生成完整的 K8s 资源文件并部署。
-
方便复用和分享:一个 Chart 可以在不同环境(开发、测试、生产)重复使用,也能上传到仓库分享给别人。
-
版本控制和回滚:每次安装/升级都会记录版本,出了问题可以一键回滚到之前的版本。
-
统一管理:多个相关服务(比如 nginx + mysql)可以打成一个 Chart,一起安装、升级。
四、怎么安装和使用(简化步骤)
-
安装 helm 命令 :下载二进制放到
/usr/local/bin,加个自动补全。 -
添加仓库 :
helm repo add 仓库名 仓库地址,比如添加阿里云的仓库。 -
搜索 Chart :
helm search repo nginx查找 nginx 的安装包。 -
下载 Chart :
helm pull 仓库名/nginx --version 版本号,解压后可以看到目录结构。 -
修改配置 :编辑
values.yaml,比如把副本数从 1 改成 3。 -
安装应用 :
helm install 起个名字 .(点表示当前目录的 Chart)。 -
升级 :改完 values.yaml 后执行
helm upgrade 名字 .。 -
回滚 :
helm rollback 名字 版本号。 -
卸载 :
helm uninstall 名字。
五、Chart 目录长啥样(瞥一眼)
text
my-chart/
├── Chart.yaml # 这个 Chart 的说明(名字、版本等)
├── values.yaml # 你填的配置参数(比如副本数、镜像地址)
├── templates/ # 一堆 K8s YAML 模板文件(里面用了 values 里的变量)
└── charts/ # 依赖的其他 Chart(比如子 chart)
你主要改 values.yaml,模板文件一般不用动。
六、举个栗子:部署 nginx
-
从 bitnami 仓库拉取 nginx 的 Chart,解压。
-
在
values.yaml里把 service 类型改成 ClusterIP(集群内访问)。 -
执行
helm install nginx-server .,一条命令就部署好了 Pod 和 Service。 -
之后想看历史版本:
helm history nginx-server,想回滚:helm rollback nginx-server 1。
总结一句话:
Helm 把 K8s 应用的部署变成"填参数 + 一条命令",还能轻松升级、回滚、分享。 不用再手写几十行 YAML 了,真香。
一、蓝绿发布:两套房子,一键搬家
核心想法 :
准备两套一模一样的环境:蓝房子 (老版本)住着所有用户,绿房子(新版本)先空着装修好。等绿房子收拾妥当了,把用户一次性全领过去。如果新房子有问题,一秒就能搬回老房子。
就像 :
你租了两套房,一套住着人(蓝),另一套空着(绿)。你想换到绿房,先把它布置得跟蓝房一模一样,确认没问题了,直接让所有人搬进去。万一绿房漏水,立马全部搬回蓝房。
优点:
-
切换超快(改个开关就行)
-
回滚也超快(再改回来)
-
零停机
缺点:
-
两套环境,资源浪费(需要双倍的机器)
-
没法先让一小部分人试一下
适合 :
对稳定性要求极高、不差资源、要一键切换的场景。
二、金丝雀发布:先放几只"小白鼠"试试
核心想法 :
新版本先只给一小部分用户(比如5%)用,看看反应。没问题就慢慢扩大比例,直到所有人都用新版。一旦出问题,马上把这一小部分人的流量切回去。
就像 :
饭店换新菜单,先让几桌熟客尝尝,没拉肚子再逐步推广到所有客人。要是客人投诉,赶紧把那几桌的菜换回老菜单。
优点:
-
风险小,有缓冲
-
资源省,新旧版本一起跑,不用双倍机器
-
可以收集真实用户反馈
缺点:
-
流量控制比蓝绿复杂
-
回滚不是一键,要慢慢调回去
适合 :
想谨慎验证新版本、逐步放量、随时能踩刹车的场景。
三、一句话区别
-
蓝绿发布:一次性全换,要么全蓝要么全绿,像换房子。
-
金丝雀发布:一点点试水,慢慢放大,像尝菜。
打个比方:
-
蓝绿:原来住5楼,直接搬到6楼。
-
金丝雀:先搬一个箱子到6楼,没问题再搬一个,最后人再上去。