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