k8s实现蓝绿部署

416 阅读1分钟

简介

通过service的selector选择不同版本的pod

v1 Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-deployment-v1
spec:
  selector:
    matchLabels:
      app: demo
      version: v1
  replicas: 2
  template:
    metadata:
      labels:
        app: demo
        version: v1
    spec: 
      containers:
      - name: demo
        image: yourimage:v1
        ports:
        - containerPort: 80

v2 Deployment


apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-deployment-v2
spec:
  selector:
    matchLabels:
      app: demo
      version: v2
  replicas: 2
  template:
    metadata:
      labels:
        app: demo
        version: v2
    spec: 
      containers:
      - name: demo
        image: yourimage:v2
        ports:
        - containerPort: 80

v1对应Service

apiVersion: v1
kind: Service
metadata:
  name: demo-service
spec:
  selector:
    app: demo
    version: v1                             
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP

v2对应Service

apiVersion: v1
kind: Service
metadata:
  name: demo-service
spec:
  selector:
    app: demo
    version: v2                            
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP