【k8s】金丝雀发布(canary )

@


写在前面

  • 相关博文
  • 个人博客首页
  • 免责声明:仅供学习交流使用!开源框架可能存在的风险和相关后果将完全由用户自行承担,本人不承担任何法律责任。

金丝雀发布

v1

apiVersion: v1
kind: Namespace
metadata:
  name: dev

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment-v1
  namespace: dev
  labels:
    app: nginx-deployment-v1
spec:
  replicas: 3
  namespace: dev
  selector:
    matchLabels: # 跟template.metadata.labels一致
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.22
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: canary-demo
  namespace: dev
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
      # By default and for convenience, the `targetPort` is set to the same value as the `port` field.
    - port: 80
      targetPort: 80
      # Optional field
      # By default and for convenience, the Kubernetes control plane will allocate a port from a range (default: 30000-32767)
      nodePort: 30001

v2

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment-v2
  namespace: dev
  labels:
    app: nginx-deployment-v2
spec:
  replicas: 1
  selector:
    matchLabels: # 跟template.metadata.labels一致
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: docker/getting-started
        ports:
        - containerPort: 80

使用说明

kubectl apply -f v1.yml
kubectl apply -f v2.yml
# v2 测试完成后,批量启动 v2, 删除v1
kubectl sanle --replicas 3 -f v1.yml -n dev
kubectl delete deploy/nginx-deployment-v1  -n dev


参考资料


posted @ 2023-11-21 11:07  Nones  阅读(70)  评论(0编辑  收藏  举报