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

相关推荐
Cat_Rocky1 小时前
K8s-金丝雀发布 简单实验
云原生·容器·kubernetes
m0_737539371 小时前
kuberntes Config
云原生·容器·kubernetes
DO_Community2 小时前
AI 成本太高怎么办?用推理路由自动分配 Claude、Qwen、DeepSeek
云原生·serverless·aigc·claude·deepseek
程序员老舅2 小时前
Linux:谁把根目录卸载了?
linux·c++·容器·linux内核·文件系统·根目录
cnskylee2 小时前
【Kubernetes】使用kubeadm安装三节点K8s集群遇到的问题总结
云原生·容器·kubernetes
容器魔方2 小时前
Kthena Router ScorePlugin 架构与基准测试分析
人工智能·云原生·容器·架构·开源
眷蓝天3 小时前
Kubernetes Helm 包管理详解
云原生·容器·kubernetes
吴声子夜歌3 小时前
Java——通用容器类
java·容器
叶~小兮3 小时前
K8S优先级、Pod驱逐、HPA扩缩容 学习笔记
笔记·学习·kubernetes