51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

使用 K8S deployment实现蓝绿部署案例

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 
赞(0)
未经允许不得转载:工具盒子 » 使用 K8S deployment实现蓝绿部署案例