K8s Helm 和蓝绿发布,金丝雀发布

一、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,一起安装、升级。


四、怎么安装和使用(简化步骤)

  1. 安装 helm 命令 :下载二进制放到 /usr/local/bin,加个自动补全。

  2. 添加仓库helm repo add 仓库名 仓库地址,比如添加阿里云的仓库。

  3. 搜索 Charthelm search repo nginx 查找 nginx 的安装包。

  4. 下载 Charthelm pull 仓库名/nginx --version 版本号,解压后可以看到目录结构。

  5. 修改配置 :编辑 values.yaml,比如把副本数从 1 改成 3。

  6. 安装应用helm install 起个名字 .(点表示当前目录的 Chart)。

  7. 升级 :改完 values.yaml 后执行 helm upgrade 名字 .

  8. 回滚helm rollback 名字 版本号

  9. 卸载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楼,没问题再搬一个,最后人再上去。

相关推荐
BullSmall4 小时前
第三方软件安全-Dependency‑Track Docker 部署
安全·docker·容器
harmony&5 小时前
Docker 容器技术从入门到实战:容器、网络、存储与监控全解析
docker·云原生
分布式存储与RustFS6 小时前
RustFS 生命周期与分层:让冷数据自动搬家、热数据自己回家
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准
IT大白鼠8 小时前
Docker 私有仓库管理:Harbor 企业级仓库搭建与镜像全生命周期管理
运维·docker·容器
阿里云云原生9 小时前
从 Inform 到 Operate:构建可持续运行的云成本巡检机制与 Mission 调度
云原生
bgy666610 小时前
从零上手 Docker,容器技术完整入门指南
运维·docker·容器
pride.li15 小时前
Docker教程-Docker安装与镜像配置
运维·docker·容器
bgy666615 小时前
Docker Swarm 容器编排实战指南
运维·docker·容器
再卷还是菜16 小时前
Cephfs总结及kubernetes+Cephfs的整合项目
云原生·容器·kubernetes