deployment实现蓝绿部署案例
蓝绿部署中,一共有两套系统:一套是正在提供服务系统(也就是上面说的旧版),标记为“绿色”;另一套是准备发布的系统,标记为“蓝色”。两套系统都是功能完善的,并且正在运行的系统,只是系统版本和对外服务情况不同。正在对外提供服务的老系统是绿色系统,新部署的系统是蓝色系统。
蓝绿部署(Blue/Green)部署简介:
蓝绿部署特点:
不需要停止老版本代码(不影响上一版本访问),而是在另外一套环境部署新版本然后进行测试。
测试通过后将用户流量切换到新版本,其特点为业务无中断,升级风险相对较小。
- 实现机制:
- 1.部署当前版本
- 2.部署service
- 3.部署新版本(使用新的deployment名称,新的label标签)
- 4.切换service标签到新的pod
deployment实现蓝绿部署案例:
(1) 部署蓝环境
cat 01-blue.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
name: baimei-blue
spec:
replicas: 3
selector:
matchLabels:
app: blue
template:
metadata:
labels:
app: blue
spec:
containers:
- name: v1
image: harbor.baimei.com/baimei-apps/apps:v1
---
kind: Service
apiVersion: v1
metadata:
name: baimei-app-svc
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 30080
selector:
app: blue
kubectl apply -f 01-blue.yaml
(2)测试访问
while true ; do sleep 0.5;curl 10.0.0.233:30080; done
(3)部署绿环境
cat 02-green.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
name: baimei-green
spec:
replicas: 3
selector:
matchLabels:
app: green
template:
metadata:
labels:
app: green
spec:
containers:
- name: myweb
image: harbor.baimei.com/baimei-apps/apps:v2
kubectl apply -f 02-green.yaml
(4)切换svc的标签,如下所示:
cat 03-switch-svc-selector.yaml
kind: Service
apiVersion: v1
metadata:
name: baimei-app-svc
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 30080
selector:
# app: blue
app: green
kubectl apply -f 03-switch-svc-selector.yaml
欢迎来撩 : 汇总all